【问题标题】:Use xbuild to build just one project from a multi-project solution使用 xbuild 从多项目解决方案中仅构建一个项目
【发布时间】:2017-06-28 08:53:53
【问题描述】:

首先,我是整个 Xamarin 生命周期、构建工具和术语的完整初学者,如果这在某些措辞中非常基本/不正确,非常抱歉。

我们有一个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

我目前正在尝试在命令行上使用xbuild 构建只是iOS 项目。我的问题是是否有办法在xbuild 标志上指定它;例如尝试使用/t:Example.ios:Build 和类似的东西,但没有运气。所以我只是尝试解绑 Android 项目并运行:

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

我猜,由于.sln 上的 Droid 项目仍然在 iOS 之前,因此在寻找 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 行),但这对我来说并不是最理想的,即也许在其他一些 CI 工作中我只想构建 Android应用等

谢谢!

【问题讨论】:

    标签: xamarin xbuild


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我建议您从 Xamarin iOS 项目的文件夹中执行 xbuild 命令,或者为您的命令指定一个目标,如下所示:

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

      xbuild 采用要构建的项目或解决方案文件的路径,作为 主要论点。如果没有指定文件,那么它会尝试构建任何 当前目录中的解决方案文件或项目文件,具有 *项目扩展。

      如果您需要强制使用 SDK 或特定的构建工具路径,您必须指定:

      /p:AndroidSdkDirectory=$YOUR_SDK_PATH
      /p:AndroidSdkBuildToolsVersion=23.x.x

      xbuild command reference

      【讨论】:

        猜你喜欢
        • 2011-07-30
        • 2021-05-25
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多