2010-05-04 37 views
22

Tôi đang làm việc trên studio trực quan trong x86. Tôi muốn xây dựng ứng dụng của tôi cho cả x32 và x64. Nhưng tôi cần phải sử dụng kết nối sqlite .net mà có một dll cho các ứng dụng x86 và một dll cho các ứng dụng x64. Làm cách nào để tôi định cấu hình studio trực quan của mình để tải tham chiếu khi cấu hình của tôi là x64 và cấu hình khác khi cấu hình của tôi là x86?Visual Studio tải đúng (x86 hoặc x64) dll!

Cảm ơn, Richard.

Trả lời

21

trong hồ sơ dự án của bạn được sử dụng tài liệu tham khảo một MSBUILD có điều kiện

<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

cảm ơn! ;) – damnpoet

0

Bạn cũng có thể xây dựng ứng dụng của bạn cho "Bất kỳ CPU" và tự động chọn DLL để tải.

+0

Bạn có ví dụ không? –

+0

Bạn cần xem xét sự kiện AppDomain.CurrentDomain.AssemblyResolve. Sau đó bạn có thể giải quyết bất kỳ DLL nào (ví dụ: System.Data.SQLite.dll) bằng cách tải nó từ bất kỳ vị trí nào bằng Assembly.LoadFrom. Bạn thậm chí có thể gửi cả hai phiên bản của DLL dưới dạng tài nguyên nhúng. – antsyawn

10

Câu trả lời đơn giản hơn so với Preet Sangha sẽ không tạo ra cảnh báo khi dự án được tải và chỉ có dll được chấp nhận có điều kiện mới xuất hiện trong Solution Explorer. Vì vậy, tổng thể, sự xuất hiện là sạch hơn, mặc dù tinh tế hơn. (Điều này đã được thử nghiệm trong 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

Đẹp nhất. Câu trả lời rất tốt +1 –

Các vấn đề liên quan