2

「Any CPU」用に構成されたプロジェクトがあります。ここで、x86 と x64 のコンパイル バージョンを別々に持つサード パーティの dll を参照する必要があります (サード パーティの dll の AnyCPU バージョンを取得できません)。以下に示すように、プラットフォームに基づいて特定の dll を参照するようにプロジェクトの構成ファイルを変更しました (これはサンプル プロジェクト構成ファイルです)。

<PropertyGroup>
<CurrentPlatform>x86</CurrentPlatform>
<CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">x64</CurrentPlatform>
</PropertyGroup>
<ItemGroup Condition=" '$(Platform)' == 'x86' ">
<!--Compiled as ClassLibrary target platform is x86-->
 <Reference Include="ClassLibrary">
    <HintPath>..\..\ClassLibrary_x86\ClassLibrary_x86\bin\Debug\ClassLibrary.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" '$(Platform)' == 'x64' ">
 <!--Compiled as ClassLibrary target platform is x64-->
 <Reference Include="ClassLibrary">
      <HintPath>..\..\ClassLibrary_x64\ClassLibrary_x64\bin\Debug\ClassLibrary.dll</HintPath>
</Reference>
</ItemGroup>

このプロジェクトを Visual Studio で実行すると、機能しません。BadImageExceptionをスローします。プロジェクトのターゲット プラットフォームを x86 に変更してアプリケーションを実行すると、動作します。x64 に変更すると、同じBadImageExceptionがスローされます。

ここで何が間違っていますか?1 つの dll 参照のためだけに 2 つのプロジェクト (x86 と x64) を作成したくありません。上記の方法が間違っている場合、他の方法はありますか?

私の開発環境は VS2010 と .NET4.0 と Win7 64bit OS です。

4

1 に答える 1