VS2010 と .NET 4.0 を使用しています。
私は 2 つの小さなプロジェクトAとBを持っています。Aは C++/CLI DLL プロジェクトで、BはAを参照する C# EXE プロジェクトです。Aは x86 ネイティブ dll を使用するため、どちらも x86 でコンパイルする必要があります。
VS2010 IDE でBをビルドすると、 Bはうまくコンパイルされます。次に、次のコマンド ラインを使用して MSBuild でBをビルドしようとします。
MSBuild B.csproj /property:プラットフォーム = x86;構成 = リリース
そして、次のエラーで失敗します。
" A .vcxproj" (既定のターゲット) (16) -> (InvalidPlatformError ターゲット) -> C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform.Targets(23,7 ): エラー MSB8007: プロジェクト ' A .vcxproj' のプラットフォームが無効です。プラットフォーム='x86'. このメッセージが表示されるのは、ソリューション ファイルを使用せずにプロジェクトをビルドしようとしており、このプロジェクトに存在しない既定以外のプラットフォームを指定したためです。[ .vcxproj ]
これは、C++/CLI がプラットフォーム名として「Win32」を使用するのに対し、C# は「x86」を使用するために発生するようです。したがって、「x86」を指定すると、A のビルドに失敗します。"Win32" の場合、Bのビルドに失敗します。
自動ビルドのため、MSBuild を使用する必要があります。Bの既定のプラットフォームは AnyCPU に固定されているため (変更できません)、既定のプラットフォーム トリックを使用できず、MSBuild でビルドするときに "x86" を指定する必要があります。これどうやってするの?プラットフォーム名を変更する方法、または MSBuild を使用するより良い方法はありますか? デフォルトのプラットフォームを使用せずにこれを行うことはできますか?