C# 无法添加对已安装NuGet软件包的引用?
我创建了一个NuGet软件包,并成功地将其安装到另一个.NET解决方案中。但是我无法从另一个.NET解决方案添加对NuGet包的引用 例如,NuGet包有一个命名空间类似于MyCorp.SecurityApi的类。我目前无法在另一个.NET解决方案中为该命名空间添加using指令。例如,C# 无法添加对已安装NuGet软件包的引用?,c#,.net,nuget,nuget-package,C#,.net,Nuget,Nuget Package,我创建了一个NuGet软件包,并成功地将其安装到另一个.NET解决方案中。但是我无法从另一个.NET解决方案添加对NuGet包的引用 例如,NuGet包有一个命名空间类似于MyCorp.SecurityApi的类。我目前无法在另一个.NET解决方案中为该命名空间添加using指令。例如,使用MyCorp.SecurityApi指令返回此编译错误: 找不到类型或命名空间“MyCorp” 知道问题是什么或如何调试它吗?确保在解决方案资源管理器中用“引用”仔细检查“名称空间”名称,无论它是否存在。如果
使用MyCorp.SecurityApi
指令返回此编译错误:
找不到类型或命名空间“MyCorp”
知道问题是什么或如何调试它吗?确保在解决方案资源管理器中用“引用”仔细检查“名称空间”名称,无论它是否存在。如果没有,你应该考虑重新安装。在Nuget Package Manager控制台中使用以下命令:
Update-Package -Id <package_name> –reinstall
更新软件包-Id–重新安装
或将重新安装仅限于特定项目:
Update-Package <package_name> -ProjectName MyProject -reinstall
更新包-ProjectName MyProject-重新安装
如果您仍然无法做到这一点,请尝试手动将相关的.dll添加到项目中,看看它是否正常工作。如果确实如此,那么问题很可能在于nuget包的配置,在这种情况下,我建议您仔细阅读这些内容并缩小问题范围。这是我创建的第一个nuget包。我发现了这个问题,我把这个贴在其他NuGet新手的博客上。在“NuGet包资源管理器”中:
我的NuGet软件包现在在安装后显示在项目引用中。这里的其他人有没有其他优化此过程的建议?我会首先尝试做一个
Update-Package -Id <package_name> –reinstall
更新软件包-Id–重新安装
正如米卡尔在回答中所解释的那样
但在某些情况下,这也可能失败,因为packages
文件夹已损坏。根据平台的不同,它位于不同的路径中:
- 在.NET中,可以在项目目录中找到此文件夹(通常位于解决方案文件
所在的同一文件夹中)*.sln
- 在.NET Core中,您可以通过将以下行粘贴到文件浏览器的路径中找到它(通过WIN+E打开它,然后将上面的行粘贴到路径文本框中): %appdata%\..\...nuget\packages\
删除它后,请确保它不再在Visual Studio中被引用(依赖项)。然后,打开软件包管理器并添加软件包(即,右键单击项目,选择“管理NUGET软件包…”,然后切换到浏览选项卡,选择软件包并单击安装)。问题可能是由于:
- nuget软件包(MyCorp.SecurityApi)的目标框架和试图使用它的应用程序不兼容
- 不兼容的平台架构(即,如果MyCorp.SecurityApi仅为x64,则不能用于构建x86应用程序)
- 某些类的可见性,即,如果类是内部的,则不能仅从MyCorp.SecurityApi程序集使用,也不能从另一个程序集(您的应用程序)使用
我建议您检查上述原因,希望它对您有所帮助确保它已添加到您的解决方案探索者Hanks tj中作为参考。nuget软件包参考显示为已安装在nuget软件包管理器中,但它没有显示为您提到的项目参考。知道问题可能是什么或者如何调试吗?右键单击引用->添加引用:然后为您的包检查该列表。它可能只是没有自动检查。我只是尝试了手动“添加引用”,但没有看到列出的nuget包程序集。似乎我的nuget包的配置方式可能存在更大的问题。你知道我应该寻找什么或者是什么导致了这种断开吗?你的包的目标框架版本是什么?它是否与不安装的解决方案/项目的框架版本匹配?安装它的解决方案/项目如何?如果您正在从Visual Studio解决方案创建NuGet包,则可以在包管理器控制台(“工具”->“NuGet包管理器”->“包管理器控制台”)中发出“NuGet包”命令。这是假设您已经创建了一个NuGet spec文件。如果没有NuGet spec文件,则必须首先创建该文件。可以通过在PackageManager控制台中发出“NuGet spec”来生成模板。NuGet pack将自动为NuGet软件包本身创建必要的文件夹结构。谢谢barry。为了在PM控制台中执行“NuGet spec”,我需要安装或配置什么?在VS2017中,cmd在默认情况下似乎不可用,我尝试安装NuGet.VisualStudio,希望这会有所帮助,但我在PM控制台中仍然收到相同的错误:“NuGet:术语‘NuGet’不被识别为cmdlet、函数、脚本文件或可操作程序的名称。”因此,在PackageManager控制台中,您可以调用命令行工具,如DOS命令。如果要调用“NuGet spec”,则与调用“NuGet.exe spec”相同。这意味着可执行文件NuGet.exe需要位于当前工作目录或系统路径中。您也可以使用完全限定路径调用它,如“c:\whatever\mypath\NuGet.exe spec”。您可能需要在系统中搜索NuGet.exe的副本。我通常看到