如何在不编辑webConfig的情况下添加依赖程序集



所以根据我老板的说法,我们不允许编辑webConfig(我知道这很奇怪,对吧?)。我添加了适用于Microsoft.Owin和其他依赖软件包的nuGet软件包。这些包通过对运行时节点的依赖程序集对webConfig进行了更改。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      ...etc...

我的问题是,我可以删除运行时节点及其内容,但在不删除或更改代码的情况下仍然具有相同的功能吗?如果我现在删除节点,我会得到以下错误:

无法加载文件或程序集"Microsoft.Owin,版本=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其一个依赖关系。找到的程序集的清单定义不匹配程序集引用。(HRESULT异常:0x80131040)

每当您在应用程序配置文件中看到bindingRedirect元素时,这意味着您使用的程序集的版本之间存在一些不一致。NuGet系统会自动检测这种不一致性,并添加绑定重定向,以确保至少不会出现编译时错误。当然,在运行时,您可能会遇到问题,因为依赖于旧版本Microsoft.Owin的程序集可能无法与您重定向到的程序集一起正常工作:尤其是当出现一些破坏性更改,并且它试图调用一个不再存在的方法时。唯一的事实是,在安装NuGet时,您在配置文件中添加了绑定重定向,这意味着您可能会遇到问题,并且这个问题可能只有在运行时的特定情况下才会出现。

因此,基本上,我会从查看该项目中所有引用的依赖程序集及其依赖项开始,并试图了解版本的不一致性是从哪里来的。然后,尝试通过查找此程序集的最新版本并使用最新的Microsoft.Owin来消除它。

最新更新