Visual Studio 2022 v17.8 DLL版本自动追加字符串问题求助
解决Visual Studio 17.8版本字符串自动追加哈希的问题
VS17.8升级后,MSBuild工具链默认开启了基于源代码哈希的版本后缀自动生成功能——哪怕你在项目里设置了<Version>1.0.0</Version>,编译后的DLL版本也会变成1.0.0+xxxxxx,这就是导致单元测试失败的原因。
要禁用这个功能,直接在项目的.csproj文件里添加以下配置即可:
全局禁用(所有目标框架生效)
将以下属性加入项目的<PropertyGroup>节点中:
<VersionSuffix></VersionSuffix> <ContinuousIntegrationBuild>false</ContinuousIntegrationBuild> <Deterministic>true</Deterministic>
如果项目已有<PropertyGroup>,直接把这三个属性追加进去就行。
针对特定框架配置(可选)
若只想给.NET Framework 4.8和.NET 6.0禁用该功能,可使用条件判断:
<PropertyGroup Condition=" '$(TargetFramework)' == 'net48' OR '$(TargetFramework)' == 'net6.0' "> <VersionSuffix></VersionSuffix> <ContinuousIntegrationBuild>false</ContinuousIntegrationBuild> </PropertyGroup>
关键属性说明
VersionSuffix:设为空字符串,直接截断自动生成的哈希后缀ContinuousIntegrationBuild:VS17.8默认会检测环境是否为CI,甚至本地编译也可能误触发该逻辑,设为false可彻底关闭Deterministic:保证每次编译生成的版本信息稳定一致,避免哈希值无规律变化
验证生效情况
重新编译项目后,右键生成的DLL → 属性 → 详细信息,查看「产品版本」和「文件版本」,确认已显示为纯1.0.0、无后缀哈希即可。
内容的提问来源于stack exchange,提问作者Steven Volckaert
相关产品推荐
相关产品推荐

