我们最近将构建服务器更新为使用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项目,同一事物使用了不同的变量名称。在这里,我们尝试统一那些变量
难道是这种统一改变了曾经有用的东西的行为?
这当然不是解决问题的永久方法,但Xamarin团队已提供了解决方法。供参考,响应在GitHub上
我们正在调查它,但是运行干净的目标后,构建过程似乎断开了连接,因此,如果你运行Build而不是Rebuild,则不应该面对这一问题。
同时,取消阻止重新构建的一种可能的解决方法是编辑
<VS Install path>\MSBuild\Xamarin\iOS\Xamarin.iOS.Windows.After.targets
该_SayGoodbye
条目并将其从CleanDependsOn
属性组中删除。
我可以确认,这使我们的CI构建得以再次运行。
Xamarin.iOS.Windows.After.targets
在执行此操作之前备份文件的副本。
由于您有解决此问题的方法,因此建议您标记自己的答案:)
@ PerryQian-MSFT我想你是对的。我不相信一种解决方法确实应该是答案:)