无法添加对已安装的nuget包的引用?

时间:2018-05-30 18:43:22

标签: c# .net nuget nuget-package

我创建了一个NuGet包,并且能够在另一个.NET解决方案中成功安装它。但是我无法从其他.NET解决方案中添加对NuGet包的引用。例如,假设NuGet包中有一个类名为MyCorp.SecurityApi的类。我目前无法在我的其他.NET解决方案中为该命名空间添加using指令。例如,以下using指令返回“无法找到类型或名称空间'MyCorp'的编译错误”:

using MyCorp.SecurityApi;

知道问题可能是什么或如何调试?

4 个答案:

答案 0 :(得分:2)

问题可能是由于:

  • 不兼容的nuget软件包(MyCorp.SecurityApi)的目标框架和尝试使用它的应用程序
  • 不兼容的平台体系结构(即,如果MyCorp.SecurityApi仅是x64,则不能用于构建x86应用程序)
  • 某些类的可见性,即,如果类是内部类,则只能在MyCorp.SecurityApi程序集中使用,而不能在其他程序集(您的应用程序)中使用。

我建议您检查上述原因,希望对您有帮助

答案 1 :(得分:1)

确保在解决方案资源管理器中使用“引用”仔细检查“命名空间”名称,无论它是否存在。如果没有,您应该考虑重新安装。在Nuget Package Manager控制台中使用以下命令:

Update-Package -Id <package_name> –reinstall

或者这仅限于重新安装到特定项目:

Update-Package <package_name> -ProjectName MyProject -reinstall

如果您仍然无法做到这一点,请尝试手动将相关的.dll添加到项目中,看看它是否正常工作。如果它确实比最可能的问题在于该nuget包的配置,在这种情况下,我建议你仔细检查这些docs并缩小问题范围。

答案 2 :(得分:1)

我会先尝试做一个

Update-Package -Id <package_name> –reinstall

如Mikaal的回答所述。

但是在某些情况下,这也可能会失败,因为packages文件夹已损坏。根据平台的不同,它位于不同的路径中:

  • .NET 中,可以在项目目录中找到该文件夹​​(通常在解决方案文件*.sln所在的文件夹中)。

  • .NET Core 中,您可以通过将以下行粘贴到文件浏览器的路径中找到它(通过 WIN + E < / kbd>,然后将上面的行粘贴到路径文本框中):

    %appdata%\ .. \ .. \。nuget \ packages \

在那里,尝试找到该程序包,并删除文件夹及其内容。如果您转到Visual Studio中的依赖项,也可以找到路径,单击“程序包”,右键单击该程序包并复制属性窗口中的路径。请注意,您可能需要在删除Visual Studio之前将其关闭,因为文件可能已锁定。

删除它之后,请确保在Visual Studio中不再引用它(依赖项)。然后,打开“程序包管理器”并添加程序包(即右键单击项目,选择“管理NUGET程序包...”,然后切换到“浏览”选项卡,选择程序包并单击“安装”。)

答案 3 :(得分:0)

这是我创建的第一个NuGet包。我想出了这个问题,我正在为其他NuGet新手发布这个问题。在“NuGet Package Explorer”中:

  1. 内容&gt;添加&gt; Lib文件夹
  2. 右键单击“lib”文件夹,然后选择“添加现有文件...”
  3. 在选择文件对话框中,从源解决方案的bin \ _obj中选择所有文件
  4. 我的NuGet包现在在安装后显示在项目参考中。这里有没有其他人有任何额外的技巧来优化这个过程?