7

プラットフォームが指定されていない場合、msbuild はどのようにプラットフォームを選択しますか? 一部のソリューションでは、他の「x86」に対して「混合プラットフォーム」を選択しているようです。

ロギングの診断レベルをオンにすると、最初の「Initial Properties」に「Platform = Mixed Platforms」などの理由が説明されていないことが表示されます。

いくつかの答えを先取りするために、プラットフォームを手動でオーバーライドできることを知っています。それは問題ではありません。指定されていない場合の msbuild の動作を知る必要があります。

4

2 に答える 2

6

Microsoft.Cpp.Default.propsこれは役立つかもしれません: 私はこれを調査していましたが、最終的に、次の場所にある(このバージョンの Visual Studio の 21 行目) を調べて、インストールの既定のプラットフォームを突き止めましたProgram Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120

<Platform Condition="'$(Platform)' == ''">Win32</Platform>

これは、VS12 (Visual Studio 2013) では、他のプラットフォームが明示的に指定されていない場合、MSBuild が Win32 をプラットフォームとして選択することを意味します。他のいくつかの質問で述べたように、という名前の環境変数を設定するPlatformと、デフォルトが設定した値に変更されます。

重要な注意事項: プロジェクト ファイルではなく Visual Studio ソリューション ファイル (*.sln) で MSBuild を呼び出し、MSBuild 引数でプラットフォームを指定しない場合、MSBuild はプラットフォームに基づいてプラットフォームを自動的に選択するように見えます。SolutionConfigurationPlatformsソリューション ファイルのグローバル セクションの下の最初のエントリ。これはどこにも文書化されていませんが、実験からそう思われます。つまり、プロジェクト ファイルを編集し、別の既定のプラットフォーム プロパティを指定すると (上記のように)、MSBuild はこの既定値を無視します。これは、プロジェクトの参照を開始する前に既にプラットフォームが選択されているためです。プロジェクト ファイルで MSBuild を直接呼び出すと、この動作が回避されるようです。

于 2015-05-20T14:20:03.370 に答える