【问题标题】:Can't access namespaces from Nuget Package无法从 Nuget 包访问命名空间
【发布时间】: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


【解决方案1】:

错误是 Visual Studio 上的一些视觉错误。我不小心点击了运行,它运行成功,但屏幕上仍然出现错误。然后它完全忽略了。

然后我手动删除了“bin”和“obj”文件夹,一切恢复正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多