如何:查找程序集的完全限定名
若要在全局程序集缓存中查找某个 .NET Framework 程序集的完全限定名,请使用全局程序集缓存工具 (Gacutil.exe)。 请参阅如何:查看全局程序集缓存的内容。
对于 .NET Core 程序集,以及对于不在全局程序集缓存中的 .NET Framework 程序集,可以通过多种方式获取完全限定的程序集名称:
可使用代码将信息输出到控制台或变量,或者使用 Ildasm.exe (IL 反汇编程序) 检查程序集的元数据(其中包含了完全限定名)。
如果应用程序已加载程序集,则可检索 Assembly.FullName 属性的值在以获取完全限定名。 可以使用该程序集中定义的 Type 的 Assembly 属性来检索对 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