一般来说,我们如何确定哪个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包,我们需要添加引用“老式方式”。
执行上述操作可解决以下所有错误。但是花了一段时间,我想知道下次如何找到合适的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指令或程序集引用?)
答案 0 :(得分:3)
简单地说,没有办法知道......因为没有要求Nuget包发布或提及其命名空间。最重要的是,命名空间可以存在于多个程序集中,这意味着多个Nuget程序包中可以存在相同的命名空间(特别是如果您不知道需要哪个版本)。
例如,仅仅因为我的Nuget包具有System.Web.MVC并不意味着它具有您正在寻找的依赖项。
基本上,您必须知道需要哪些包。这就是packages.conf文件的用途。通过删除它,您删除了所需的信息,以了解所需的程序集和版本。