如果应用程序在编译期间将未使用的 DLL 引用(框架 dll)添加到项目中,会有什么影响?
比如,它会增加装配尺寸吗?它会在运行时加载那些 DLL 吗?ETC
这个问题与优化无关。这是为了更好地理解 .NET 基础结构。
不,C# 编译器仅将程序集引用放入最终程序集中,用于包含在代码中实际使用的类型的程序集。添加未使用的程序集的唯一影响是编译本身的速度非常缓慢。
您可以使用 ildasm.exe 亲自查看。在最终程序集上运行它,双击清单并查找.assembly
指令。
这也在运行时进行了高度优化,程序集由即时编译器加载。仅当您实际调用该程序集中的某个类型的方法时才会这样做。
根据MSDN Q&A,引用它会增加你的程序集大小,但是,using
语句是在编译时评估的(见下文)。
using
陈述。在编译时,以下内容:
public class MyClass
{
public static void DoNothing(int nil)
{ }
}
将被翻译成:
using System;
public class MyClass
{
public static void DoNothing(Int32 nil)
{ }
}
这将进一步翻译成:
public class MyClass
{
public static void DoNothing(System.Int32 nil)
{ }
}