我们需要限制.net核心库中的依赖关系吗?

本文关键字:依赖 关系 核心 net 我们 | 更新日期: 2023-09-27 18:12:38

我有一个全。net编写的库,我正在将它移植到。net Core。我打算使它的目标是。netstandard1.1(为了也与。net 45兼容)。

当我用visual studio创建项目时,它会自动依赖于NETStandard。库nuget包。

我的库只需要两个包:

  • 系统。运行时
  • System.Runtime.InteropServices

两个问题:

  1. 我需要将我的项目依赖项限制为只有这两个包吗?换句话说:nuget(或visual studio或其他神奇的东西)可能会设法限制自己只需要的包,而不是完整的NETStandard.Library?

  2. 如果第一个问题的答案是否定的,那么执行该限制是一个好主意吗?

提前感谢。(对不起,我的英语不是母语)

我们需要限制.net核心库中的依赖关系吗?

你的问题有几个方面……

  1. netstandard1.1框架的选择将限制你在编辑器(这里是VS Code)中可用的API表面。刚刚用File.OpenRead在VS代码上测试了netstandard1.1(不可用)和netstandard1.6(可用)。
  2. NETStandard.Library依赖(1.6版本对这两种情况都很好)是一个包依赖。一旦程序集被编译,程序集本身将声明实际使用的外部程序集(又称引用程序集)。运行时和System.Linq),而不是NETStandard.Library元包中的所有程序集。

只要你没有为NuGet打包它,汇编引用限制就会为你完成。但是NuGet包会引用NETStandard.Library

如果你使用NuGet,并且这种减少对你很重要,我想正确的术语是NuGet依赖项修剪,这里解释了一个手动过程(简短的版本:从元包中复制所有引用并删除所有你不使用的)。

  1. 我不确定这是否是一个VS的错误,但似乎VS不喜欢建立一个库,没有一个NETStandard.Library包包括:)所以,没有。
  2. 除非你使用Visual Studio Code或Notepad等,否则这会减慢你的开发速度,因为VS会阻止你构建项目等。所以,还是不行。

底线。过早的优化可能会带来更多的问题而不是好处。首先移植你的库,然后再检查你是否需要优化它。