如何检索程序集的限定类型名称?

如何生成程序集限定类型名称?

例如,在配置成员资格提供程序时,我必须在“type”属性中为“SqlMembershipProvider”(在此示例中,我已从某处复制以下配置)提供程序集限定类型名称。

如何生成该程序集限定类型名称? 是否必须通过检查assembly类型每次手动输入?

      

[更新] : 更简单的PowerShell版本

 PS>([System.String]).AssemblyQualifiedName System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 

这是一个非常方便的工具 (带有源代码的shell扩展),用于通过右键单击任何程序集将完全限定名称复制到剪贴板。

更新 :看到dance2die的评论后,考虑将一个示例PowerShell脚本放在一起,将类型名称导出到csv文件。

 > [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > [System.Web.Security.SqlMembershipProvider] | select {$_.UnderlyingSystemType.AssemblyQualifiedName } | export-csv c:\typenames.csv 

使用C#,如果要生成具有所有引用集的程序集限定类型名称,则可以使用reflection轻松构建测试脚本。

 using System; using System.Reflection; ........ Type ty = typeof(System.Web.Security.SqlMembershipProvider); string fullname = ty.AssemblyQualifiedName; //"System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 

查找该信息的最简单方法是使用Reflector ,加载程序集,并将Name从程序集的清单中复制出来。 在上面的窗口中选择assembly时,清单信息将位于Reflector的底部窗格中。

好吧就像Gulzar Nazim写的那样使用它

$ String typeName = typeof(AssemblyName.ClassName).AssemblyQualifiedName);

它为您提供了您可以在type.getType()中使用它的全名; 这适用于我,不再是null

AFAIK全限定类型名称包含类名称和程序集签名。 我认为你不能生成它……

类型是命名空间。

您可以在AssemblyInfo.cs中设置它的版本(删除*以保持相同)

您在Project属性中设置的公钥标记。

这是我记得的

获取程序集限定名称的其他方法可能是:

 class Program { static void Main(string[] args) { string assemblyPath = args[0]; Assembly loadedAssembly = Assembly.LoadFrom(assemblyPath); Module[] modules = loadedAssembly.GetModules(); Console.WriteLine("Assembly: " + loadedAssembly.GetType().Name); foreach (Module module in modules) { Console.WriteLine("Module: {0}\nFullyQualifiedName: {1}", module.Name, module.FullyQualifiedName); Type[] types = module.GetTypes(); foreach (Type type in types) { Console.WriteLine("Type: {0}\n FullName: {1}", type.Name, type.FullName); } } Console.ReadLine(); } } 

在命令中使用add type:

 add-type -assemblyname "system.example"