2

ローカルまたはグローバル (GAC / .NET) DLL 参照のいずれかですが、どれくらいコストがかかりますか?

確かに、使用していないものを参照するべきではありませんが、好奇心のために私は尋ねます。.NET フレームワーク全体を参照すると、パフォーマンスが大きく低下するでしょうか?

同様のより実用的な質問は次のとおりです。プロジェクト内の同様の名前空間を組み合わせて、参照する必要がある DLL ファイルを最小限に抑えることは価値がありますか (いずれにせよ、それらの DLL 内のすべてのコードを使用する必要がある場合)。

4

1 に答える 1

6

参照は、参照された .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 . . .
于 2016-02-16T16:00:58.933 に答える