【问题标题】:How can I load an assembly without having to know the version? [duplicate]如何在不知道版本的情况下加载程序集? [复制]
【发布时间】:2013-07-11 15:37:07
【问题描述】:

我想从 GAC 加载程序集,但我不知道它的版本。我知道AssemblyNamePublicKeyToken

string dllname="gacname"; //Name os assembly  
AssemblyName name = new AssemblyName(string.Format("{0}, PublicKeyToken=dd3cb1c9aae9ec97" ,dllname));
var x = Assembly.Load(name);

这段代码抛出异常:

无法加载文件或程序集...

dllname 是正确的,因为当我在 AssemblyName 中指定版本时它可以正常工作。

是否可以在不知道版本的情况下做到这一点?

【问题讨论】:

  • @igor - 如果您要求在不知道版本的情况下加载程序集的方法,请在问题中更清楚地说明这一点。您的问题是“...,但我不知道它的版本”;对我来说,这意味着您间接寻求有关如何找到该版本的帮助。

标签: c# gac


【解决方案1】:

您是否尝试过查看 GAC 的内容?您可以通过启动以下命令来做到这一点:

gacutil -l

这应该告诉您程序集的版本。

请阅读 How to: View the Contents of the Global Assembly Cache 的 MSDN 文档

【讨论】:

  • 我不认为这是@igor 所要求的,因为这无助于在不知道版本的情况下加载程序集。
  • 问题的方式是他不知道版本,所以我告诉他如何找到版本。如果@igor 不想知道版本,那么他可能应该在问题中说明这一点。
【解决方案2】:

虽然它已被弃用,但您尝试过Assembly.LoadWithPartialName(dllname); 吗?

【讨论】:

  • 是的,我尝试过并且工作过,但我不能使用已弃用的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2012-02-23
相关资源
最近更新 更多