所以根据我的老板,我们不允许编辑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...
我的问题是我可以删除运行时节点及其内容但仍然具有相同的功能而无需删除或更改代码吗?如果我现在删除节点,我会收到以下错误:
无法加载文件或程序集&#39; Microsoft.Owin,Version = 2.1.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#39;或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
答案 0 :(得分:1)
每当您在应用程序配置文件中看到bindingRedirect
元素时,这意味着您正在使用的程序集版本之间存在一些不一致。 NuGet系统自动检测此不一致性并添加绑定重定向以确保至少您不会收到编译时错误。当然,在运行时,您可能会遇到问题,因为依赖于旧版本Microsoft.Owin
的程序集可能无法按照您要重定向到的那个版本的方式工作:特别是如果有一些重大更改并且它尝试调用一种不再存在的方法。在安装NuGet时,在配置文件中添加了绑定重定向的唯一事实意味着您可能会遇到问题,并且此问题可能仅在运行时的某些特定情况下才会出现。
所以基本上我会首先查看这个项目中引用的所有依赖程序集及其依赖项,并尝试查看这些版本的不一致性来自何处。然后尝试通过查找适用于最新Microsoft.Owin
。