我们已经与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文件。
答案 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上设置的。