SDK项目FileVersion配置正确但未写入输出文件问题求助
SDK风格项目程序集版本不写入输出文件排查方案
- 首先检查自动生成程序集属性开关是否开启
SDK风格项目默认会自动从PROJ配置生成AssemblyInfo内容,旧项目迁移时常会手动关闭该开关避免和原有AssemblyInfo冲突,删除原有AssemblyInfo后需要恢复配置:
打开PROJ文件,查找<GenerateAssemblyInfo>节点,如果值为false,修改为true或者直接删除该节点(默认值即为true)。 - 确认版本配置项名称正确
包版本和程序集版本是两套独立配置,你在Package选项卡看到的是<Version>/<PackageVersion>的取值,不会自动同步到程序集属性,需要显式配置对应程序集属性节点:<!-- 程序集版本,对应属性页「程序集版本」 --> <AssemblyVersion>1.2.3.0</AssemblyVersion> <!-- 文件版本,对应属性页「文件版本」 --> <FileVersion>1.2.3.0</FileVersion> <!-- 产品版本,对应属性页「产品版本」 --> <InformationalVersion>1.2.3</InformationalVersion> <!-- 如果要和包版本同步可以直接引用变量 --> <AssemblyVersion>$(Version)</AssemblyVersion> - 排查是否有单独的属性生成禁用配置
部分项目会单独禁用某类程序集属性的生成,查找PROJ或导入的.props/.targets文件中是否有如下配置,存在的话删除或者修改值为true:<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute> <GenerateFileVersionAttribute>false</GenerateFileVersionAttribute> <GenerateInformationalVersionAttribute>false</GenerateInformationalVersionAttribute> - 清理缓存后重新构建
删除项目根目录下的bin、obj文件夹,再执行重新构建,避免旧构建缓存导致配置不生效。 - 验证结果
构建完成后右键输出的EXE/DLL文件,选择「属性」-「详细信息」即可查看写入的版本信息。
内容的提问来源于stack exchange,提问作者James LeVieux
相关产品推荐
相关产品推荐

