Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检索程序集';什么是限定类型名?_C#_Asp.net_Configuration_Powershell_Web Config - Fatal编程技术网

C# 如何检索程序集';什么是限定类型名?

C# 如何检索程序集';什么是限定类型名?,c#,asp.net,configuration,powershell,web-config,C#,Asp.net,Configuration,Powershell,Web Config,如何生成程序集限定类型名称 例如,在配置成员资格提供程序时,我必须在“type”属性中为“SqlMembershipProvider”提供程序集限定的类型名称(在本例中,我从某处复制了以下配置) 如何生成程序集限定类型名称? 是否每次都必须通过检查程序集类型手动键入 查找该信息的最简单方法是使用、加载程序集,并将名称从程序集的清单中复制出来。当在上面的窗口中选择程序集时,清单信息将出现在Reflector的底部窗格中。AFAIK完全限定类型名称包含在类名和程序集签名中。 我认为你无法生成它 类型

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

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

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


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

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();
        }
    }
这是一个很好的(带有源代码的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"

好吧,就像古尔扎尔·纳齐姆写的那样使用它

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

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

在命令中使用add type:

add-type -assemblyname "system.example"

谢谢您,Gulzar使用PowerShell>[System.Web.Security.SqlMembershipProvider]获取程序集限定名的方法|选择{$\uU5.UnderlineingSystemType.AssemblyQualifiedName}System.Web.Security.SqlMembershipProvider,System.Web,版本=2.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a
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"
add-type -assemblyname "system.example"