如何同时为x86和x64配置VS2012解决方案

And*_*ren 7 c# msbuild visual-studio

我们有一个VS2012 .NET 4产品,它有两个不同的SKU A和B,我们目前仅为x86构建.我们也有通常的配置Debug,Release这意味着我们目前有4种配置.

  • DEBUGA
  • DebugB
  • ReleaseA
  • ReleaseB

查看其中一个.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>
Run Code Online (Sandbox Code Playgroud)

显然,添加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> 
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这应该只需要两个块就可以满足我对所有8种不同组合的需求.但是现在看看VS我看不到neitehr x86和x64作为该项目的可用构建平台.看起来VS实际存储构建平台的唯一方法是将它们编码为属性组中的怪异条件?说它不是这样的......

有没有办法制作一个"漂亮"的多平台.csproj,它可以很好地与VS一起使用?

我可以创建.csprojs然后决定不在VS中编辑它们,相信msbuild将使用正确的平台,即使VS无法在各个项目的属性窗口中显示任何平台吗?

编辑:

看起来问题有点令人困惑:要清楚,我想知道如何设置,维护和概述项目的配置,以及我的解决方案的构建配置,当有很多项目和8个组合的config | platform时.我知道如何手动完成此操作,但不是没有失去理智或在200多个属性页面中出错.

Rya*_*ell 0

您需要批量构建,您可以在其中选择要运行的不同构建。

在此输入图像描述

您可以使用“工具”->“选项”->“键盘”将其映射到键盘快捷键,然后搜索 Build.BatchBuild