首页 > 解决方案 > Visual Studio 更新 (16.8.1) 导致 CI​​ 构建失败

问题描述

我们最近更新了我们的构建服务器以使用 Visual Studio 16.8.1 和 Xamarin.iOS 14.4.1.3,并且遇到了以前运行的 MSBuild 命令的问题。

作为记录,我们在这里构建了一个 Xamarin Forms 解决方案并以 iOS 为目标。

命令是:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild" MySolution.sln /p:Configuration="AppStore" /p:Platform="iPhone" /p:ServerAddress="" /p:ServerUser=""

我已经尝试搜索它报告的特定错误消息(如下),但是到目前为止我还没有找到任何有用的东西。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\iOS\Xamarin.Shared.targets(230,3): error MSB4044: The "GetMinimumOSVersion" task is not given an value for the required参数“SdkVersion”。

更新

在进一步挖掘后,我相信我已经将错误的根源追溯到这些未设置的行Xamarin.Shared.props

<!-- SdkVersion -->
<_SdkVersion Condition="'$(_PlatformName)' == 'macOS'">$(MacOSXSdkVersion)</_SdkVersion>
<_SdkVersion Condition="'$(_PlatformName)' != 'macOS'">$(MtouchSdkVersion)</_SdkVersion>

我无法找出设置 MtouchSdkVersion 的原因以及为什么没有设置它。来自上面引用部分的评论指出:

有时,我们为 Xamarin.iOS 和 Xamarin.Mac 项目使用不同的变量名称。在这里我们尝试统一这些变量

会不会是这种统一改变了曾经有效的东西的行为?

标签: visual-studioxamarinxamarin.iosmsbuildteamcity

解决方案


这在 Visual Studio 2019 版本 16.8.3 中再次引起了人们的注意。看起来他们已将问题转移到: <VS Install path>\MSBuild\Xamarin\iOS\Xamarin.Messaging.targets 通过删除 _DisconnectAfterClean 目标的第 52 行上的 _SayGoodbye 依赖项,我能够让我的构建再次运行。

<Target Name="_DisconnectAfterClean" Condition="'$(IsRebuild)' != 'true'" DependsOnTargets="" />


推荐阅读