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

    }

Assembly.GetName() returns an AssemblyName object which has a Name property. That's what you're looking for.

BFree
That still returns "MsCorLib"
FlySwat
Thanks, it is good to know that.
Braveyard
+1  A: 

You won't always get the pretty namespace names when you use reflection, you get the real names of the assemblies.

You also won't get all referenced libraries, only the ones that CURRENTLY loaded. If you add "XmlDocument foo = new XmlDocument()" above your code, System.XML will show up.

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

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

        }
    }

Output:

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
FlySwat
A: 

It's impossible to get list of all referenced assemblies during runtime. Even if you reference it in your visual studio project, if you don't use them, C# compiler will ignore them and therefore they won't make it into your output file (exe/dll) at all.

And for the rest of your assemblies, they won't get loaded until they are actually used.

AppDomain.CurrentDomain.GetAssemblies() gives you array of all loaded assemblies and this list could be very different from what you see in visual studio project.

lubos hasko
Thanks for that great answer. Sincerely.
Braveyard