Как настроить мой проект для работы на 64-битных и 32-битных машинах

У меня есть проект, который настроен на "Любой процессор". Теперь я должен ссылаться на сторонний dll, который имеет скомпилированные версии x86 и x64 отдельно (я не могу получить Any CPU версию стороннего 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. Когда я изменяю целевую платформу My project на x86 и запускаю приложение, оно будет работать. Если я изменю его на x64, тогда выдаст то же исключение BadImageException.

Что здесь не так? Я не хочу создавать два проекта (x86 и x64) только из-за одной ссылки на dll. Есть ли другой способ действовать, если вышеуказанный способ неверен?

Моя среда разработки - VS2010 и.NET4.0 и Win7 64-битная ОС.

1 ответ

Измените параметр платформы на X86 и используйте только 32-битную DLL. Таким образом, исполняемый файл будет работать как на 32-битной, так и на 64-битной ОС. Приложение, созданное с опцией x86, будет работать как 32-битный процесс на 64-битной ОС под WOW64.

Также может помочь следующая ссылка - условно использовать 32/64 битную ссылку при сборке в Visual Studio

Следующая ссылка показывает, как загрузить правильный DLL, который вы ищете

Другие вопросы по тегам