2017-06-28 71 views
0

首先,我是一个完整的初学者,在整个Xamarin生命周期中,构建工具和术语,所以对不起,如果这是非常基本/不正确的一些措辞。使用xbuild从多项目解决方案构建一个项目

我们有一个Example.sln文件,其中包含以下项目定义;一个用于Android系统和一个用于iOS系统:

Project("{...}") = "Example", "Example\Example\Example.csproj", "{...}" 
EndProject 
Project("{...}") = "Example.Droid", "Example\Example.Droid\Example.Droid.csproj", "{...}" 
EndProject 
Project("{...}") = "Example.iOS", "Example\Example.iOS\Example.iOS.csproj", "{...}" 
EndProject 

我目前正在试图建立只是iOS的项目xbuild在命令行上。我的问题是,如果有一种方法可以在xbuild标志上指定它;例如尝试与/t:Example.ios:Build和东西都没有运气。所以,我只是试图分拆Android项目并运行:

$ xbuild /p:Configuration="Ad-Hoc" \ 
/p:Platform="iPhone" \ 
/p:IpaPackageDir="./Builds" \ 
/t:Build Example.sln 

其中,我猜,因为在Droid项目仍然之前 iOS版.sln,失败找了Android SDK时:

/Users/ci/Example-app/Example.sln (Build) -> 
(Build target) -> 
/Users/ci/Example-app/Example/Example.Droid/Example.Droid.csproj (default targets) -> 
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets (_BuildSdkCache target) -> 

    : error XA5205: The Android SDK Directory could not be found. Please set via /p:AndroidSdkDirectory. 

暂时从解决方案中删除Android项目做了诀窍(保留Example\Example.Droid文件但注释掉了2行),但它对我来说并不是最理想的,也许在我想构建Android应用程序的其他CI作业中,等等。

谢谢!

回答

0

我建议你从Xamarin的iOS项目的文件夹执行xbuild命令或指定目标为你的命令是这样的:

xbuild /p:..... iOSProject/app.csproj 

xbuild采取项目或解决方案的路径文件来构建,作为 的主要参数。如果未指定文件,则会尝试在当前目录中构建任何 解决方案文件或项目文件,该文件具有 * proj扩展名。

如果您需要强制你必须指定一个SDK或特定的编译工具的路径:

/P:AndroidSdkDirectory = $ YOUR_SDK_PATH
/p:AndroidSdkBuildToolsVersion=23.xx

xbuild command reference

1

您可以通过Configuration manager (see Solution Configurations section)禁用为您的Platform=iPhone案例构建的Android项目。或者您可以为您的解决方案创建单独的配置/平台组合,只启用常见项目和iOS项目。

一旦你有了,那么你可以在命令行中用xbuild或msbuild在 xbuild /p:Configuration=.. /p:Platform=.. foo.sln上选择该配置和平台组合。

相关问题