4

我有一个带有 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 和构建脚本的某种问题(大部分是默认的)。我的设置是(最新和最好的):

  1. Mac OS 构建主机
  2. 单核细胞增多症5.4.1
  3. 适用于 Mac 的 Visual Studio7.3.3
  4. Xamarin.iOS11.6.1.3

我的构建主机上的哪个配置可能有误?

4

0 回答 0