我试图让一个纯x64构建运行在一个复杂的构建中,其中包含许多解决方案(一些用于CI,一些用于devs)和数百个项目,并且遇到了"error MSB8013:该项目不包含Debug\Win32 32的配置和平台组合“
我将其简化为一个简单的配置:
没有一个项目或解决方案包含Win32平台--它已经被删除了。
当我构建解决方案B(作为x64)时,我收到
error MSB8013:此项目不包含Debug\Win32 32的配置和平台组合
错误消息有时包含其他信息:
如果其他项目试图遵循对此项目的项目对项目的引用,该项目已卸载或未包含在解决方案中,并且引用项目没有使用相同或等效的配置或平台,则也可能出现此错误。
问题是引用项目 an “使用相同或等效的配置或平台进行构建”。
查看msbuild诊断,正在构建项目Y,因为项目X包含对它的项目引用。但是在构建项目Y之前,正在删除配置和平台属性:
1>Task "MSBuild" (TaskId:28)
1> Removing Properties: (TaskId:28)
1> Configuration (TaskId:28)
1> Platform (TaskId:28)
因此,Microsoft.Cpp.Default.props启动并将这些设置为Debug\Win32 32:
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管理包依赖关系的最终解决方案,但这在短期内是不可行的)
发布于 2016-05-27 11:33:05
我可以通过将所有引用的项目都包含到解决方案中来解决类似的问题--在这种情况下,将项目Y包括到解决方案B中。
发布于 2015-10-15 22:32:21
一个解决方法是手动编辑.vcxproj文件以定义默认平台:
发布于 2017-04-05 10:11:28
它似乎是Microsoft.CppBuild.targets
文件中的一个bug。在一些机器上,我看到了两个这样的文件:一个在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets
中,大小约为120 On,C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets
的大小为77 On。第二个错误是错误的$(配置)_~_(平台)。这个问题可能与this topic直接相连,因为我的项目中的VCTargetsPath指向错误(77 so ) Microsoft.CppBuild.targets目录(我使用VS2015,所以它应该使用V140目录中的那个)。我找到了两个解决办法: 1)替换buggy文件;2)修改HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0\VCTargetsPath10
注册表以指向右文件。
https://stackoverflow.com/questions/33156131
复制相似问题