VS2012 .NET 4 製品には 2 つの異なる SKU の A と B があり、現在 x86 専用にビルドしています。通常の構成もあり、現在 4 つの構成があることDebug
をRelease
意味します。
- デバッグA
- デバッグB
- リリースA
- リリースB
.csproj ファイルの 1 つを見ると、次のようになります。
<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 の異なる組み合わせから 2 倍になり、VS は、必要に応じて AnyCPU プラットフォーム構成も追加するようです。30 以上のプロジェクトで 8 つすべてが正しく構成されていることを確認するには、VS で何度もクリックする必要があり、間違いを犯しやすいです。
マルチターゲティングの問題が解決された他のいくつかの SO の質問と、参照パスで ${Platform} を使用することを含む、さまざまなプラットフォームのさまざまな参照を含めるための提案の 1 つを読みました。プロジェクトの設定で同様のことができると考えたので、マルチプラットフォームを実行しようとしたときにこれを試しました:
<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>
理論的には、たった 2 つのブロックで 8 つの異なる組み合わせすべてに必要なものが得られるはずです。しかし、VS を見ると、プロジェクトで利用可能なビルド プラットフォームとして x86 も x64 も表示されません。VS が実際にビルド プラットフォームを保存する唯一の方法は、それらをプロパティ グループの奇妙な条件としてエンコードすることであるかのように見えますか? そうじゃないって言って...
VS でうまく動作する「見栄えの良い」マルチプラットフォーム .csproj を作成する方法はありませんか?
VS が個々のプロジェクトのプロパティ ウィンドウにプラットフォームを表示できない場合でも、msbuild が正しいプラットフォームを使用することを信頼して、.csprojs を作成し、VS でそれらを編集しないことを決定できますか?
編集:
質問が少しわかりにくかったようです: 明確にするために、多くのプロジェクトと config|platform の 8 つの組み合わせがある場合に、プロジェクトの構成とソリューションのビルド構成をセットアップ、維持、および概要する方法を知りたいです。 . これを手動で行う方法は知っていますが、200 以上のプロパティ ページのいずれかで頭がおかしくなったり、間違いを犯したりすることは避けられません。