让我们说我有一个名为X.Droid的Xamarin Android项目的解决方案,其中包含以下项目:
- Core.PCL
build configurations: Debug, Release, XRelease
- AndroidLibrary (references Core.PCL )
build configurations: Debug, Release
- X.PCL (references Core.PCL )
build configurations: Debug, Release
- X.Droid (references X.PCL and AndroidLibrary)
build configurations: Debug, Release, Test, Prod
平台=' AnyCPU'如果为每个配置设置(没有空格,不是'任何CPU')
我已经设置了一个解决方案配置X.Test来进行这些项目配置:
- XRelease for Core.PCL (Build)
- Release for AndroidLibrary (Build)
- Release for X.PCL (Build)
- Test for X.Droid (Build, Deploy)
再次平台=' AnyCPU' (没有空格)
当我直接使用Visual Studio 2015或msbuild时,此配置正在构建:
MSBuild.exe X.sln /p:Configuration=X.Test;Platform=AnyCPU
构建X.Droid项目的输出文件夹(bin \ Test)后,只包含* .dll,* .mdb,* .pdb和* .xml文件。
现在我想要从此输出生成一个.apk文件。根据{{3}}目标' SignAndroidPackage' "创建并签署包(.apk)"但是当我跑步时
MSBuild.exe X.Droid.csproj /p:Configuration=Test /t:SignAndroidPackage
我收到以下输出:
Project" C:... \ X.Droid.csproj"在节点1上(SignAndroidPackage 目标(一个或多个))。
Properties \ AndroidManifest.xml:警告XA0101:@(内容)构建 不支持动作[C:... \ X.Droid.csproj]
Project" C:... \ X.Droid.csproj" (1)正在建设中 " C:... \ Core.PCL.csproj" (2)在节点1上(默认目标)。
C:\ Program Files (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目设置OutputPath属性 ' Core.PCL.csproj&#39 ;.请检查以确保您已指定 此项目的配置和平台的有效组合。 配置='测试'平台=' AnyCPU&#39 ;.你可能会看到这个 消息,因为您正在尝试在没有解决方案的情况下构建项目 文件,并指定了非默认配置或平台 这个项目不存在。 [C:... \ Core.PCL.csproj]
完成建筑项目" C:... \ Core.PCL.csproj" (默认目标) - 失败。
Project" C:... \ X.Droid.csproj" (1)正在建设" C:... \ X.PCL.csproj" (4)在节点1上(默认目标)。
C:\ Program Files (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目' X.PCL.csproj'设置OutputPath属性。 请检查以确保您指定了有效组合 该项目的配置和平台。配置='测试' 平台=' AnyCPU&#39 ;.您可能会看到此消息,因为您是 尝试在没有解决方案文件的情况下构建项目,并指定了 一个非默认的配置或平台,不存在 项目。 [C:... \ X.PCL.csproj]
完成建筑项目" C:... \ X.PCL.csproj" (默认目标) - 失败。
Project" C:... \ X.Droid.csproj" (1)正在建设中 " C:... \ AndroidLibrary.csproj" (5)在节点1上(默认目标)。
C:\ Program Files (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目设置OutputPath属性 ' AndroidLibrary.csproj&#39 ;.请检查以确保您拥有 为此指定了Configuration和Platform的有效组合 项目。配置='测试'平台=' AnyCPU&#39 ;.你可能会看到 这条消息是因为你试图建立一个没有的项目 解决方案文件,并指定了非默认配置或 该项目不存在的平台。 [C:... \ AndroidLibrary.csproj]
完成建筑项目" C:... \ AndroidLibrary.csproj" (默认目标) - 失败。
完成建筑项目" C:... \ X.Droid.csproj" (SignAndroidPackage target(s)) - FAILED。
构建失败。
" C:... \ X.Droid.csproj" (SignAndroidPackage target)(1) - > (_CheckForContent target) - > Properties \ AndroidManifest.xml: 警告XA0101:不支持@(内容)构建操作 [C:... \ X.Droid.csproj]
" C:... \ X.Droid.csproj" (SignAndroidPackage target)(1) - > " C:... \ Core.PCL.csproj" (默认目标)(2) - > (_CheckForInvalidConfigurationAndPlatform target) - > C:\ PROGRAM 档 (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目设置OutputPath属性 ' Core.PCL.csproj&#39 ;.请检查以确保您已指定 此项目的配置和平台的有效组合。 配置='测试'平台=' AnyCPU&#39 ;.你可能会看到这个 消息,因为您正在尝试在没有解决方案的情况下构建项目 文件,并指定了非默认配置或平台 这个项目不存在。 [C:... \ Core.PCL.csproj]
" C:... \ X.Droid.csproj" (SignAndroidPackage target)(1) - > " C:... \ X.PCL.csproj" (默认目标)(4) - > C:\ Program Files (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目' X.PCL.csproj'设置OutputPath属性。 请检查以确保您指定了有效组合 该项目的配置和平台。配置='测试' 平台=' AnyCPU&#39 ;.您可能会看到此消息,因为您是 尝试在没有解决方案文件的情况下构建项目,并指定了 一个非默认的配置或平台,不存在 项目。 [C:... \ X.PCL.csproj]
" C:... \ X.Droid.csproj" (SignAndroidPackage target)(1) - > " C:... \ AndroidLibrary.csproj" (默认目标)(5) - > C:\ PROGRAM 档 (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(723,5): 错误:未为项目设置OutputPath属性 ' AndroidLibrary.csproj&#39 ;.请检查以确保您拥有 为此指定了Configuration和Platform的有效组合 项目。配置='测试'平台=' AnyCPU&#39 ;.你可能会看到 这条消息是因为你试图建立一个没有的项目 解决方案文件,并指定了非默认配置或 该项目不存在的平台。 [C:\Ú... \ AndroidLibrary.csproj]
1 Warning(s) 4 Error(s)
时间流逝00:00:00.83
此输出表示目标' SignAndroidPackage'实际上构建Android项目againg并尝试使用相同的构建配置构建它依赖的每个项目。在我的案例中显然无法找到。
我知道解决问题的一种方法是宣布“测试”。 X.Droid所依赖的每个项目的配置。但我想找到更好的解决方案。
我有什么方法可以制作' SignAndroidPackage'使用以前通过构建委托X.sln生成的输出?或者明确告诉它所有参与项目的配置名称?或者我可以告诉它解决方案文件,以便在那里找到它们吗?
或者我的目的还有另一个目标吗?