C++ x64生成:错误MSB8013:此项目没有';t包含调试| Win32的配置和平台组合
我试图让一个纯x64版本运行在一个复杂的版本中,该版本包含许多解决方案(一些用于CI,一些用于开发人员)和数百个项目,并且遇到了“错误MSB8013:此项目不包含调试| Win32的配置和平台组合” 我将其简化为一个简单的配置:C++ x64生成:错误MSB8013:此项目没有';t包含调试| Win32的配置和平台组合,c++,visual-studio-2010,msbuild,vcxproj,C++,Visual Studio 2010,Msbuild,Vcxproj,我试图让一个纯x64版本运行在一个复杂的版本中,该版本包含许多解决方案(一些用于CI,一些用于开发人员)和数百个项目,并且遇到了“错误MSB8013:此项目不包含调试| Win32的配置和平台组合” 我将其简化为一个简单的配置: 解决方案A包含项目X和项目Y。项目X有一个项目 参考项目Y 解决方案B还包含项目X 所有项目或解决方案都不包含Win32平台-它已被删除 当我构建解决方案B(作为x64)时,我收到 错误MSB8013:此项目不包含配置和 调试| Win32的平台组合 错误消息有时包
- 解决方案A包含项目X和项目Y。项目X有一个项目 参考项目Y
- 解决方案B还包含项目X
1>Task "MSBuild" (TaskId:28)
1> Removing Properties: (TaskId:28)
1> Configuration (TaskId:28)
1> Platform (TaskId:28)
因此,Microsoft.Cpp.Default.props启动并将其设置为调试| 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)
如何防止这种情况并使msbuild通过所选的配置和平台
(我了解使用NuGet管理包依赖关系的最终解决方案,但短期内不可行)一个解决方案是手动编辑.vcxproj文件以定义默认平台:
我可以通过将所有引用的项目包含到解决方案中来解决类似的问题—在本例中,将项目Y包含到解决方案B中。这似乎是Microsoft.CppBuild.targets文件中的一个bug。在某些计算机上,我看到两个这样的文件:一个在大小约120KB的
C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets
中,另一个在大小约77KB的C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets
中。第二个是错误的$(配置)|$(平台)值,这会产生上述错误。这个问题可能与直接相关,因为我的项目中的VCTargetsPath指向错误的(77KB)Microsoft.CppBuild.targets目录(我使用VS2015,所以它应该使用V140目录中的目录)。我找到了两种解决方法:1)替换错误文件或2)修改HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0\VCTargetsPath10
注册表指向右侧文件。。你总是想建立X和Y吗?即使在不涉及Y的解中?这对我来说是相当不合逻辑的。不过,我可以根据您的需要为您提供一些解决方案来解决/消除此问题
如果要使用A和B构建X&Y和X
在解决方案A中,将另一个项目设置为生成依赖项,而不是在项目X中引用项目Y。只要它引用另一个项目,就不能设置它(我总是删除.vcxproj中的引用,它位于项目底部的某个地方),但一旦删除了内部项目引用,您可以将解决方案引用到它,然后它就可以正常工作了
使用MSBuild生成解决方案A时,它将生成X和Y,而使用MSBuild生成解决方案B
否则
如果您想使用任一解决方案构建X&Y
很抱歉,但目前在MSBuild中这是不可能的。我建议将项目Y添加到解决方案中并引用它,但是,为什么要这样做呢?您已经有了一个包含这两个选项的项目,如果您想要不同的输出,您可以轻松地进行不同的配置
由于缺少rep,我无法添加注释,但与user1825216的回答相同,我正在从命令行运行MSBuild,因此我通过将
-p:Platform=x64
添加到build命令中,而不是修改.vcxproj来解决此错误。visual studio对我有效,修改了“项目配置”并添加了“x64”我有一些损坏的项目引用,将项目添加到解决方案中并更新引用修复了问题。谢谢