【问题标题】:What is the impact of adding a reference on compiled code?添加对编译代码的引用有什么影响?
【发布时间】:2011-09-19 10:31:47
【问题描述】:

当我添加对 .dll 文件的引用时,项目的编译输出会发生什么变化?

(想象一下我添加了一个引用并重建。)

【问题讨论】:

  • 您的意思是添加对 .csproj/.vbproj 文件的引用还是添加对 .dll 文件的引用?

标签: .net compilation assemblies ildasm


【解决方案1】:

如果它是只是一个引用(并假设 dll 是一个程序集) - 无论如何都没有;未使用的引用被编译器静默删除,在您的场景中,您没有添加任何使用程序集的代码(即一些使用新 dll 中的类型的代码)。请注意,我在这里做出了轻微 假设,即新 dll(在已使用的命名空间中)中没有扩展方法,可以更好地匹配现有扩展方法的使用。

如果您已将引用标记为 Copy Local = True,那么在您的输出目录中您将获得额外的 dll(但在内部,您的程序集不会正式引用它 - 该引用仍然被删除如果您的代码没有触及程序集)。

【讨论】:

    【解决方案2】:

    manifest 将记录对.dll 文件的引用——如果不使用,编译器将在编译的manifest 中删除该引用。所以,在这种情况下,没有影响。

    如果您在此库中定义了任何扩展方法,为您现有的(未修改的)代码提供更好的匹配,则构成对该库的使用,并且将使用扩展方法。

    如果这不是一个 .NET 程序集,而是一个 com/com+ dll,也会生成一个包装器。

    关于已编译程序集的 MSIL 部分,其他任何内容都不应更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      • 1970-01-01
      相关资源
      最近更新 更多