我们是否需要限制 .NET Core 库中的依赖项?
Do we need to restrict the depencencies in .NET Core libraries?
我有一个完全用 .NET 编写的库,我正在将它移植到 .NET Core。我打算让它以 .netstandard1.1 为目标(以便也与 .NET45 兼容)。
当我使用 visual studio 创建项目时,它会自动依赖于 NETStandard.Library nuget 包。
我的图书馆只需要两个包:
- System.Runtime
- System.Runtime.InteropServices
两个问题:
我是否需要将我的项目依赖项限制为仅这两个包?换句话说:可能是 nuget(或 visual studio 或其他神奇的东西)设法将其自身限制为仅需要的包而不是完整的 NETStandard.Library?
如果第一个问题的答案是否定的,执行该限制是个好主意吗?
提前致谢。
(对不起我的英语,我不是母语人士)
- 我不确定它是否是 VS 的错误,但似乎 VS 不喜欢构建库并且不包含
NETStandard.Library
包:) 所以,不。
- 除非你使用 Visual Studio 代码或记事本等。这会减慢你的开发速度,因为 VS 会阻止你构建项目等。所以,不要再这样了。
底线。
过早的优化可能导致的问题多于好处。先移植你的库,然后才检查你是否需要优化它。
你的问题有几个方面...
netstandard1.1
框架选择会将您在编辑器(此处为 VS Code)中的可用 API 界面限制为该版本可用的内容。刚刚在 VS Code 上使用 File.OpenRead
测试了 netstandard1.1
(不可用)和 netstandard1.6
(可用)。
NETStandard.Library
依赖项(版本 1.6 适用于这两种情况)是一个包依赖项。编译程序集后,程序集本身将声明实际使用的外部程序集(也称为引用程序集)(例如 System.Runtime 和 System.Linq),而不是在 NETStandard.Library
元包中找到的所有程序集.
只要您不为 NuGet 打包它,程序集引用限制无论如何都会为您完成。然而,NuGet 打包会引用 NETStandard.Library
包
如果您使用 NuGet 并且减少对您来说很重要,我猜正确的术语是 NuGet 依赖关系修剪,一个手动过程解释 here(简短版本:从元包中复制所有引用并删除所有你不使用)。
我有一个完全用 .NET 编写的库,我正在将它移植到 .NET Core。我打算让它以 .netstandard1.1 为目标(以便也与 .NET45 兼容)。
当我使用 visual studio 创建项目时,它会自动依赖于 NETStandard.Library nuget 包。
我的图书馆只需要两个包:
- System.Runtime
- System.Runtime.InteropServices
两个问题:
我是否需要将我的项目依赖项限制为仅这两个包?换句话说:可能是 nuget(或 visual studio 或其他神奇的东西)设法将其自身限制为仅需要的包而不是完整的 NETStandard.Library?
如果第一个问题的答案是否定的,执行该限制是个好主意吗?
提前致谢。 (对不起我的英语,我不是母语人士)
- 我不确定它是否是 VS 的错误,但似乎 VS 不喜欢构建库并且不包含
NETStandard.Library
包:) 所以,不。 - 除非你使用 Visual Studio 代码或记事本等。这会减慢你的开发速度,因为 VS 会阻止你构建项目等。所以,不要再这样了。
底线。 过早的优化可能导致的问题多于好处。先移植你的库,然后才检查你是否需要优化它。
你的问题有几个方面...
netstandard1.1
框架选择会将您在编辑器(此处为 VS Code)中的可用 API 界面限制为该版本可用的内容。刚刚在 VS Code 上使用File.OpenRead
测试了netstandard1.1
(不可用)和netstandard1.6
(可用)。NETStandard.Library
依赖项(版本 1.6 适用于这两种情况)是一个包依赖项。编译程序集后,程序集本身将声明实际使用的外部程序集(也称为引用程序集)(例如 System.Runtime 和 System.Linq),而不是在NETStandard.Library
元包中找到的所有程序集.
只要您不为 NuGet 打包它,程序集引用限制无论如何都会为您完成。然而,NuGet 打包会引用 NETStandard.Library
包
如果您使用 NuGet 并且减少对您来说很重要,我猜正确的术语是 NuGet 依赖关系修剪,一个手动过程解释 here(简短版本:从元包中复制所有引用并删除所有你不使用)。