2012-10-18 96 views
2

我的代碼依賴於第三方庫(dll)。具有相同名稱的程序集忽略提示路徑

由於Nugget's inability to manage different platformsalso here),我創建了兩個具有相同代碼重複(保持代碼爲最小 - 基本上是API包裝)的項目。

一個項目引用了x86版本的dll和其他x64。

我的解決方案中只有一個項目引用了這些項目。
它引用了他們兩個,並且這樣做條件(所以當我建立與64位配置項目引用64 dllis引用等)

它的.csproj包含類似:

ProjectReference Include="..\3rdPartyModule.x86\3rdPartyModule.x86.csproj" Condition="'$(Platform)' == 'x86'" 

ProjectReference Include="..\3rdPartyModule.x64\3rdPartyModule.x64.csproj" Condition="'$(Platform)' == 'x64'" 

現在,奇怪的事情發生了:

如果我卸載這兩個項目,然後裝入冷杉st x86的一個,然後是x64的,在x64的引用實際上表明它指向的是x86 dll(我可以看到路徑)。

如果我改變加載的順序,那麼這是另一種方式:x64很好,但x86引用的是x64版本!

我的猜測是,VS找到一個名字已經在內存中的組合,並自動將第二個引用到第一個。

這是一個已知的問題?有沒有辦法解決它?

回答

1

在VS2010中曾經存在一個錯誤,在這種情況下,引用在VS UI中沒有正確顯示,但是在編譯期間將會複製正確的文件。在你的情況下,你是否在構建輸出目錄中獲得正確版本的文件?

此外,您可能需要爲引用程序集(從引用屬性)設置不同的別名。它可能有幫助。

+0

你似乎是對的,它確實是一個UI錯誤(它還沒有被修復)。 現在還不能信任UI ... –

相關問題