C#.Net Dll引用依赖项

C#.Net Dll引用依赖项,c#,.net,dll,reference,nuget,C#,.net,Dll,Reference,Nuget,我已经编写了一个DLL库MyLIB.DLL(版本1.0.0),它依赖于第三方DLL库OtherLIB.DLL(版本1.0.0)。库OtherLIB.dll在NuGet上可用,我将通过NuGet软件包管理器将其添加到MyLIB.dll项目中 现在让我们假设我正在编写一个新的应用程序,比如说MyAspNetMvcApp,我正在通过NuGet向它添加MyLIB.dll(版本1.0.0)。它会根据需要自动添加OtherLIB.dll(1.0.0版)。一切正常,但是 一个月后,发布了新版本的OtherLI

我已经编写了一个DLL库MyLIB.DLL(版本1.0.0),它依赖于第三方DLL库OtherLIB.DLL(版本1.0.0)。库OtherLIB.dll在NuGet上可用,我将通过NuGet软件包管理器将其添加到MyLIB.dll项目中

现在让我们假设我正在编写一个新的应用程序,比如说MyAspNetMvcApp,我正在通过NuGet向它添加MyLIB.dll(版本1.0.0)。它会根据需要自动添加OtherLIB.dll(1.0.0版)。一切正常,但是

一个月后,发布了新版本的OtherLIB.dll-版本1.0.1。我正在通过NuGet更新它

现在,我的ASP.NET MVC应用程序停止工作,因为MyLIB.dll引发了一个异常。它希望在版本1.0.0中使用OtherLIB.dll,但已经在使用较新的版本

MyLIB.dll项目引用中,我可以看到OtherLIB.dll的“特定版本”标志被设置为“False”,所以我不知道这里发生了什么


除了在web.config文件中提供程序集绑定外,是否有其他方法解决此问题的可能性?如何为MyLIB.dll添加对OtherLIB.dll的引用,以便在将OtherLIB.dll更新到新版本时不会出现异常?

您的
MyLIB.dll
可能被设置为使用特定版本的
OtherLIB.dll
。进入您的
MyLIB
项目,单击对
OtherLIB.dll
的引用。检查属性以查看“特定版本”是否设置为true。

我昨天在visual studio web developer中使用Oracle.DataAccess.dll遇到了这个问题

我的解决方案

右键单击项目解决方案(*.csproj)并进行编辑

正下方:

<PropertyGroup>

放置

true
然后重建您的解决方案。在包含这两个版本的DLL时,必须将它们分隔到项目中的两个不同目录中(必需)

是的

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

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


这样做可以让您的IDE同时使用两个版本的DLL。

听起来像是在忍受DLL地狱的折磨。您是否已将这些DLL部署到全局程序集缓存(GAC)中?您的问题有点含糊不清。如果您不想使用OtherLIB.dll的v1.0.1,为什么要更新您的MVC解决方案?并不是我不想使用v1.0.1。我想使用最新版本的OtherLIB.dll,但我不想每次发布新版本的OtherLIB.dll时都发布新版本的MyLIB.dll。我不希望我的库的用户在通过NuGet manager更新OtherLIB.dll时遇到问题。@GrantByrne-我不想将它添加到GAC或类似的东西中,因为这两个库都应该只在NuGet上可用,并且尽可能简单易用。这更有意义。看一看NuGet文档中关于所定位的依赖项的版本控制。实际上,它没有帮助。在我的例子中,MyLIB.dll依赖于NuGet上可用的OtherLIB.dll(正在从中下载)。因此,无法将其“嵌入”到MyLIB.dll中。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>