2010-05-04 18 views
22

Sto lavorando su Visual Studio in x86. Mi piacerebbe creare la mia applicazione per x32 e x64. Ma ho bisogno di usare il connettore sqlite .net che ha una DLL per le app x86 e un'altra DLL per le app x64. Come configuro il mio studio visivo per caricare un riferimento quando la mia configurazione è x64 e un'altra quando la mia configurazione è x86?Visual Studio che carica la dll giusta (x86 o x64)!

Grazie, Richard.

risposta

21

nel file di progetto in uso di riferimento un MSBUILD condizionale

<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

grazie che ha funzionato! ;) – damnpoet

0

È inoltre possibile creare l'applicazione per "Any CPU" e scegliere in modo dinamico, che DLL caricare.

+0

Hai un esempio? –

+0

È necessario controllare l'evento AppDomain.CurrentDomain.AssemblyResolve. È quindi possibile risolvere qualsiasi DLL (ad esempio System.Data.SQLite.dll) caricandolo da qualsiasi posizione utilizzando Assembly.LoadFrom. È anche possibile spedire entrambe le versioni della DLL come risorse incorporate. – antsyawn

10

Questa risposta leggermente più semplice di Preet Sangha non genera un avviso quando il progetto viene caricato e solo in Esplora soluzioni verrà visualizzata la dll accettata condizionalmente. Quindi, nel complesso, l'aspetto è più pulito, anche se più sottile. (Questo è stato testato in 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

Bello. Ottima risposta +1 –

Problemi correlati