【发布时间】:2015-07-21 19:45:12
【问题描述】:
我搜索了很多,但还没有找到解决方案。
我们为我们的客户提供了许多程序,它们在一个目录中具有共享库 (dll)。但是,如果一个库得到更新,我们必须重新编译所有引用该 dll 的程序。如果我们不这样做,我们的客户端在调用库中的函数时会出错 (The located assembly's manifest definition does not match the assembly reference)。
我们想像往常一样引用一个库,当一个库升级时,程序应该只使用新版本而不是抛出错误。
部分问题在于,该引用在内部使用版本号进行了修复。我的第一个想法是在引用之前删除dll的版本号。但这可能吗?
如果有任何(其他)想法或建议如何绕过参考问题,我将不胜感激。这可能是重复的,但我还没有找到带有解决方案的帖子 - 只是描述原因的帖子。
【问题讨论】:
-
部分答案是使用Assembly Binding Redirect...
-
将共享库打包成一个或多个相互依赖的 NuGet 包,并配置依赖版本号以确保每个包都依赖于其他兼容包。当 dll 发生变化时发布一个新的包。客户端永远不会看到不兼容的文件。在客户端升级单个包也会升级所有其他包