我正在尝试为具有许多解决方案(一些用于 CI,一些用于开发人员)和数百个项目的复杂构建运行纯 x64 构建,并且遇到了“错误 MSB8013:此项目不包含配置和平台组合调试|Win32"
我已将其简化为简单的配置:
- 解决方案 A 包含项目 X 和项目 Y。项目 X 具有对项目 Y的项目引用。
- 解决方案 B 还包含项目 X。
没有一个项目或解决方案包含 Win32 平台 - 它已被删除。
当我构建解决方案 B(作为 x64)时,我收到
错误 MSB8013:此项目不包含 Debug|Win32 的配置和平台组合
错误消息有时包含其他信息:
如果其他项目试图遵循对此项目的项目到项目引用,此项目已卸载或未包含在解决方案中,并且引用项目未使用相同或等效项构建,则也可能出现此错误配置或平台。
问题是引用项目确实“使用相同或等效的配置或平台构建”。
查看 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:
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 管理包依赖项的最终解决方案,但这在短期内是不可行的)