首页 > 解决方案 > 如何使用 msbuild 命令行创建包但排除测试项目

问题描述

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

这里这里的参考,我得到:

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 创建包时如何从解决方案中排除测试项目?

标签: msbuildvisual-studio-2017

解决方案


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

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

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

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

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

检查此线程文档以获取更多详细信息。

希望这可以帮助。


推荐阅读