Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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#_.net_Applicationdomain - Fatal编程技术网

C# 获取当前应用程序域中的程序集名称

C# 获取当前应用程序域中的程序集名称,c#,.net,applicationdomain,C#,.net,Applicationdomain,我希望在当前应用程序域中获得程序集友好的名称,因此我编写了如下内容: static void Main(string[] args) { foreach (System.Reflection.Assembly item in AppDomain.CurrentDomain.GetAssemblies()) { Console.WriteLine(item.FullName); } } 但问题是这是我得到的输出

我希望在当前应用程序域中获得程序集友好的名称,因此我编写了如下内容:

static void Main(string[] args)
    {
        foreach (System.Reflection.Assembly item in AppDomain.CurrentDomain.GetAssemblies())
        {
          Console.WriteLine(item.FullName);

        }
    }
但问题是这是我得到的输出,而不是我想要看到的:

mscorlib,版本=2.0.0.0, 文化=中立, PublicKeyToken=b77a5c561934e0 应用程序域,版本=1.0.0.0, 区域性=中性,PublicKeyToken=空

事实上,我期待着这些名字:

有没有人能告诉我我是不是弄错了什么

提前谢谢

或者我期待的名字不是集合

    foreach(var assem in AppDomain.CurrentDomain.GetAssemblies())
    {
        Console.WriteLine(assem.GetName().Name);

    }

GetName()返回具有Name属性的AssemblyName对象。这就是您要寻找的。

当您使用反射时,您不会总是获得漂亮的名称空间名称,而是获得程序集的真实名称

您也不会得到所有引用的库,只有当前加载的库。如果在代码上方添加“XmlDocument foo=new XmlDocument()”,则会显示System.XML

    static void Main(string[] args)
    {
        XmlDocument foo = new XmlDocument();

        foreach (System.Reflection.Assembly item in AppDomain.CurrentDomain.GetAssemblies())
        {
            Console.WriteLine(item.FullName);

        }
    }
输出:

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
ConsoleApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

在运行时无法获取所有引用程序集的列表。即使您在VisualStudio项目中引用它,如果您不使用它们,C#编译器也会忽略它们,因此它们根本不会将其放入您的输出文件(exe/dll)中

对于其余的程序集,它们在实际使用之前不会被加载


AppDomain.CurrentDomain.GetAssemblys()
提供了所有已加载程序集的数组,此列表可能与visual studio项目中的列表非常不同。

使用Assemly.GetName().Name或使用反射查找AssemblyTitleAttribute并使用该值

这仍然返回“MsCorLib”,谢谢你的回答。真诚地