确定特定命名空间的NuGet包

时间:2015-04-09 17:27:26

标签: c# asp.net nuget

一般来说,我们如何确定哪个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包,我们需要添加引用“老式方式”。

  • 系统
  • 的System.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指令或程序集引用?)

1 个答案:

答案 0 :(得分:3)

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

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

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