我有一个带有 Xamarin.iOS 自定义绑定的 Xamarin.iOS 解决方案,我可以在 Visual Studio for Mac 的 Mac OS 上本地构建它,没有任何问题。但是,当我尝试使用 F# Fake 构建相同的解决方案并在我的 Mac OS 构建服务器上使用相同版本的工具构建脚本时,我收到以下错误:
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.ObjCBinding.CSharp.targets(58,3):指定任务可执行位置“/Library/Frameworks/Mono.framework/Versions/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 和构建脚本的某种问题(大部分是默认的)。我的设置是(最新和最好的):
- Mac OS 构建主机
- 单核细胞增多症
5.4.1
- 适用于 Mac 的 Visual Studio
7.3.3
- Xamarin.iOS
11.6.1.3
我的构建主机上的哪个配置可能有误?