【问题标题】:What should I use instead of LoadWithPartialName()?我应该使用什么来代替 LoadWithPartialName()?
【发布时间】:2009-07-14 12:08:57
【问题描述】:

我正在使用 LoadWithPartialName() 加载程序集,但 VS 告诉我它已过时并改用 Load()。但是,我找不到任何方便的重载。

有一个 Load(string) 要求输入一个“全名”,如果我对 MSDN 文档的理解正确,它包括版本号等内容。

还有一个接受“显示名称”的负载(字符串,证据)。问题是我根本不知道“显示名称”是什么,因为我在第一个函数中使用的“部分名称”似乎不起作用。

那么,应该怎么做呢?

【问题讨论】:

  • 不要为“证据”而烦恼。它也被淘汰了。

标签: c# reflection obsolete


【解决方案1】:

这就是我所做的。作为示例,我将“Microsoft.AnalysisServices”加载到 PowerShell 中。

  1. 打开包含程序集的 GAC 文件夹。它可以是以下任何一种:
    • C:\Windows\Microsoft.NET\assembly\GAC_32
    • C:\Windows\Microsoft.NET\assembly\GAC_64
    • C:\Windows\Microsoft.NET\assembly\GAC_MSIL
  2. 在该文件夹中,打开您的程序集的文件夹。
  3. 在该文件夹中,您将看到另一个文件夹,如下所示:
    • v4.0_15.0.0.0__89845dcd8080cc91
  4. 将其分解为组成部分:
    • v4.0(我认为这是 .NET 版本,但这里不需要。)
    • 15.0.0.0(这是你要找的版本)
    • 89845dcd8080cc91(这是公钥)
  5. 现在你可以创建你的程序集字符串了。

    [System.Reflection.Assembly]::Load("Microsoft.AnalysisServices, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")
    

对于 .NET 程序集,Culture 始终为 neutral

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 2010-12-06
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多