【发布时间】:2016-01-22 21:14:39
【问题描述】:
我有一个需要绑定重定向的 C# 库。库本身引用了一个可执行文件,我已将重定向放在该可执行文件将使用的配置文件中:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="null" culture="neutral"/>
<bindingRedirect oldVersion="0.1" newVersion="0.2"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
exe 运行得非常好并读取重定向。问题是编译器会抛出警告(程序集冲突),因为在编译时库不查看配置文件,因此不知道绑定重定向。
很遗憾,我的域中没有警告。关于如何抑制它的任何想法?或者我如何“强制”我的图书馆知道重定向?
警告的类型为 MSB3277。
【问题讨论】:
-
尝试添加一个 app.config 只重定向到你的库项目。您也可以简单地取消项目设置中的警告。
-
谢谢,不幸的是 app.config 接近失败(编译器仍然没有读取文件)。我没有运气在 Proj Properties -> Build -> Supress 警告中抑制警告,这可能仅适用于代码级警告吗?尝试输入 MSB3277 和 3277。
-
我也遇到过类似的问题,但在我的情况下,它是我的解决方案中链接到同一个库的其他库之一,对我来说,我只是删除了它,因为它没有在该库中使用跨度>
-
警告是好的,一般来说绑定重定向是个坏主意。主要原因是它们让我们回到 DLL 地狱,只能在运行时看到。要调试这些类型的问题,您必须使用 Fusion 日志,并且可能需要很长时间才能弄清楚。我的投票是包括使用 NUGET 的本地副本存储“已批准的 Dll”所需的程序集这更多的是“为什么我们决定将绑定重定向作为最佳实践的替代”......您的环境可能不允许这样做,祝你好运。
标签: c#