我们假设我有两个集合:
MyExecutable.dll version 1.0.0
MyClassLibrary.dll version 1.0.0
现在,MyExecutable.dll
目前使用MyClassLibrary.dll
的类和方法(包括一些算法)。大多数算法是在运行中制作的,后来我会想要在需要时对其进行优化。这意味着,我不会更改这些类的interface
,但代码本身会看到一些更改。
目前的问题是,MyExecutable.dll
将期待MyClassLibrary.dll 1.0.0
,我希望它使用版本1.0.1(或类似的东西)。我不想重新编译MyExecutable.dll
(因为实际上可能只有一个可执行文件使用MyClassLibrary.dll
)。有这个问题的解决方案吗?我听说过GAC
,但如果可能的话,我想远离它。
由于
答案 0 :(得分:2)
您正在寻找Assembly Binding Redirection
- 这是一种可配置的方式来告诉.NET要使用的版本程序集。
答案 1 :(得分:1)
第一个解决方案是Oded已经推荐的装配绑定重定向 如果你有一个较小的.dll并希望使用其较新版本的东西工作,这是有利的。
第二个选项是为接口创建单独的程序集,并仅引用可执行文件中的程序集
这样,您可以允许第三方针对您的库构建内容,而无需为其提供确切的库装配。 (例如,他们无法使用Reflector对其进行反编译,因此这种方式更安全。)
只要接口组件没有改变,您就可以根据需要更改库中的其他内容。