.Net Core:使用指令而不添加包?

.Net Core: Using Directive Without Adding Package?

例如,当我在 Startup.cs 文件中添加配置 (IConfigurationRoot) 时,这发生在我身上,以便能够访问具有连接字符串的 appsettings.json 文件。

所以我第一次写IConfigurationRoot时明显标记为无法识别,所以我将鼠标放在它上面并展开灯泡的Visual Studio建议,它们是:

因此,如果我选择 "using Microsoft.Extensions.Configuration",则会在我的文件顶部添加一个 using 指令,并且 VS 会识别 IConfigurationRoot,一切正常。但是查看我项目中的References,并没有添加这个库:

No Reference Added

所以如果我没有选择 using 指令,而是选择 "Add package Microsoft.Extensions.Configuration.Abstractions 1.1.0",Visual Studio 也添加了 using 指令,但另外它添加了一个新的参考:

Reference Added

我不明白为什么会这样,为什么添加 using 指令(第一个建议)工作正常,是因为引用已经包含在另一个库中了吗?如果是这样,我为什么要单独添加包? .单独添加它更好吗?,如果我这样做会发生什么,我是否添加了对同一个库的引用两次?

提前致谢。

...是因为引用已经包含在另一个库中了吗?

是的,在 Microsoft.Extensions.Configuration.FileExtensions 或 Microsoft.Extensions.Configuration.Json 下查看,您最终会找到抽象包。

如果是这样,为什么要单独添加包?

没有必要。灯泡工具可能跟不上整个包依赖项的速度。

是不是单独添加比较好?

不一定,但是如果您删除了其中一些基础包,然后从 Nuget 中单独添加它会确保它会保留。

如果我这样做会发生什么,我是否添加了对同一个库的引用两次?

以间接的方式,是的,但没有坏处。依赖关系树视图深入到每一层的依赖关系。如果开始扩展这些节点,您会看到很多 "duplicates"。