如何配置我的项目以在64位和32位计算机上工作

时间:2013-05-27 04:55:09

标签: c# x86 64-bit 32bit-64bit dll-reference

我有一个配置为“任何CPU”的项目。 现在我必须分别引用具有x86和x64编译版本的第三方dll(我无法获得AnyCPU版本的第三方dll)。 我已经更改了我的项目的配置文件,以便根据平台引用特定的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

这里有什么不对?我不想仅仅因为一个dll引用而创建两个项目(x86和x64)。如果上述方法有误,还有其他方法可以继续吗?

My Dev环境是VS2010和.NET4.0以及Win7 64bit操作系统。

1 个答案:

答案 0 :(得分:2)

将平台选项更改为X86,仅引用32位dll。这样,可执行文件将在32位和64位操作系统上运行。 使用x86选项构建的应用程序将在WOW64下的64位操作系统上以32位进程运行。

下一个链接也可以提供帮助 - Conditionally use 32/64 bit reference when building in Visual Studio

下一个链接显示您正在寻找的how to load the right dll