我应该使用什么而不是LoadWithPartialName()?

时间:2009-07-14 12:08:58

标签: c# reflection obsolete

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

有一个Load(字符串),询问“全名”,如果我理解正确的MSDN文档,则包含版本号等内容。

还有一个Load(string,Evidence)接受“显示名称”。问题是我不知道“显示名称”是什么,因为我在第一个函数中使用的“部分名称”似乎不起作用。

那么,应该怎么做呢?

2 个答案:

答案 0 :(得分:10)

以下文章解释了为什么它已过时: http://blogs.msdn.com/suzcook/archive/2003/05/30/57159.aspx

底线是:使用Load并为其提供版本号。

答案 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