TeamCity部署.NET MAUI桌面应用遇MSB4066错误求助
解决MSB4066: 中"Version"属性不被识别的问题
问题根源
你遇到的核心问题是MSBuild 4.0版本过低,它属于.NET Framework时代的旧版本,完全不支持.NET 7(以及.NET Core/.NET 5+)项目中<PackageReference Version="..." />的语法——这个语法是从MSBuild 15.0(对应.NET Core 1.0)开始引入的,而.NET MAUI依赖的.NET 7需要至少MSBuild 17.x版本。
具体解决方案
1. 确认构建代理安装了.NET 7 SDK
TeamCity的构建代理必须安装.NET 7 SDK,并且要确保构建配置能正确找到它:
- 在TeamCity构建配置的"构建步骤"中,选择使用
dotnet命令(而不是旧版MSBuild)执行还原、构建操作 - 如果必须指定MSBuild路径,要指向.NET 7 SDK自带的MSBuild,路径类似:
C:\Program Files\dotnet\sdk\7.0.xxx\MSBuild.dll(Windows)或/usr/share/dotnet/sdk/7.0.xxx/MSBuild.dll(Linux/macOS)
2. 替换NuGet安装器步骤为dotnet restore
放弃使用TeamCity的"NuGet安装器"步骤,直接添加一个"命令行"构建步骤,执行:
dotnet restore YourProject.sln
.NET 7项目推荐用dotnet CLI处理包还原,它会自动匹配正确的MSBuild版本和NuGet配置,避免旧版工具的兼容性问题。
3. 检查TeamCity构建代理的环境配置
- 确保构建代理的环境变量中
DOTNET_ROOT指向.NET 7 SDK的安装目录 - 在TeamCity的"构建参数"里添加
DOTNET_SDK_VERSION=7.0.xxx(指定具体的.NET 7 SDK版本),强制构建使用该版本
为什么之前的尝试没解决问题
- 添加包源:只是解决包的下载来源,不涉及MSBuild对语法的支持
- 更换MSBuild版本:你可能没切换到.NET 7对应的MSBuild,还是用了.NET Framework的旧版本
- NuGet update命令:仅用于更新包版本,无法解决MSBuild不识别属性的底层兼容性问题
内容的提问来源于stack exchange,提问作者the_yaz2000
相关产品推荐
相关产品推荐

