C# 确定特定命名空间的NuGet包

C# 确定特定命名空间的NuGet包,c#,asp.net,nuget,C#,Asp.net,Nuget,一般来说,我们如何确定哪个NuGet包将包含特定的名称空间 用例 我们正在更改一个项目,以便NuGet处理大部分(如果不是全部的话)引用的程序集。在第一步中,我们删除了*.csproj文件中的所有引用,删除了bin/,删除了现有的packages/和packages.config,并删除了项目中的任何*.dll。在第二步中,我们构建了项目并读取了缺少程序集引用的错误列表。一次一个,我们使用NuGet添加每个缺少的引用。例如 Install-Package Microsoft.AspNet.Mvc

一般来说,我们如何确定哪个NuGet包将包含特定的名称空间

用例 我们正在更改一个项目,以便NuGet处理大部分(如果不是全部的话)引用的程序集。在第一步中,我们删除了
*.csproj
文件中的所有引用,删除了
bin/
,删除了现有的
packages/
packages.config
,并删除了项目中的任何
*.dll
。在第二步中,我们构建了项目并读取了缺少程序集引用的错误列表。一次一个,我们使用NuGet添加每个缺少的引用。例如

Install-Package Microsoft.AspNet.Mvc
Install-Package Microsoft.AspNet.Identity.Core
Install-Package EntityFramework
Install-Package Microsoft.AspNet.Identity.EntityFramework
Install-Package Microsoft.Owin
Install-Package Microsoft.AspNet.Web.Optimization
Install-Package Microsoft.AspNet.Identity.Owin
Install-Package Microsoft.Owin.Host.SystemWeb
有时很难确定要安装什么NuGet软件包。其他时候没有NuGet包,我们需要以“老式方式”添加引用

  • 系统
  • 系统.Web
  • Microsoft.CSharp
执行上述操作解决了以下所有错误。不过,这花了一段时间,我想知道下次如何找到合适的NuGet软件包

命名空间“System”中不存在类型或命名空间名称“Web”(是否缺少程序集引用?)

找不到类型或命名空间名称“UserManager”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“RouteCollection”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“RequiredAttribute”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“Required”(是否缺少using指令或程序集引用?)

命名空间“Microsoft”中不存在类型或命名空间名称“Owin”(是否缺少程序集引用?)

找不到类型或命名空间名称“IUserStore”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IOwinContext”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IdentityUser”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“Display”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“DisplayAttribute”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“EmailAddress”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“EmailAddressAttribute”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“HttpPost”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“HttpPostAttribute”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IAppBuilder”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IDataProtectionProvider”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IdentityDbContext”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IdentityFactoryOptions”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“IdentityResult”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“DataTypeAttribute”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“DataType”(是否缺少using指令或程序集引用?)

命名空间“System”中不存在类型或命名空间名称“Data”(是否缺少程序集引用?)

找不到类型或命名空间名称“Controller”(是否缺少using指令或程序集引用?)

命名空间“System”中不存在类型或命名空间名称“ComponentModel”(是否缺少程序集引用?)

找不到类型或命名空间名称“CompareAttribute”(是否缺少using指令或程序集引用?)

命名空间“Microsoft”中不存在类型或命名空间名称“AspNet”(是否缺少程序集引用?)

找不到类型或命名空间名称“ActionResult”(是否缺少using指令或程序集引用?)


简单地说,没有办法知道。。。因为不要求NuGet包发布或提及其名称空间。最重要的是,名称空间可以跨多个程序集存在,这意味着同一名称空间可以存在于多个NuGet包中(特别是当您不知道需要哪个版本时)

例如,仅仅因为我的NuGet软件包有System.Web.MVC,并不意味着它有您正在寻找的依赖项


基本上,你必须知道你需要哪些软件包。这就是packages.conf文件的用途。通过删除这些内容,您就删除了了解需要哪些程序集和版本的信息。

在MSDN上可以找到大部分此类信息,通常是搜索类名的Google/Bing搜索结果。例如,它告诉您它在System.Web.Mvc.dll中。如果您创建一个新的虚拟VS 2013 ASP.NET项目,您将获得数量惊人的默认NuGet软件包,因此您可以在这些目录中查找,很有可能找到一个包含您要查找的DLL的。ReSharper有助于: