我们有一个 VS2012 .NET 4 产品,它有 2 个不同的 SKU 的 A 和 B,我们目前只为 x86 构建。我们也有通常的配置Debug
,Release
这意味着我们目前有 4 种配置。
- 调试A
- 调试B
- 发布A
- 版本B
查看其中一个 .csproj 文件,它看起来像这样
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugA|x86' ">
<OutputPath>..\bin\DebugA\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseA|x86' ">
<OutputPath>..\bin\ReleaseA\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugB|x86' ">
<OutputPath>..\bin\DebugB\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseB|x86' ">
<OutputPath>..\bin\ReleaseB\</OutputPath>
</PropertyGroup>
显然,添加 x64 会使这从 4 到 8 个不同的组合翻倍,而且 VS 似乎也随时添加 AnyCPU 平台配置。确保 30 多个项目中所有 8 个都正确配置需要在 VS 中大量点击,而且很容易出错。
我已经阅读了其他一些解决多目标问题的 SO 问题,以及在参考路径中使用 ${Platform} 涉及的不同平台包含不同参考的建议之一。我想我可以为我的项目配置做类似的事情,所以我在尝试做多平台时尝试了这个:
<PropertyGroup Condition=" '$(Configuration)' == 'DebugA' Or '$(Configuration)' == 'DebugB' ">
<OutputPath>..\bin\${Platform}\${Configuration}\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'ReleaseA' Or '$(Configuration)' == 'ReleaseB' ">
<OutputPath>..\bin\${Platform}\${Configuration}\</OutputPath>
</PropertyGroup>
从理论上讲,这应该可以为我提供所有 8 种不同组合所需的东西,只需两个块。但是现在查看 VS,我看不到 neitehr x86 或 x64 作为该项目的可用构建平台。看起来 VS 实际存储构建平台的唯一方法是将它们编码为属性组上的异常条件?说是不是这样...
有没有办法制作一个看起来“漂亮”的多平台 .csproj 可以很好地与 VS 配合使用?
我是否可以创建 .csprojs 然后决定不在 VS 中编辑它们,相信 msbuild 将使用正确的平台,即使 VS 无法在单个项目的属性窗口中显示任何平台?
编辑:
似乎这个问题有点令人困惑:明确地说,我想知道如何设置、维护和概述项目的配置,以及我的解决方案的构建配置,当有很多项目和 config|platform 的八种组合时. 我知道如何手动执行此操作,但并非没有失去理智或在 200 多个属性页之一上犯错误。