msbuild - 如何使用 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 创建包时如何从解决方案中排除测试项目?
解决方案
在命令行中使用 msbuild 创建包时如何从解决方案中排除测试项目?
要解决此问题,您可以在命令行中使用 MSBuild 创建包时直接构建项目文件:
msbuild .\YourProjectFile.csproj /p:AppxBundle=Always /p:AppxBundlePlatforms="x86|x64" /p:Configuration=Debug
或者,您可以打开测试项目文件并在第一个元素的末尾添加以下属性<PropertyGroup>
以排除要包含的测试项目:
<PropertyGroup>
<AppxBundle>Never</AppxBundle>
</PropertyGroup>
希望这可以帮助。
推荐阅读
- javascript - “StyleSheet”类型上不存在属性“insertRule”和“deleteRule”
- java - 使用 Java 8 进行迭代时从列表对象中删除空间
- python - 带触发器的 Matplotlib 动画
- php - 将命令行 curl 转换为 PHP curl
- node.js - 带有请求正文的节点 js 代理
- javascript - 使用 App 脚本一次比较多列
- c# - 挣扎于最后的输出
- keycloak - 更新 Keyclock 访问令牌
- javascript - JQuery scrollTo 一个元素只工作一次
- webpack-4 - Webpack:无法加载以“.”开头的文件。有没有办法将像“.gitignore”这样的文件加载到模块中?