C# .NET 6 WinForms应用出现MSB3174:AssemblyVersion值无效错误
解决.NET 6 WinForms项目卸载版本扩展后仍出现MSB3174(AssemblyVersion值无效)错误
问题分析
试用两款版本管理扩展后卸载,但项目仍报MSB3174错误,核心原因是扩展在项目文件中留下了残留配置,加上.NET Framework升级到.NET SDK项目后的版本配置冲突导致的。从你提供的csproj文件来看,有几个明显的问题点:
- Release配置中残留了扩展添加的版本管理属性
GenerateAssemblyInfo开启的情况下,可能和旧的AssemblyInfo.cs文件冲突- 空的
<Version>标签可能干扰SDK的版本处理逻辑
具体解决步骤
1. 清理csproj中的扩展残留配置
找到Release|AnyCPU对应的PropertyGroup块,删除以下这些扩展添加的冗余属性:
<ShouldCreateLogs>True</ShouldCreateLogs> <AdvancedSettingsExpanded>True</AdvancedSettingsExpanded> <UpdateAssemblyVersion>False</UpdateAssemblyVersion> <UpdateAssemblyFileVersion>False</UpdateAssemblyFileVersion> <UpdateAssemblyInfoVersion>False</UpdateAssemblyInfoVersion> <UpdatePackageVersion>False</UpdatePackageVersion> <AssemblyInfoVersionType>SettingsVersion</AssemblyInfoVersionType> <InheritWinAppVersionFrom>AssemblyVersion</InheritWinAppVersionFrom> <PrimaryVersionType>AssemblyVersionAttribute</PrimaryVersionType>
2. 解决AssemblyInfo冲突问题
你的项目是从.NET Framework升级而来,大概率还保留着Properties/AssemblyInfo.cs文件,而当前csproj中设置了<GenerateAssemblyInfo>True</GenerateAssemblyInfo>——这会导致SDK自动生成版本信息,和手动编写的AssemblyInfo.cs产生冲突。
你可以二选一:
- 把
<GenerateAssemblyInfo>True</GenerateAssemblyInfo>改为False,保留AssemblyInfo.cs并确保其中的AssemblyVersion和FileVersion与csproj一致 - 直接删除
Properties/AssemblyInfo.cs文件,完全依赖csproj中的版本配置(更符合.NET SDK项目的最佳实践)
3. 补全空的Version属性
找到csproj中的空<Version>标签,把它改成和AssemblyVersion一致的值:
<Version>2024.1.3.3</Version>
空的Version属性会干扰SDK对版本信息的统一处理,补全后能避免构建时的异常逻辑。
4. 彻底清理并重建项目
完成以上修改后,执行以下操作确保缓存完全清除:
- 右键项目 → 清理
- 手动删除项目目录下的
bin和obj文件夹 - 重启Visual Studio
- 重新生成项目
额外检查
如果以上操作后仍报错,检查你引用的其他项目(如LabBilling Core、WinFormsLibrary等)是否存在同样的版本配置问题——项目引用的版本冲突也可能触发MSB3174错误。
内容的提问来源于stack exchange,提问作者BradP
相关产品推荐
相关产品推荐

