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

时间:2019-02-02 18:31:57

标签: .net visual-studio nuget nuget-package csproj

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

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

为什么会有这种区别?可以在ASP.Net Web应用程序解决方案中使用相同的Dependencies元素吗?

2 个答案:

答案 0 :(得分:2)

  

为什么会有这种区别?

它们基本上没有什么不同,它们用于存储和管理引用。就像Lex所说的那样, Dependencies 是表示不同类型引用的一种更好的方法,我们可以清楚地知道引用的来源,SDK,nuget等,以便我们可以更有效地管理引用。

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

  

ASP.NET Core是对ASP.NET 4.x的重新设计,具有体系结构更改   从而形成了更精简,更模块化的框架。

  

ASP.Net Web应用程序解决方案是否可以具有相同的Dependencies元素?

由于在GitHub上仍然存在大量关于ASP.NET(非核心)应用程序支持新的csproj格式的公开问题。我们无法将ASP.Net Web应用程序更改为新的项目类型,我们无法与ASP.Net Web应用程序具有相同的Dependencies元素。

但是,如果您有兴趣,可以检查this thread,了解如何转换为新项目类型。

希望这会有所帮助。

答案 1 :(得分:2)

显示差异:

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

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

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

请注意,此显示是与项目相关的,因此您可以在同一解决方案中为不同项目使用不同的显示。

NuGet软件包:

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