如何:查找程序集的完全限定名

若要在全局程序集缓存中查找某个 .NET Framework 程序集的完全限定名,请使用全局程序集缓存工具 (Gacutil.exe)。 请参阅如何:查看全局程序集缓存的内容

对于 .NET Core 程序集,以及对于不在全局程序集缓存中的 .NET Framework 程序集,可以通过多种方式获取完全限定的程序集名称:

  • 可使用代码将信息输出到控制台或变量,或者使用 Ildasm.exe (IL 反汇编程序) 检查程序集的元数据(其中包含了完全限定名)。

  • 如果应用程序已加载程序集,则可检索 Assembly.FullName 属性的值在以获取完全限定名。 可以使用该程序集中定义的 TypeAssembly 属性来检索对 Assembly 对象的引用。 说明如示例所示。

  • 如果知道程序集的文件系统路径,则可调用 static (C#) 或 Shared (Visual Basic) AssemblyName.GetAssemblyName 方法获取完全限定的程序集名称。 下面是一个简单的示例。

    using System;
    using System.Reflection;
    
    public class Example
    {
       public static void Main()
       {
          Console.WriteLine(AssemblyName.GetAssemblyName(@".\UtilityLibrary.dll"));
       }
    }
    // The example displays output like the following:
    //   UtilityLibrary, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null
    
    Imports System.Reflection
    
    Public Module Example
       Public Sub Main
          Console.WriteLine(AssemblyName.GetAssemblyName(".\UtilityLibrary.dll"))
       End Sub
    End Module
    ' The example displays output like the following:
    '   UtilityLibrary, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null
    
  • 可使用 Ildasm.exe(IL 反汇编程序)检查包含完全限定名的程序集元数据。

有关设置程序集属性(如版本、区域性和程序集名称)的详细信息,请参阅设置程序集属性。 有关为程序集提供强名称的详细信息,请参阅创建并使用强名称程序集

示例

下例演示了如何向控制台显示包含指定类的程序集的完全限定名。 它使用 Type.Assembly 属性从该程序集中定义的类型检索对程序集的引用。

#using <System.dll>
#using <System.Data.dll>

using namespace System;
using namespace System::Reflection;

ref class asmname
{
public:
    static void Main()
    {
        Type^ t = System::Data::DataSet::typeid;
        String^ s = t->Assembly->FullName->ToString();
        Console::WriteLine("The fully qualified assembly name " +
            "containing the specified class is {0}.", s);
    }
};

int main()
{
    asmname::Main();
}
using System;
using System.Reflection;

class asmname
{
    public static void Main()
    {
        Type t = typeof(System.Data.DataSet);
        string s = t.Assembly.FullName.ToString();
        Console.WriteLine("The fully qualified assembly name " +
            "containing the specified class is {0}.", s);
    }
}
Imports System.Reflection

Class asmname
    Public Shared Sub Main()
        Dim t As Type = GetType(System.Data.DataSet)
        Dim s As String = t.Assembly.FullName.ToString()
        Console.WriteLine("The fully qualified assembly name " +
            "containing the specified class is {0}.", s)
    End Sub
End Class

请参阅