【发布时间】:2011-09-19 10:31:47
【问题描述】:
当我添加对 .dll 文件的引用时,项目的编译输出会发生什么变化?
(想象一下我添加了一个引用并重建。)
【问题讨论】:
-
您的意思是添加对 .csproj/.vbproj 文件的引用还是添加对 .dll 文件的引用?
标签: .net compilation assemblies ildasm
当我添加对 .dll 文件的引用时,项目的编译输出会发生什么变化?
(想象一下我添加了一个引用并重建。)
【问题讨论】:
标签: .net compilation assemblies ildasm
如果它是只是一个引用(并假设 dll 是一个程序集) - 无论如何都没有;未使用的引用被编译器静默删除,在您的场景中,您没有添加任何使用程序集的代码(即一些使用新 dll 中的类型的代码)。请注意,我在这里做出了轻微 假设,即新 dll(在已使用的命名空间中)中没有扩展方法,可以更好地匹配现有扩展方法的使用。
如果您已将引用标记为 Copy Local = True,那么在您的输出目录中您将获得额外的 dll(但在内部,您的程序集不会正式引用它 - 该引用仍然被删除如果您的代码没有触及程序集)。
【讨论】:
manifest 将记录对.dll 文件的引用——如果不使用,编译器将在编译的manifest 中删除该引用。所以,在这种情况下,没有影响。
如果您在此库中定义了任何扩展方法,为您现有的(未修改的)代码提供更好的匹配,则构成对该库的使用,并且将使用扩展方法。
如果这不是一个 .NET 程序集,而是一个 com/com+ dll,也会生成一个包装器。
关于已编译程序集的 MSIL 部分,其他任何内容都不应更改。
【讨论】: