Насколько дорогая ссылка на DLL?

Либо локальные, либо глобальные (GAC / .NET) ссылки на DLL, насколько они дороги?

Конечно, мы никогда не должны ссылаться на вещи, которые мы не используем, но для любопытства я спрашиваю: будет ли это большой проблемой производительности, касающейся всей платформы.NET?

Похожий, более практичный вопрос: стоит ли комбинировать похожие пространства имен в проектах, чтобы минимизировать DLL-файлы, на которые нужно сослаться (если в любом случае мне придется использовать каждый код в этих DLL)?

1 ответ

Решение

Ссылка загружается только при выполнении метода, который использует тип из.dll, на который есть ссылка. Таким образом, даже если вы ссылаетесь на всю платформу.NET, она не будет загружена автоматически.

class Program
{
    static void Main(string[] args)
    {
        AppDomain.CurrentDomain.AssemblyLoad += CurrentDomain_AssemblyLoad;
        Console.WriteLine("=====Working with URI...=====");
        WorkWithUri();

        Console.WriteLine("=====Working with XML...=====");
        WorkWithXml();
    }

    private static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
    {
        Console.WriteLine(args.LoadedAssembly.FullName + " has been loaded.");
    }

    private static void WorkWithUri()
    {
        var uri = new Uri("c:\\");
    }

    private static void WorkWithXml()
    {
        XDocument xml = new XDocument();
    }
}

И вывод:

=====Working with URI...=====
System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 has been loaded.
=====Working with XML...=====
System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 has been loaded.
System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 has been loaded.
System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 has been loaded.
Press any key to continue . . .
Другие вопросы по тегам