x64 build:错误MSB8013:此项目不包含Debug | Win32的Configuration和Platform组合

use*_*216 10 c++ msbuild visual-studio-2010 vcxproj

我正在尝试使用许多解决方案运行复杂构建的纯x64构建(一些用于CI,一些用于开发人员)和数百个项目并且遇到"错误MSB8013:此项目不包含配置和平台组合的调试| Win32"

我把它简化为一个简单的配置:

  • 溶液A含X项目和项目Y.项目X有一个项目引用到项目Y.
  • 解决方案B包含还包含项目X.

没有任何项目或解决方案包含Wi​​n32平台 - 它已被删除.

当我构建解决方案B(作为x64)时,我收到了

错误MSB8013:此项目不包含Debug | Win32的Configuration和Platform组合

错误消息有时包含其他信息:

如果某个其他项目正在尝试遵循项目到项目对此项目的引用,此项目已卸载或未包含在解决方案中,并且引用项目不使用相同或等效项目构建,则也可能出现此错误配置或平台.

问题是参考项目确实 "使用相同或相当的配置或平台建设."

查看msbuild诊断,正在构建项目Y,因为项目X包含对它的项目引用.但是在构建项目Y之前,正在删除配置和平台属性:

1>Task "MSBuild" (TaskId:28)
1>  Removing Properties: (TaskId:28)
1>    Configuration (TaskId:28)
1>    Platform (TaskId:28)
Run Code Online (Sandbox Code Playgroud)

因此,Microsoft.Cpp.Default.props启动并将这些设置为Debug | Win32:

1>Task "Message" (TaskId:11)
1>  Configuration=Debug (TaskId:11)
1>Done executing task "Message". (TaskId:11)
1>Task "Message" (TaskId:12)
1>  Platform=Win32 (TaskId:12)
1>Done executing task "Message". (TaskId:12)
Run Code Online (Sandbox Code Playgroud)

如何防止这种情况并使msbuild通过所选的配置和平台?

(我理解使用NuGet来管理包依赖性的最终解决方案,但这在短期内是不可行的)

Zor*_*ord 5

我可以通过将所有引用的项目包括到解决方案中来解决类似的问题-在这种情况下,将项目Y包括到解决方案B中。


use*_*216 3

一种修复方法是手动编辑 .vcxproj 文件来定义默认平台:

  1. 在文本编辑器中打开 vcxproj 文件
  2. 在“全局”PropertyGroup 中添加此行:

    <平台条件="'$(平台)' == ''">x64</平台>