如何生成程序集限定类型名称?
例如,在配置成员资格提供程序时,我必须在“type”属性中为“SqlMembershipProvider”提供程序集限定类型名称(在此示例中,我已从某处复制了以下配置)。
如何生成该程序集限定类型名称? 是否必须通过检查装配类型每次手动输入?
<membership> <providers> <clear /> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer"/> </providers> </membership>
[更新] :Simpler PowerShell version
PS>([System.String]).AssemblyQualifiedName
System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
答案 0 :(得分:8)
这是一个很好的handy tool(带有源代码的shell扩展),用于通过右键单击任何程序集将完全限定名称复制到剪贴板。
更新:在看到dance2die的评论后,考虑将一个示例PowerShell脚本放在一起,将类型名称导出到csv文件。
> [System.Reflection.Assembly]::LoadWithPartialName("System.Web")
> [System.Web.Security.SqlMembershipProvider] | select {$_.UnderlyingSystemType.AssemblyQualifiedName } | export-csv c:\typenames.csv
使用C#,如果要生成具有所有引用集的程序集限定类型名称,则可以使用反射轻松构建测试脚本。
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"
答案 1 :(得分:3)
查找该信息的最简单方法是使用Reflector,加载程序集,并将Name
复制出程序集的清单。当在上面的窗口中选择了程序集时,清单信息将位于Reflector的底部窗格中。
答案 2 :(得分:1)
好吧就像Gulzar Nazim写的那样使用它
$ String typeName = typeof(AssemblyName.ClassName).AssemblyQualifiedName);
为您提供可在type.getType()中使用的全名; 这适用于我,不再为null
答案 3 :(得分:0)
AFAIK完全限定类型名称包含类名和程序集签名。 我认为你不能生成它......
类型是名称空间。
您可以在AssemblyInfo.cs中设置它的版本(删除*以使其保持不变)
您在项目属性中设置的公钥令牌。
这是我记得的
获取程序集限定名称的其他方法可以是:
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();
}
}
答案 4 :(得分:0)
在命令中使用add type:
add-type -assemblyname "system.example"