VS中自動選擇x86或x64的dll


http://www.cnblogs.com/lzjsky/archive/2010/09/06/1819321.html

原來使用Win7的32位系統,進行C#工程的開發,后來重裝系統,換成了win7的64位系統

調試原來的工程,由於在其中引用了“SQLite”的32位的dll,導致在64為位下程序無法運行(但是編譯可以通過)

后來通過修改工程文件(.csproj),在其中設置引用的條件,解決了問題

打開引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到對SQLite引用的語句,類似如下的代碼

---------------------------------------------------------------------

<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.dll</HintPath>
</Reference>

---------------------------------------------------------------------

 

 

這里指定了引用的庫的名稱,路徑等信息,將上面的配置內容,修改如下

---------------------------------------------------------------------

<Reference Condition=" '$(Platform)' == 'AnyCPU' " Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.dll</HintPath>
</Reference>

---------------------------------------------------------------------

只是增加了一個Condition的限制條件,表示只在平台類型位AnyCPU的時候,按照這個路徑引用dll

 

 

 

復制上面的配置內容,並按照如下進行修改,設置在x64平台的生成時引用的dll路徑

---------------------------------------------------------------------

<Reference Condition=" '$(Platform)' == 'x64' " Include="System.Data.SQLite.x64, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.x64.dll</HintPath>
</Reference>

---------------------------------------------------------------------

 

 

最后,說一下怎樣在VS中設置不同的生成平台

在工具欄的“解決方案平台”(一般這里會顯示着“Any CPU”)下拉框中選擇“配置管理器”,在其中添加想要的平台類型(一般就在x64,x86,Itanium中選擇,不要修改默認名稱)

然后在窗口下部的“項目上下文中”,在對應的項目(這里僅info項目,其他的保持AnyCPU不變)中修改平台類型(修改為X64)

然后,配置到這里,可能在項目文件中,對應新增的平台類型的一些設置不完整(我遇到編譯的時候提示“OutputPath沒有設置”),這個時候,進入vs的項目屬性界面,稍微修改一下(改成別的,保存,再改回來)這些設置

ok,這個時候,應該就可以根據平台的類型不同,引用到對應的dll了,

在網上找到的資料說,這種方法對於msi的安裝程序的制作不太好使,我不太清楚,涉及到這方面的同學,再仔細查查看

不過,我這里提供一個可行的解決方案,那就是不要將整個項目制作到安裝程序中,只是制作一個最基本的安裝程序,然后通過升級來保證最新

如果是在沒有網絡的環境中,那也可以將編譯產出單獨解壓到安裝目錄下,以避免將整個解決方案制作成安裝包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM