0

私は、C++/CLI と C# プロジェクトをうまく組み合わせた VS 2010 ソリューションを持っています。さらなる開発のために VS 2012 に移行することにしました。技術的な問題により、C++/CLI プロジェクトをアップグレードできません。これは私にいくつかの問題を引き起こしました。devenvコマンドを使用して上記のソリューションをコンパイルする夜間のビルド スクリプトがあります。すべての C++/CLI プロジェクトがコンパイルに失敗します。

IDE がトリガーされると、すぐにすべてのプロジェクトを変換するよう求められます。いいえと言ってコンパイルすると、すべてうまくいきます。

私の調査:

実際に何が起こっているのかを理解するために、次のアプローチを試しました。MSBUILD ログの詳細度も増加しました。すべてのケースで、VS 2012 コマンド プロンプトが使用されました。

ケース 1:

msbuild {C++/CLI プロジェクト名} /t:rebuild

結果:

プロジェクトは正常にコンパイルされ、VS 2010 コンパイラを使用します。ログの次の行は、次のことを示しています。

「AlwaysCreate」が指定されていたため、「x64\Debug\Swift.Algorithms.unsuccessfulbuild」を作成しています。ClCompile: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe

ケース 2:

devenv {C++/CLI プロジェクト名} /rebuild "{CONFIGURATION}"

結果:

プロジェクトは正常にコンパイルされ、VS 2010 コンパイラを使用します。ログの次の行は、次のことを示しています。

1>アセンブリ「Microsoft.Build.CppTasks.x64、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a」から「CL」タスクを使用。1>タスク "CL" 1> ツールに渡される環境変数: 1>
VS_UNICODE_OUTPUT=1512 1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe

ケース 3: (私を苛立たせるもの)

devenv {ソリューション ファイル名} /rebuild "{CONFIGURATION}"

C++/CLI プロジェクトがコンパイルに失敗します。C# プロジェクトは正常にコンパイルされます。この場合に使用されている C++ コンパイラは VS 2012 バージョンです。ログの次の行は、次のことを示しています。

1> ツールに渡される環境変数: 1> VS_UNICODE_OUTPUT=1016 1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\x86_amd64\CL.exe /c

質問:

1) プロジェクト ファイルが個別にコンパイルに使用されている場合、MSBUILD は適切なツールを使用するのに十分賢いことがわかります。どの VS ツール コマンド プロンプト (VS 2010 または VS 2012) を使用するかは問題ではありません。ソリューション ファイルが呼び出されたときに何が問題になっていますか?

2) 私の製品をコンパイルする唯一の方法は、ソリューション ファイルが問題を引き起こしているため、各プロジェクトを個別にコンパイルすることだと思います。これは既知の制限ですか?

この件についてご意見をいただければ幸いです。

4

1 に答える 1

0

msbuildまたはを使用してビルドしているかどうかに関係devenvなく (個人的には を好みmsbuildます)、少なくとも、Platform Toolset各 Visual C++ プロジェクトの を に設定する必要があると思いVisual Studio 2010ます。

プラットフォーム ツールセット

于 2013-07-31T12:16:36.117 に答える