2013-10-24 51 views
3

我寫了一個DLL庫中是指mylib.dll依賴於第三方DLL庫OtherLIB.dll(版本1.0.0 )(版本1.0.0 )。 Library NuGet上提供了OtherLIB.dll,我將它通過NuGet包管理器添加到MyLIB.dll項目中。C#.NET動態庫參考依賴

現在,讓我們說,我正在寫一個新的應用程序,說MyAspNetMvcApp,我通過的NuGet添加中是指mylib.dll(版本1.0.0 )給它。它會自動添加OtherLIB.dll(版本1.0.0),因爲它取決於它。一切工作正常,但...

一個月後,有被釋放的OtherLIB.dll一個新版本 - 版本1.0.1 。我正在通過NuGet更新它。

現在,我的ASP.NET MVC應用程序停止工作,因爲存在由MyLIB.dll引發的異常。它預計OtherLIB.dll版本1.0.0但已使用較新的版本。

中是指mylib.dll項目引用我可以看到,「特定版本」標誌OtherLIB.dll被設置爲「假」,所以我不知道是怎麼回事......

有沒有可能以其他方式解決這個問題,而不是通過在web.config文件中提供程序集綁定?如何添加對的引用OtherLIB.dll for MyLIB.dll以這種方式,當我將OtherLIB.dll更新到更新的版本時,不會出現異常?

+0

聽起來就像你患了DLL地獄。您是否已經通過將這些DLL的一部分部署到全局程序集緩存(GAC)? – GrantByrne

+0

你的問題有點含糊。如果你不想使用** OtherLIB.dll **的v1.0.1,你爲什麼更新你的MVC解決方案? –

+0

這不是我不想使用v1.0.1。我想使用** OtherLIB.dll **的最新版本,但是我不想在每次新版本的** OtherLIB.dll **時發佈新版本的** MyLIB.dll **發行了。我不希望我的圖書館的用戶在通過NuGet管理器更新** OtherLIB.dll **時遇到問題。 –

回答

0

您的MyLIB.dll可能設置爲使用特定版本的OtherLIB.dll。進入你的MyLIB項目並點擊OtherLIB.dll的參考。檢查屬性以查看「特定版本」是否設置爲true。

+0

謝謝 - 我已經檢查過它,並將特定版本設置爲False ... –

3

我昨天遇到了這個視覺工作室Web開發人員使用Oracle.DataAccess.dll。

我的解決辦法,

右鍵單擊您的項目解決方案(* .csproj的),並對其進行編輯。

正下方:

<PropertyGroup> 

廣場

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 

然後重建您的解決方案。包含它們時必須將兩個版本dll分離到項目中的兩個不同目錄(必需)。

我做

ora11 >> Oracle.DataAccess.dll(第11版)

ora9 >> Oracle.DataAccess.dll(第9版)

這樣做可以讓您的IDE使用這兩個版本的DLL。

+1

其實它不會幫助。在我的情況下** MyLIB.dll **取決於NuGet上提供的** OtherLIB.dll **(並且正在從它下載)。因此沒有辦法將它「嵌入」到** MyLIB.dll **中。 –