2010-05-04 20 views
22

Estoy trabajando en Visual Studio en un x86. Me gustaría construir mi aplicación para x32 y x64. Pero necesito usar el conector sqlite .net que tiene un dll para aplicaciones x86 y otro dll para aplicaciones x64. ¿Cómo configuro mi Visual Studio para cargar una referencia cuando mi configuración es x64 y otra cuando mi configuración es x86?Visual Studio cargando el dll derecho (x86 o x64)!

Gracias, Richard.

Respuesta

21

del archivo de proyecto en el uso de referencia un MSBUILD condicional

<Reference 
     Include="SomeAssembly86, Version=0.85.5.452, Culture=neutral, PublicKeyToken=41b332442f1101cc, processorArchitecture=MSIL" 
     Condition=" '$(Platform)' == 'AnyCPU' "> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\..\Dependencies\SomeAssembly.dll</HintPath> 
     <Private>False</Private> 
    </Reference> 
    <Reference 
     Include="SomeOtherAssembly, Version=0.85.5.999, Culture=neutral, PublicKeyToken=41b332442f1101cc, processorArchitecture=MSIL" 
     Condition=" '$(Platform)' == 'x64' "> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\..\Dependencies\SomeOtherAssembly.dll</HintPath> 
     <Private>False</Private> 
    </Reference> 
+0

gracias que funcionó! ;) – damnpoet

0

También puede construir su solicitud de "Cualquier CPU" y elegir dinámicamente los cuales DLL para cargar.

+0

¿Tiene un ejemplo? –

+0

Debe buscar enganchar el evento AppDomain.CurrentDomain.AssemblyResolve. A continuación, puede resolver cualquier archivo DLL (por ejemplo, System.Data.SQLite.dll) al cargarlo desde cualquier ubicación utilizando Assembly.LoadFrom. Incluso puede enviar ambas versiones de la DLL como recursos integrados. – antsyawn

10

Esta respuesta un poco más simple que Preet Sangha no generará una advertencia cuando se cargue el proyecto y solo aparecerá el DLL condicionalmente aceptado en el Explorador de soluciones. Entonces, en general, la apariencia es más limpia, aunque más sutil. (Esto fue probado en Visual Studio 2010.)

<Reference Include="p4dn" Condition="$(Platform) == 'x86'"> 
    <HintPath>..\..\ThirdParty\P4.Net\clr4\x86\p4dn.dll</HintPath> 
</Reference> 
<Reference Include="p4dn" Condition="$(Platform) == 'x64'"> 
    <HintPath>..\..\ThirdParty\P4.Net\clr4\x64\p4dn.dll</HintPath> 
</Reference> 
+1

Bueno. Muy buena respuesta +1 –

Cuestiones relacionadas