Visual Studio 2017 中引用和依赖项之间的区别

Difference between References and Dependencies in Visual Studio 2017

当我在 Visual Studio 2017 年创建一个新的 ASP.NET Web 应用程序时,我最终得到一个包含 References 元素的解决方案资源管理器。

当我在 Visual Studio 2017 年创建一个新的 ASP.NET 核心 Web 应用程序时,我最终得到一个包含 Dependencies 元素的解决方案资源管理器。此外,在这种情况下,NuGet 没有创建本地 packages 文件夹。

为什么会有这种差异? ASP.Net Web 应用程序解决方案是否可以使用相同的 Dependencies 元素?

Why this difference ?

它们基本上没什么区别,都是用来存储和管理引用的。正如Lex所说,Dependencies是一种更好的方式来表示不同类型的引用,我们可以清楚地知道引用来自哪里,SDK,nuget等,以便我们管理我们的更有效地引用。

查看来自 Introduction to ASP.NET Core 的信息:

ASP.NET Core is a redesign of ASP.NET 4.x, with architectural changes that result in a leaner, more modular framework.

.

Is it possible to have this same Dependencies element with the ASP.Net Web Application solution ?

由于 GitHub 关于 ASP.NET(非核心)应用程序支持新的 csproj 格式还有很多未解决的问题。我们无法将 ASP.Net Web 应用程序更改为新的项目类型,我们无法使用与 ASP.Net Web 应用程序相同的 Dependencies 元素。

但如果您有兴趣,可以查看 如何转换为新的项目类型。

希望这对您有所帮助。

显示差异:

您在解决方案资源管理器中查看项目的方式取决于其 .csproj 文件的格式。 在旧格式(xml 2003 或类似格式)中,您有一个 References 子树,其中显示了每个项目引用、包依赖项、系统框架引用和第三方库。

在新格式中,您有一个 Dependencies 子树,而每个不同类型的依赖项又都有一个子树。

两者的实现方式存在一些差异,但通常唯一的大区别(如果您不进入 .csproj 文件等)是它们在解决方案资源管理器中的显示方式。

请注意,此显示项目相关,因此同一解决方案中的不同项目可以有不同的显示。

NuGet 包:

您的 NuGet 包的使用和恢复的差异来自以下方面。旧格式默认使用 packages.config 配置,这意味着每个项目都将所有需要的包保存在本地缓存中。 另一方面,新格式默认使用 Package Reference 配置,其中解决方案中的所有包都还原到用户目录中的中央缓存(通常在 %user%/.nuget/packages)。