在iOS应用程序上使用xbuild不会生成ipa

时间:2016-12-21 13:21:46

标签: ios xamarin xamarin.forms

我们已经与Jenkins实施持续集成,以帮助执行构建以加快部署速度。我们已经审核了Xamarin website提供的文档,并且遇到了问题。在演练中,它描述了如何使用各种插件来执行该过程,我们使用构建脚本来执行构建,因为我们有一些在构建之后执行的后期操作,例如将ipa提交到TestFlight。问题是,对于iOS,我们需要在从终端/命令行构建时使用xbuild而不是mdtool documented

我们遵循此portion of the guide在构建脚本中构建我们的xbuild。似乎xbuild命令工作并创建项目引用dll甚至生成exe,但即使我们在xbuild上设置此/p:BuildIpa=true以确保ipa生成,也不会生成ipa文件。我们还为内部生成的ipa提供了一个位置,以确保我们不会遗漏使用此/p:IpaPackageDir=$BUILD_PATH的文件。这是我们当前使用的整个xbuild命令,是否存在错误或缺少的内容?

/Library/Frameworks/Mono.framework/Commands/xbuild $PROJECT_FILE / t:Build /p:BuildIpa=true /p:IpaPackageDir=$BUILD_PATH /p:Configuration=”Release” /p:Platform=”iPhone” /p:OutputPath=$BUILD_PATH

$BUILD_PATH) - 构建路径只是“%WORKSPACE%\ bin \ iPhone \ Release \”

我确实找到this resource,其中声明xbuild要求iOS的解决方案文件正确构建,这是正确的吗?

如果这是正确的,我们如何解决这些错误,因为我无法找到任何文档来解释如何正确定义xbuild部署的解决方案和项目文件,甚至如何在构建期间排除特定项目:

/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.Forms.UWP/Mobile3.Forms.UWP.csproj:  warning : Could not find project file /Library/Frameworks/Mono.framework/External/xbuild/Microsoft/WindowsXaml/v14.0/Microsoft.Windows.UI.Xaml.CSharp.targets, to import. Ignoring.
/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.ServicePro.UWP/Mobile3.ServicePro.UWP.csproj:  warning : Could not find project file /Library/Frameworks/Mono.framework/External/xbuild/Microsoft/WindowsXaml/v14.0/Microsoft.Windows.UI.Xaml.CSharp.targets, to import. Ignoring.
Project "/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.sln" (Mobile3.ServicePro.iOS target(s)):
        Target ValidateSolutionConfiguration:
/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.sln: error : Invalid solution configuration and platform: "“Release”|“iPhone”".
        Task "Error" execution -- FAILED
        Done building target "ValidateSolutionConfiguration" in project "/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.sln".-- FAILED
Done building project "/Users/developer/.jenkins/workspace/Mobile3_Branch_3.20/ServicePro/iOS/Mobile3.sln".-- FAILED

以下是我们用于构建解决方案的xbuild命令:

/Library/Frameworks/Mono.framework/Commands/xbuild /p:Configuration=”Release” /p:Platform=”iPhone” /p:OutputPath=$BUILD_PATH /p:BuildIpa=true /p:IpaPackageDir=$BUILD_PATH /t:Build $SOLUTION_FILE

我们不关心在构建iOS项目时构建UWP项目,因为我们有一个单独的构建脚本可以正确生成appxbundle文件。

1 个答案:

答案 0 :(得分:1)

您可以通过设置SolutionDir并构建.csproj来构建“单个项目/应用”,所有引用的项目都将构建并创建.ipa,例如:< / p>

xbuild 
  /p:SolutionDir="./src" 
  /p:OutputPath="$PWD/artifacts/" 
  /p:IpaPackageDir="$PWD/artifacts/" 
  /p:Configuration=Release 
  /p:Platform=iPhone 
  /target:Build 
  src/iOS/XamarinForms.iOS.csproj

注意:这假设您的配置文件是在此Mac上设置的。