2012-05-30 66 views
4

在我的項目中,我使用了兩種配置 - 32位和64位(因爲我在32位機器上開發,但部署到64位機器) 。如何添加對類庫的引用如果我需要32位和64位

我的項目包含類庫,位於「C:... \ Commons \ bin \ Debug \ Commons.dll」。我已經將這個DLL添加到引用,但當然,當我切換到64位這不起作用。

所以我需要添加「平臺特定參考」的機制。

我知道我可以手動編輯.csproj的文件中添加類似的東西:

<Reference Include="Commons" Condition="$(Platform) == 'x64'"> 
    <HintPath>..\Commons\bin\x64\Release\Commons.dll</HintPath> 
</Reference> 
<Reference Include="Commons" Condition="$(Platform) == 'x86'"> 
    <HintPath>..\Commons\bin\x86\Release\Commons.dll</HintPath> 
</Reference> 

我應該做的類庫一樣嗎?

我只是想知道,即使對於類庫,VS也不支持「依賴於平臺的引用」機制?

UPD看來我確實需要以某種方式連接4種類型的dll - 86 /調試,86 /發佈,X64 /調試,64 /鬆開

+0

對於部署,您可以編寫清單或使用Assembly類手動加載x86/x64 DLL。在運行時檢測x86/x64是一個簡單的sizeof(IntPtr)== 4或8.在SO上有類似的問題。我認爲,你用.csproj做的事情是可以的。 –

+0

你實際上是否需要有你的程序集的單獨版本?你不能簡單地將目標設置爲anycpu嗎? –

+0

@Steve B,是的,我會的,否則某些dll不會被加載 – javapowered

回答

1

其實你不應該。您必須將您的代碼編譯爲MSIL,並添加對MSIL版本的dll的引用。您的代碼和引用的代碼將在運行時由運行時編譯。如果它在x86計算機上工作,那麼它將被編譯爲x86,在x64計算機上它將被編譯爲x64。你不需要擔心它。

如果您認爲JIT速度較慢並且需要性能,那麼您可以在目標計算機上將您的程序集打包爲NG。