程序集的版本控制问题

时间:2010-05-09 08:28:59

标签: c# .net vb.net assemblies versioning

我们假设我有两个集合:

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,但如果可能的话,我想远离它。

由于

2 个答案:

答案 0 :(得分:2)

您正在寻找Assembly Binding Redirection - 这是一种可配置的方式来告诉.NET要使用的版本程序集。

答案 1 :(得分:1)

第一个解决方案是Oded已经推荐的装配绑定重定向 如果你有一个较小的.dll并希望使用其较新版本的东西工作,这是有利的。

第二个选项是为接口创建单独的程序集,并仅引用可执行文件中的程序集 这样,您可以允许第三方针对您的库构建内容,而无需为其提供确切的库装配。 (例如,他们无法使用Reflector对其进行反编译,因此这种方式更安全。)
只要接口组件没有改变,您就可以根据需要更改库中的其他内容。