c# - 引用同一程序集的不同版本

标签 c# dll build-process assemblies versioning

如果 A 引用程序集 B 1.1 和 C,C 引用 B 1.2,如何避免程序集冲突?

我本来以为 C 的引用会被封装起来,不会造成任何问题,但似乎所有的 dll 都被复制到 bin 中,这就是问题发生的地方。

我了解解决此问题的两种方法是使用 GAC 还是程序集绑定(bind)? GAC 对我来说似乎不是最好的方法,因为我不喜欢假设 dll 在那里,我更喜欢在我的解决方案中引用 lib 目录中的 dll。

在我看来程序集绑定(bind)不可靠的地方,如果一个版本的程序集具有另一个版本没有的功能,这会不会产生问题?


在我的例子中,这是因为我使用的第 3 方 dll 使用的 nHibernate 版本比我自己使用的要旧。

最佳答案

我过去使用 GAC 取得过相同的结果,但您应该质疑您必须引用多个版本的原因,并尽可能避免这样做。如果你必须这样做,一个 binding redirect可能对您有所帮助。

还有,你读过this吗?还没有?

关于c# - 引用同一程序集的不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223195/

相关文章:

c++ - “dll_file”可能是 '0' : This does not adhere to the specification for the function 'GetProcAddress'

ant - 如何为 checkstyle 定义抑制定义,同时适用于 ant 和 eclipse

asp.net - 优化ASP.NET网站项目的构建性能?

c# - 为什么 == 实现不为 Guid 调用 Equals?

javascript - 如何在 ASP.NET C# 中显示谷歌地图

c# - 没有可用源的未处理的 System.NotImplementedException?

c# - 无法让 TimeZone 显示长名称而不是缩写 (Xamarin Android)

c++ - 适用于 Windows 的可移植 C/C++ 应用程序的 DLL 依赖项

python - 在 Windows 中链接库

c++ - CMake 中的更新选项(Make 文件)