【问题标题】:Running Two Of The Same DLL's In The Same RunTime?在同一运行时运行两个相同的 DLL?
【发布时间】:2011-03-14 22:36:52
【问题描述】:

问题:我有 DLL 形式的开发代码和生产代码,我希望能够比较每个的结果。这一切都需要在同一运行时间内发生。

我正在寻找的内容: 只需加载 dev DLL、存储结果、然后打开 prod dll、存储结果、然后比较两者的结果的代码。

当前策略:我现在正在考虑使用应用程序域,但是我还没有找到任何非常清晰的代码示例来简单地展示如何加载 DLL、运行方法来自该 DLL,并存储来自该 DLL 的结果。应用程序域的概念对我来说仍然是模糊的,因为它似乎在调用它的代码之外非常外部,因此从这种外部应用程序域存储结果对我来说有点混乱。

在任何情况下,我都会对一个简单的示例感兴趣,该示例演示加载 DLL 并从中运行代码、存储结果以及加载同一 DLL 的另一个版本并执行相同的操作。

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 您如何比较结果?如果可以转成文本格式,不就直接写到文件里比较一下吗?
  • @Chris 通读了这两个问题,我认为这不合适。
  • @Kragen:考虑到问题是关于如何引用同一程序集的不同版本。链接问题的最佳答案引用了一篇关于使用外部别名的文章。我认为没有这里分歧很大。两者之间唯一真正的区别是这个 OP 想要存储一些结果,这是他加载程序集问题的次要问题。

标签: c# .net dll


【解决方案1】:

我建议阅读this article。他们的示例使用extern alias 指定同一个DLL 的两个不同版本。

在您的 using 部分上方创建别名:

extern alias oldVer;
extern alias newVer;
using System;
.
.
.

添加您的参考资料并为每个参考资料指定适当的别名。您可以在其属性中指定要与 Reference 一起使用的别名:

一旦有了别名,您就可以执行以下操作:

Console.WriteLine(oldVer::MyLibrary.MyClass.method());

Console.WriteLine(newVer::MyLibrary.MyClass.method());

【讨论】:

  • 我按照你的步骤,构建了一堆代码,然后运行它,我得到了以下错误:外部别名“MyAlias”没有在你的 /reference 选项中指定。有任何想法吗?谢谢!
  • 如果你去你的项目属性下的编译选项,你应该可以在那里指定别名,我认为这可以解决这个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2019-04-03
  • 1970-01-01
  • 2020-03-28
  • 2011-09-09
  • 2017-07-26
相关资源
最近更新 更多