And*_*ren 7 c# msbuild visual-studio
我们有一个VS2012 .NET 4产品,它有两个不同的SKU A和B,我们目前仅为x86构建.我们也有通常的配置Debug,Release这意味着我们目前有4种配置.
查看其中一个.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多个属性页面中出错.
| 归档时间: |
|
| 查看次数: |
3717 次 |
| 最近记录: |