Warm tip: This article is reproduced from serverfault.com, please click

xamarin-Visual Studio更新(16.8.1)导致CI生成失败

(xamarin - Visual Studio update (16.8.1) lead to CI build failures)

发布于 2020-11-17 13:34:28

我们最近将构建服务器更新为使用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):错误MSB4044:未为``GetMinimumOSVersion''任务提供所需值参数“ SdkVersion”。

更新

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

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

我无法找出是什么设置了MtouchSdkVersion,以及为什么没有设置它。上面引用的部分上方的评论指出:

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

难道是这种统一改变了曾经有用的东西的行为?

Questioner
Bijington
Viewed
0
Bijington 2020-11-19 01:20:24

这当然不是解决问题的永久方法,但Xamarin团队已提供了解决方法。供参考,响应在GitHub上

我们正在调查它,但是运行干净的目标后,构建过程似乎断开了连接,因此,如果你运行Build而不是Rebuild,则不应该面对这一问题。

同时,取消阻止重新构建的一种可能的解决方法是编辑<VS Install path>\MSBuild\Xamarin\iOS\Xamarin.iOS.Windows.After.targets_SayGoodbye条目并将其CleanDependsOn属性组中删除

我可以确认,这使我们的CI构建得以再次运行。

它应该不用说,但是我想明确地说,你应该Xamarin.iOS.Windows.After.targets在执行此操作之前备份文件的副本