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的安裝程序的制作不太好使,我不太清楚,涉及到這方面的同學,再仔細查查看
不過,我這里提供一個可行的解決方案,那就是不要將整個項目制作到安裝程序中,只是制作一個最基本的安裝程序,然后通過升級來保證最新
如果是在沒有網絡的環境中,那也可以將編譯產出單獨解壓到安裝目錄下,以避免將整個解決方案制作成安裝包