使用反射加载不同的装配版本

时间:2015-09-13 12:59:50

标签: c# .net-assembly

我正在尝试比较不同库版本的输出,并实现我试图通过反射加载不同版本的库。

我已将不同版本的dll放在项目的子文件夹中。正在复制它们并在部署文件夹中。

我用来加载的代码如下:

var uri = new UriBuilder(Assembly.GetExecutingAssembly().CodeBase);
string dir = Path.GetDirectoryName(Uri.UnescapeDataString(uri.Path));
string path = Path.Combine(dir, $@"mylibrary\{version}.dll");
Assembly library = Assembly.LoadFrom(path);

然而,奇怪的是总是加载库的版本,首先加载。例如。首先加载2.0然后尝试加载1.0意味着2.0再次加载,并且首先加载1.0意味着当我加载2.0之后再次加载1.0。

当我尝试加载另一个版本并查看调试信息时path是正确的,但程序集的CodeBase是较新的库.dll。

知道造成这种情况的原因是什么?

P.S。我已尝试静态绑定extern alias,但由于库是无符号的,因此失败,因此我得到一个错误,即除非签名,否则不能并排加载具有相同名称的程序集。

0 个答案:

没有答案