如果应用程序在编译期间将未使用的DLL引用(框架dll)添加到项目中,会产生什么影响?
喜欢,它会增加装配尺寸吗?它会在运行时加载这些DLL吗?等
这个问题与优化无关。这是为了更好地理解.NET基础结构。
答案 0 :(得分:5)
不,C#编译器仅将程序集引用放在最终程序集中,以用于包含代码中实际使用的类型的程序集。添加未使用的程序集的唯一影响是编译本身的速度非常轻微。
您可以使用ildasm.exe自行查看。在最终程序集上运行它,双击清单并查找.assembly
指令。
这在运行时也经过了大量优化,程序集由即时编译器加载。只有在实际调用该程序集中的类型方法时才会这样做。
答案 1 :(得分:1)
根据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)
{ }
}