我有一个Xamarin.iOS解决方案,带有Xamarin.iOS自定义绑定,我可以在我的Mac OS Visual Studio for Mac上本地构建它,没有任何问题。但是,当我尝试使用F#Fake构建相同的解决方案并在我的Mac OS构建服务器上使用相同版本的工具构建脚本时,我收到以下错误:
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.ObjCBinding.CSharp.targets(58,3):指定的任务可执行位置“/Library/Frameworks/Mono.framework/版本/ 5.4.1 / lib / mono / xbuild / Xamarin / iOS / btouch-native.exe“无效。
我已经检查了ObjCBinding.CSharp.targets
和Xamarin.iOS.ObjCBinding.CSharp.props
,并且可以看到由于某种原因我的Mac OS构建主机被视为非Unix系统:
<BTouchToolPath Condition="'$(OS)' == 'Unix' And '$(TargetFrameworkIdentifier)' == 'Xamarin.iOS' And '$(BTouchToolPath)' == ''">$(MonoTouchSdkRoot)/bin/</BTouchToolPath>
<BTouchToolPath Condition="'$(OS)' != 'Unix' And '$(TargetFrameworkIdentifier)' == 'Xamarin.iOS' And '$(BTouchToolPath)' == ''">$(MSBuildExtensionsPath)\Xamarin\iOS\</BTouchToolPath>
<BTouchToolExe Condition="'$(OS)' == 'Unix' And '$(TargetFrameworkIdentifier)' == 'Xamarin.iOS' And '$(BTouchToolExe)' == ''">btouch-native</BTouchToolExe>
<BTouchToolExe Condition="'$(OS)' != 'Unix' And '$(TargetFrameworkIdentifier)' == 'Xamarin.iOS' And '$(BTouchToolExe)' == ''">btouch-native.exe</BTouchToolExe>
我还搜索了BTouchToolExe
工具并在此处找到了它,用这条路径更新了我的.prop文件(适用于所有平台)并且遇到了很多问题让我觉得我应该找到根本原因而不是试图解决一个症状:
/Library/Frameworks/Xamarin.iOS.framework/Versions/11.6.1.3/bin/btouch-native
我尝试在我的构建主机上使用Visual Studio for Mac构建相同的源代码 - 它完全正常,所以它似乎是我的F#Fake和构建脚本(主要是默认)的某种问题。我的设置是(最新的和最好的):
5.4.1
7.3.3
11.6.1.3
我的构建主机上哪个配置可能出错?