如何使用msbuild命令行创建捆绑包但排除测试项目

时间:2018-11-06 07:35:50

标签: msbuild visual-studio-2017

我有一个使用VS 2017的C#解决方案,其中包含一个应用程序项目和一个测试项目。我可以使用“创建应用程序包”向导为x86和x64创建一个捆绑包。但是,我想使这个过程自动化,这意味着我需要在命令行中使用msbuild来完成相同的工作。

有了herehere的引用,我得到了:

msbuild .\MyProject.sln /p:AppxBundle=Always /p:AppxBundlePlatforms="x86|x64" /p:Configuration=Debug

但是我的测试项目会出错,例如:

MakeAppx:错误:错误信息:错误80080204:文件名为“ Tests.XXXX.Shared.Uwp_1.0.0.0_x86_Debug.appx”的软件包和软件包全名“ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx_1” .0.0.0_x86__xxxxxxxxxxx“在捆绑软件中无效,因为它具有与捆绑软件中其他软件包不同的软件包系列名称。预期的软件包名称为xxxx-Test.xxxxTestApp ....

我的猜测是我不应该对AppxBundle使用“始终”,但是我找不到在线文档,其中提到了如何将此值设置为“如果需要”。我还尝试在测试项目的项目属性中添加“从不”,但是命令行参数似乎覆盖了它。

所以我的问题是:在命令行中使用msbuild创建捆绑包时,如何从解决方案中排除测试项目?

1 个答案:

答案 0 :(得分:1)

  

在命令行中使用msbuild创建捆绑软件时,如何从解决方案中排除测试项目?

要解决此问题,您可以在命令行中使用MSBuild创建捆绑包时直接构建项目文件:

msbuild .\YourProjectFile.csproj /p:AppxBundle=Always /p:AppxBundlePlatforms="x86|x64" /p:Configuration=Debug

或者,您可以打开测试项目文件,并在第一个<PropertyGroup>元素的末尾添加以下属性,以排除要包括的测试项目:

 <PropertyGroup>
    <AppxBundle>Never</AppxBundle>
 </PropertyGroup>

检查this threadthe document以获得更多详细信息。

希望这会有所帮助。