20

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

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

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

那么,应该怎么做呢?

4

1 回答 1

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.

于 2020-01-30T16:09:07.193 回答