当第三方软件更改版本时,使用第三方dll构建的DLL停止工作

时间:2012-10-26 15:14:41

标签: .net dll versioning

如果我获得第三方dll,请说版本1.1

然后我构建了一个自己的dll引用这个第三方dll(版本1.1)

现在我将我的dll提供给第三方。我的dll是用1.1“api”dll构建的。

现在第三方更改了他们的dll版本,这也在他们的软件中用于版本1.2

在此之后,他们的软件再也无法使用我在1.1版本中编译的dll,直到我用他们的版本1.2 dll重新编译我的插件dll。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

引用您所依赖的程序集的较新版本的程序集的使用者应在其应用程序配置文件中使用<bindingRedirect> element,如下所示:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myDependency"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0"
                             newVersion="2.0.0.0"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

请注意,myDepdendency是您所依赖的已升级的程序集的名称。

这在Entity Framework和ASP.NET MVC中常用;通过NuGet添加它们通常会导致上述部分被添加到您的应用程序配置文件中。