【问题标题】:Embed or reference project嵌入或参考项目
【发布时间】:2014-01-10 15:45:17
【问题描述】:

在 C# 中,我正在创建一个依赖于其他几个库的库。我可以在我的代码中导入这些库的源代码,或者我可以让它们保持原样并引用 .dll。哪种做法更好,哪种做法更快?就将其保留为 .dll 的(不利)优势而言,我的库的最终用户无法自己访问这些库。但这几乎是我在这个主题上所能得到的。

维勒大师

【问题讨论】:

  • 澄清一下,“导入源代码”是指将这些文件作为链接添加,还是将它们复制到您的新项目中?或者,您是否在谈论将相同的“核心”项目纳入不同的解决方案?
  • 我在谈论将文件复制到项目中,保持与引用库相同的功能。

标签: c# dll reference


【解决方案1】:

引用它们,因此如果发布了新版本,您无需再次编译代码,只需替换 DLL。性能问题可以忽略不计。

【讨论】:

  • 听起来合乎逻辑。我之所以考虑它,是因为它可能会提高性能,但是能够替换 DLL 来更新系统的某些部分确实看起来非常有用。感谢您快速明确的回复。
  • 附带说明,某些内容可能仍需要重新编译。 API 变化是显而易见的,但不太明显的是常量。如果您的代码引用了另一个库中的常量,则会将其替换为编译时的值。在新版本的库中对常量的更改不会继续。这就是为什么只读和属性很有价值的部分原因。可能还有更多东西,值得研究,因为 DLL 仍然是最好的答案。
【解决方案2】:

如果您包含外部代码,那么您将获得(一点)性能提升。因为它只有一个要加载的程序集。另一方面,更新这个包含的代码需要一些努力。

当您想从两者中受益时:尝试使用 IL-Merge 作为构建后操作。

【讨论】:

  • 我使用过 ILRepack(这和单声道是一样的)并且对最终产品是一个 dll 非常满意,但仅用于发布版本。所以我想我会坚持下去。感谢您的建议!
  • 因为 Xaqron 的答案更好?由于您的建议,我刚刚使用了 ILRepack,而不是您的回答......
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多