【发布时间】:2020-08-17 21:07:13
【问题描述】:
我有一个 Identity Server 3 项目,我需要在其中安装几个自定义 Nuget 包,这些包来自我公司的私有 Nuget 包存储库。此 Nuget 已在许多其他 Web 项目中安装并运行,因此很可能不是问题。
当我在 Identity Server Project 上安装包时,日志显示一切正常并且包已成功安装。它列在项目参考中。但是当我尝试在 Identity Server Project 的任何地方访问它时,它就是无法访问的。我无法设置使用引用,也无法通过使用它的完整命名空间 (InstalledNuget.Services.Example) 来调用任何方法。 Visual Studio 的智能感知返回“命名空间‘公司’中不存在类型或命名空间名称(您是否缺少程序集引用?)”。
在调查该问题时,我发现它在项目引用中列出,但不在对象浏览器中。
我试过了:
- 重新安装包;
- 重新启动 Visual Studio;
- 删除packages文件夹,然后再让程序恢复;
我去过这里和其他网站的几个帖子,但没有发现一个问题与这个匹配。有什么提示吗?
【问题讨论】:
-
命名空间是分层的,必须定义所有的父级。因此,当您拥有 System.Net.Socket 时,您将拥有三个命名空间 1) System 2) Net 3) Socket 并且每个命名空间都必须有一个定义。您的公司名称空间丢失或位于错误的父名称下。
-
@jdweng 两者都在名为“Company”的同一个命名空间下。例如,我正在处理的项目称为“Company.Login”,而 Nuget 称为“Company.Parameters”。这就是我们通常的做法。
-
当您创建新项目时,您将看到: namespace ConsoleApplication1 { Here is the namespace} 您的代码缺少公司的类似定义。或者错误发生在不同的模块中,您需要为命名空间添加 using 语句
-
如果您的项目针对的是 nuget 包不支持的 .NET 版本,则可能会发生这种情况。
标签: c# namespaces nuget-package