You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:20:06