【问题标题】:Managing class libraries in .NET在 .NET 中管理类库
【发布时间】:2016-01-29 10:39:52
【问题描述】:

我的问题是指 .NET 中引用的类库。 假设我有一个包含 4 个类的类库,用于解决各种任务。

在另一个项目中,我引用了上述类库,并明确使用了整个类库中的一个类。

可执行项目是使用整个类库还是编译器只提取使用的类以避免“不必要的”开销(类库中未使用的其他类)?

我有一个很大的实用类库,我应该把它分成更小的类库还是在使用类库来减少内存空间等时有什么优化?

【问题讨论】:

  • 您对不必要的开销有何期望?相关:stackoverflow.com/questions/801252/…
  • 这里的“大”有多大?你真的注意到任何问题了吗? IMO,在大多数情况下它成为一个问题之前,依赖关系必须非常大。 (移动设备可能是个例外,但我怀疑在大多数移动应用程序中,图像资源等最终会使依赖项相形见绌...)

标签: c# .net


【解决方案1】:

可执行项目是使用整个类库还是 编译器只提取使用的类以避免“不必要的” 开销?

类库编译为 DLL(动态链接库)。要回答您的问题,不,编译器不会从库中“提取”使用的类。 CLR 会在需要时从库中加载类,它不会将运行时不需要的任何内容加载到内存中。

我有一个很大的实用类库,我应该把它分成更多吗 较小的类库或使用时是否有任何优化 类库来减少内存空间等?

基于意见,但您可以按活动拆分实用程序,然后按依赖项引用,这样您在构建应用程序时就不需要释放整个库。

【讨论】:

    【解决方案2】:

    .Net 不会静态链接库,因此引用您的类库的项目不会从类库中“提取”任何内容。

    【讨论】:

      【解决方案3】:

      回答您的问题:该库被完整使用。

      在 C/C++ 中,静态链接库的工作方式不同,只导入必要的代码,但即使使用 C/C++,动态链接库也会使用整个库。

      C# 更接近于动态链接库,因此将使用整个库。

      【讨论】:

        【解决方案4】:

        通常,项目中包含的所有类都将编译到程序集中。但是,您可以在 IDE 中从编译中排除某些类,这会减小程序集的大小。

        是否应该将库拆分为更小的类库主要取决于这些部分是否可以独立使用。但我不会为了优化大小而尝试拆分它。我绝对不会尝试在多个库中拆分仅包含四个类的库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-03
          • 2019-07-06
          • 2012-08-05
          • 2016-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多