为什么visual studio 2012会在mvc项目中自动使用nuget包?

fej*_*oco 5 asp.net-mvc nuget visual-studio-2012

我很了解Visual Studio 2010,当我开始使用Visual Studio 2012时,我注意到它自动使用Nuget,我之前没有使用过,我只知道它是一个从Internet上获取库的包管理器.例如,当我创建一个空的ASP.NET MVC 4项目时,该项目将包含一个包含11个条目的packages.config文件,并且解决方案文件夹下将有一个包含11个库的packages目录.

以下是我没有得到的东西.

第一个可能是一个修辞问题,但为什么呢?即使一个空项目包含10多MB的包,即使我不使用任何包,它看起来也很愚蠢.

例如,包下有一个System.Web.Mvc.dll.但它也在我的GAC中,它是我认为的.NET框架中不可或缺的一部分.两者都是完全相同的版本(4.0.20710.0),但文件不同.为什么我的项目使用Nuget而不是.NET/GAC的DLL?为什么文件不同?如果我将我的项目部署到IIS服务器,也会有这个DLL的副本,因此将这些DLL作为项目的一部分似乎完全没用.更不用说它使我的部署包变得臃肿.

顺便说一句臃肿.有一个对Newtonsoft.Json.4.5.11的引用,它本身就是8+ MB,因为它包含.NET 2,3.5,4,Silverlight以及同一个版本的任何版本,总共9个.当我创建我的项目时,我指定我想使用.NET 4.5,所以我很困惑为什么所有这些东西都在我的硬盘上.

最后,这个Nuget是如何与我的项目或解决方案相关的?我在VS中看不到packages文件夹,我在.sln文件中看不到它的任何提及.该项目确实包含文件packages.config,但它与构建过程无关,它看起来像是自重.我问这个是因为如果有一些对Nuget的引用,我可以轻松删除它,但是没有引用,所以我感到困惑.

Dar*_*rov 3

第一个可能是一个反问句,但为什么呢?即使一个空项目包含 10+ MB 的包,即使我不使用任何包,这看起来也很愚蠢。

我完全同意你的看法。默认的项目模板充满了很多废话。

这就是为什么我在开始新应用程序时总是使用空 ASP.NET 应用程序模板的原因。然后我在解决方案上启用 NuGet 包还原并手动安装我需要的所有包 -> ASP.NET MVC、Razor,...

例如,packages下有一个System.Web.Mvc.dll。但它也在我的 GAC 中,我认为它是 .NET 框架不可或缺的一部分。

不,它不是 .NET 的一部分。它是 Visual Studio 的一部分,也可以单独安装。如果没有安装 ASP.NET MVC,服务器上不会有这样的程序集。

有一个对 Newtonsoft.Json.4.5.11 的引用,它本身有 8+ MB,因为它包含 .NET 2、3.5、4、Silverlight 以及同一东西的任何版本,总共 9 个。当我创建项目时,我指定要使用 .NET 4.5,所以我很困惑为什么所有这些东西都在我的硬盘上。

它是 NuGet 包的一部分,已下载到应用程序源代码所在的计算机上,但当您发布应用程序时,只会部署和使用正确的版本。

最后,这个 Nuget 事物与我的项目或解决方案有何关系?我在 VS 中看不到包文件夹,在 .sln 文件中看不到任何提及它的内容。

下载这些包的 NuGet 源在“工具”->“库包管理器”->“包管理器设置/包源”中配置。如此基础