在Visual Studio項目中根據系統平臺自動引用32或64位的DLL

最近在使用Noesis.Javascript.dll,但是這個DLL是有X86與X64二種版本的,我自己的電腦是64位的,但是別人的電腦是32位的。所以在別人那裏使用的時候出了問題。

在VS裏怎麼引用二個版本的DLL了。在網上搜索了資料。我修改的對應代碼如下:(資料在後面,自己可以看)

    <Reference Condition=" '$(Platform)' == 'AnyCPU' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
    </Reference>
    <Reference Condition=" '$(Platform)' == 'x86' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
    </Reference>
    <Reference Condition=" '$(Platform)' == 'x64' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x64\Noesis.Javascript.dll</HintPath>
    </Reference>




最近把系統從WIN2008(32位)更換成WIN2008R2,在64位系統下使用原來在32位系統下開發的程序出現了異常。經調試原來是由於在其中引用了“System.Data.SQLite”的32位的dll,導致在64位下程序無法運行(但是編譯可以通過) powered by 25175.net

解決步驟:

1.從http://sourceforge.net/projects/sqlite-dotnet2/files/ 下載最新的X64位DLL,編譯後在64位系統上可以正常運行了,但卻不能同時在32位的系統上運行。 

2.尋找如何能使項目自動適應不同的平臺的解決方案。

解決方案: 



通過更改csproj(C#項目文件的擴展名)文件配置進行對應平臺的自適應,其中${Platform}代表對應的平臺

方法1.HintPath中使用${Platform}做爲變量替換路徑

假設你的DLL有兩個平臺構建,以及他們在以下位置是:

C:\whatever\x86\whatever.dll  
C:\whatever\x64\whatever.dll 

您只需編輯這個協議的.csproj文件:

<HintPath>C:\whatever\x86\whatever.dll</HintPath>  

爲:

<HintPath>C:\whatever\${Platform}\whatever.dll</HintPath>  

然後,您應該能夠建立您的項目針對這兩個平臺,和MSBuild會尋求其他選擇的平臺,爲正確的目錄。 



方法2:Reference節點增加Condition條件 

a.將32位平臺Reference節點增加Condition條件

<Reference Condition=" '$(Platform)' == 'AnyCPU' "……

 b.複製32位平臺Reference節點,並改爲64位平臺,將HintPath節點中DLL路徑更換爲對應的64位版本

<Reference Condition=" '$(Platform)' == 'x64' ……

 方法3:ItemGroup節點增加Condition條件 ,其實現同方法2,只是使用的節點不同。這裏略過。

發佈了139 篇原創文章 · 獲贊 24 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章