msbuild 不尊重 .sln 文件设置

Posted

技术标签:

【中文标题】msbuild 不尊重 .sln 文件设置【英文标题】:msbuild does not respect .sln file settings 【发布时间】:2016-08-03 07:16:32 【问题描述】:

在我的 VC++ 2015 项目中,我有两个平台配置,解决方案文件的 Win32 和 x64

MyProject.sln 包含多个可以为平台 Win32 和 x64 构建的项目

我在 x64 的配置管理器中取消选中特定项目构建

例如,MyProject.sln 包含 Project1 和 Project2,只有 Project1 会同时构建平台 Win32 和 x64,Project2 只会为 Win32 构建

msbuild "MyProject.sln" /p:platform=Win32 /p:configuration=Debug /t:rebuild // this work

msbuild "MyProject.sln" /p:platform=x64 /p:configuration=Debug /t:rebuild // this doesn't work

msbuild 也会尝试构建 Project2,但由于找不到依赖库而失败,事实上,我希望它从构建中排除 Project2,但不知何故 msbuild 不尊重 .sln 设置

我在记事本中打开 MyProject.sln 并注意到它显然是 Project2 不包含在 x64 构建中

无论如何在使用 msbuild 时排除 Platform x64 中的 Project2 构建?通过 VS2015 IDE 构建没有问题,因为配置管理器我已从构建中取消选中它。

【问题讨论】:

无法复制。创建新解决方案并添加两个新 c++ 项目时,然后转到配置管理器并禁用 Prohect2 的 x64 构建,msbuild "MyProject.sln" /p:platform=x64 /p:configuration=Debug 输出未选择项目“Project2”以在解决方案配置“Debug|x64”中构建。,正如预期的那样。因此,您在问题中提供的信息不完整,或者您遇到了一个奇怪的 VS 错误。我建议首先从头开始尝试所有内容(新解决方案,新项目) @hghew,我也无法复制。正如 stijn 所说,尝试使用新的解决方案和项目。 当我在 VS IDE 中构建时,只为 x64 重新构建,它会自动构建某些没有任何 x64 配置的 Win32 项目,我最终不得不删除项目依赖,重新构建所有x64/Win32 配置仅在 VS IDE 和 msbuild 中的行为有所不同 @hghew 在 OneDrive 上分享示例项目。 【参考方案1】:

@hghew,喜欢这个case,请添加解决方案平台“Win32”,如下图所示。

【讨论】:

以上是关于msbuild 不尊重 .sln 文件设置的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild 默默地跳过一个项目(在我的 sln 中的许多项目中)

Docs-VisualStudio-MSBuild-MSBuild参考:MSBuild 保留属性和已知属性

MSBuild 在 _CopyOutOfDateSourceItemsToOutputDirectory 期间复制依赖项目文件

SonarScanner for MsBuild 是不是尊重 web.config?

FxCop 不尊重我的排除

使用devenv/MSBuild在命令行编译sln或csproj