确定特定命名空间的NuGet包

Sha*_*tin 5 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
Run Code Online (Sandbox Code Playgroud)

有时很难确定要安装的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指令或程序集引用?)

Eri*_*sch 5

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

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

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