什么是NuGet以及它是如何工作的?[扩展实体框架]

Meh*_*rad 2 .net entity-framework visual-studio nuget nuget-package

直到最近我才把我的项目的.NET版本从4.5降级到4.0并且Visual Studio开始抱怨某些NuGet软件包需要EntityFramework重新安装再次工作,我从未摆弄过NuGet .所以我去了PM> Update-Package -reinstall EntityFramework,我被分类了.

所以,既然你知道我是如何实现这一点的,那么这些都是我的问题.

  1. 我很确定我没有在我的Visual Studio Express 2013上安装NuGet .它是Visual Studio的默认功能吗?
  2. 我没有EntityFramework在我的解决方案中添加NuGet包.NuGet是否发现我的解决方案需要什么,并自动添加它们?在我的解决方案中,我正在使用EntityKeyEntityState枚举,这需要using System.Data.Entity&using System.Data.Entity.Core.当抱怨没有找到这两个枚举时,Visual Studio添加了这两个命名空间,就像你使用一些LINQ一样,而你却没有using System.Linq.
  3. 实体框架的描述称"实体框架是微软推荐的新应用数据访问技术".这是第三方图书馆吗?我尽量不要使用第三方库.我还发现EntityFramework.dll现已添加到我的bin\Release文件夹中,我想我需要将它附加到我的可执行文件才能使其正常工作.
  4. 除了在引用中添加所需的第三方dll之外,NuGet还做了什么吗?我记得我过去使用过Log4Net,并没有使用NuGet的"添加软件包"功能.

Aar*_*nLS 5

  1. 默认情况下,NuGet附带Visual Studio.

  2. 一些项目模板(当您使用New Project时)默认包含实体框架.

  3. 取决于您如何定义第三方.它是一个Microsoft库.如果您将第三方定义为您或您的客户未写入的任何内容,它也是第三方库.实体框架实际上现在是开源的,但我很确定nuget包是由Microsoft构建和发布的.

  4. 除了添加DLL引用之外,某些包还可能应用转换,例如向配置文件添加默认设置,或向项目添加文件(如代码或内容文件).

我从来没有碰到任何大问题,但如果你有一个非常大的项目,我会制作一个备份副本,或者确保你在添加一个你以前从未使用过的新软件包之前已经检查了源代码控制.通常卸载一个软件包后会很好地进行清理,但Nuget软件包的质量会有所不同,具体取决于谁创作它们以及它们有多复杂.