以下是我没有得到的东西.
第一个可能是一个修辞问题,但为什么呢?即使一个空项目包含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的引用,我可以轻松删除它,但是没有引用,所以我感到困惑.
解决方法
The first may be a rhetorical question,but why? Even an empty project
contains 10+ MB of packages,even if I don’t use any,it seems very
silly.
这就是为什么我在启动新应用程序时总是使用Empty ASP.NET应用程序模板的原因.然后我在解决方案上启用NuGet包恢复并手动安装我需要的所有包 – > ASP.NET MVC,Razor,……
There is,for example,a System.Web.Mvc.dll under packages. But it is
also in my GAC,it’s an integral part of the .NET framework I think.
不,它不是.NET的一部分.它是Visual Studio的一部分,还有一个单独的安装.如果未安装ASP.NET MVC,则在服务器上将不会有此类程序集.
There is a reference to Newtonsoft.Json.4.5.11,which is 8+ MB in
itself,because it contains .NET 2,Silverlight and whatever
versions of the same thing,9 in total. When I create my project,I
specify that I want to use .NET 4.5,so I’m very confused why all that
stuff is on my hard drive at all.
它是在您的应用程序源代码所在的机器上下载的NuGet包的一部分,但是当您发布应用程序时,只会部署和使用正确的版本.
Finally,how is this Nuget thing related to my project or solution? I
cannot see the packages folder in VS,I cannot see any mention of it
in the .sln file.
下载这些包的NuGet源在Tools-> Library Package Manager-> Package Manager Settings / Package Sources中配置.如此基础