ChatGPT解决这个技术问题 Extra ChatGPT

如何在本地安装 NuGet 包 .nupkg 文件?

我有一些来自 C# 书籍的 .nupkg 文件。我该如何安装它们?

https://i.stack.imgur.com/RMgIm.jpg


C
Cullub

菜单工具 → 选项 → 包管理器

https://i.stack.imgur.com/BgbB0.png

提供名称和文件夹位置。单击确定。将 NuGet 包文件放在该文件夹中。

在解决方案资源管理器中转到您的项目,右键单击并选择“管理 NuGet 包”。选择新的包源。

https://i.stack.imgur.com/jOthh.png

这是documentation


实际上,我已经做了几次步骤 1。但是当我打开查看已安装的包、更新或最近的包时,我的包没有出现在第 2 步中。
在我的屏幕上,我在“已安装的包”下只有“全部”,而不是“NuGet 官方包源”,而不是我的自定义“newNuget”,它们丢失了。
我正在使用vs2010。刚刚尝试从他们的主页下载并安装最新的 nuget。下载点击下一步下一步...然后错误... M$ 如预期的那样,有一个已知问题的链接,检查,说签名不匹配然后我需要卸载现有的nuget,这很容易修复。好吧,就这样吧。当我重新启动计算机并再次安装时,同样的错误又回来了,签名不匹配......所以现在我被旧版本卡住了,新版本不想安装。
问题已解决。我从 Windows -> 控制面板卸载了 nuget。它没有那样工作。我需要启动 VS 并进入 Tools->Extension Manager ...然后从那里点击卸载 nuget。重新启动VS。然后再次安装nuget,它工作。现在,本地 nupkg 文件也出现了(编辑:它们在“在线”选项卡中,而不是“已安装”选项卡中,我发布的图片中的错误)。谢谢您的帮助 :)
不要忘记从齿轮图标附近的右侧更改包源。您的包裹将显示您在上一个窗口中指定的名称。谢谢
E
Enrico Campidoglio

您还可以使用 Package Manager Console 并通过在 -Source 参数中指定包含包文件的目录的路径来调用 Install-Package cmdlet:

Install-Package SomePackage -Source C:\PathToThePackageDir\

我也可以用命令行工具做类似的事情吗?
是的。 nuget.exe 中也提供了 -Source 选项。例如:nuget install SomePackage -Source C:\PathToThePackageDir
您可能还需要指定 -IncludePrerelease 标志。否则,如果包版本有破折号后缀(例如“-beta1”),Install-Package 将找不到它。
这是一个比公认的答案更直接的答案。谢谢(你的)信息!
不适用于 VS 2017,请参阅 f.ex。由@Granger 回答。
F
Felix Alcala

对于我喜欢使用的 .nupkg 文件:

Install-Package C:\Path\To\Some\File.nupkg

同意。值得一提的是,只有绝对路径有效
不适用于 VS 2017,请参阅 f.ex。由@Granger 回答。
@RenniePet 在 VS2017 中为我工作(但我已经将我的 .nupkg 放在同一个目录下,所有其他包都存储了)
它对我不起作用,我使用的是 VS2013 版本 12.0.21..5 和 Nuget 包管理器 2.12.0.817 :(
我没有让它与 nuget.exe cli 工具一起使用。它尝试使用 nuget 配置中的提要查找包(GET nuget.COMPANY.nl/nuget/NuGet/… 文件(x86)...)
P
Peter Mortensen

对于 Visual Studio 2017 及其新的 .csproj 格式

您不能再仅使用 Install-Package 指向本地文件。 (这可能是因为 PackageReference 元素不支持文件路径;它只允许您指定包的 ID。)

您首先必须告诉 Visual Studio 您的包的位置,然后才能将其添加到项目中。大多数人所做的是进入 NuGet 包管理器并将本地文件夹添加为源(菜单工具 → 选项 → NuGet 包管理器 → 包源)。但这意味着您的依赖项的位置不会与您的代码库的其余部分一起提交(版本控制)。

使用相对路径的本地 NuGet 包

这将添加仅适用于特定解决方案的包源,并且您可以使用相对路径。

您需要在与 .sln 文件相同的目录中创建一个 nuget.config 文件。使用所需的包源配置文件。当您下次在 Visual Studio 2017 中打开解决方案时,这些源文件夹中的任何 .nupkg 文件都将可用。 (您将看到包管理器中列出的源代码,当您管理项目的包时,您会在“浏览”选项卡上找到这些包。)

下面是一个示例 nuget.config,可帮助您入门:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

背景故事

我对这个功能的用例是我的机器上有一个代码存储库的多个实例。代码库中有一个共享库,它作为 .nupkg 文件发布/部署。这种方法允许我们代码库中的各种依赖解决方案在同一个存储库实例中使用包。此外,全新安装 Visual Studio 2017 的人可以在任何他们想要的地方签出代码,相关解决方案将成功恢复和构建。


我正在使用 VS 2017 并没有遇到这个问题。我刚刚将 -Source 参数传递给 Update-Package,它运行良好。也许与 Install-Package 命令有关?
只是想指出,这在 VS 2019 上非常有效,在 DevOps 管道中同样有效。必须这样做才能在我们使用 CI/CD 构建和部署的解决方案中使用 FastReports。但是,nuget.config 还必须具有官方 repo URL,并使用 Nuget 还原任务,而不是 DotNetCLI 还原,因为这会创建 nuget.config 的副本,因此您的相对路径不再有效。
J
Jeff Puckett

将文件添加到解决方案旁边名为 LocalPackages 的文件夹中(不必这样调用,但在以下步骤中相应地调整 xml)在解决方案文件旁边创建一个名为 NuGet.config 的文件,其中包含以下内容 < ?xml version="1.0" encoding="utf-8"?> 如果解决方案在 Visual Studio 中打开,请将其关闭,然后重新打开它。

现在你的包应该出现在浏览器中,或者可以使用 Install-Package 安装


这可能只是因为我有一个与 Nuget 存储库同名的包,但我需要使用包管理器控制台并在运行 Install-Package 之前将包源选择为 LocalPackages。
M
Marlon Cristian

如果您有一个 .nupkg 文件并且只需要 .dll 文件,您只需将扩展名更改为 .zip 并找到 lib 目录。


如果将其视为 zip 文件,则文件名中有空格的文件将用 % 提取(替换空格)。为避免使用 NuGet 进行此安装。
实际上,您甚至不需要重命名扩展名。只需右键单击该文件,然后选择打开方式,找到可以打开.zip文件的应用程序,即可打开.nupkg文件,然后您可以将所需的dll文件解压缩到您指定的文件夹中。
我需要的最佳解决方案
W
Willy David Jr

只是为了提供更新,Visual Studio 2015 用户有一些细微的变化。

要手动使用或安装包,请转到工具 -> 选项 -> NuGet 包管理器 -> 包源

单击“添加”按钮,选择“源”,不要忘记单击“更新”,因为它会更新包的文件夹位置,如果需要,可以编辑所需的包源名称:

https://i.stack.imgur.com/d6Bfk.jpg

要选择您添加的包,请右键单击您的解决方案并选择“管理 Nuget 包”

下拉列表在右侧,然后选择浏览以浏览您在文件夹源中指定的包。如果该文件夹源上没有 nuget 包,则这将为空:

https://i.stack.imgur.com/HCFDE.jpg


u
user7610

在 Linux 上,使用 NuGet CLI,命令是相似的。要安装 my.nupkg,请运行

nuget add -Source some/directory my.nupkg

然后从该目录运行 dotnet restore

dotnet restore --source some/directory Project.sln

或将该目录添加为 NuGet 源

nuget sources Add -Name MySource -Source some/directory

然后告诉 msbuild 将该目录与 /p:RestoreAdditionalSources=MySource/p:RestoreSources=MySource 一起使用。第二个开关将禁用所有其他来源,例如,这对于离线场景很有用。


在 mac 上(我也假设是 Linux),如果您使用 dotnet restore(或 VS Mac),则不能依赖 nuget sources,因为 this 错误。我必须手动将本地源添加到 ~/.nuget/NuGet/NuGet.Config(请参阅此 GH issue)。
D
Donghua Liu

最近我想安装 squirrel.windows,我尝试从 https://www.nuget.org/packages/squirrel.windows/ 安装 Install-Package squirrel.windows -Version 2.0.1,但由于一些错误而失败。所以我下载了squirrel.windows.2.0.1.nupkg并保存在D:\Downloads\中,然后我可以在powershell中通过Install-Package squirrel.windows -verbose -Source D:\Downloads\ -Scope CurrentUser -SkipDependencies成功安装它。


D
Duck Ling

使用以下 3 个选项之一打包您的库:

Visual Studio(csproj > 属性 > 包 > 勾选“在构建时生成 NuGet 包”。然后构建解决方案)

dotnet CLI(在项目文件夹的命令提示符中:dotnet build,然后是 dotnet pack 命令)

NuGet CLI(在项目文件夹的命令提示符中:dotnet build,然后是 nuget pack 命令)

使用 nuget add 命令将生成的包(在项目文件夹 bin > Debug(或 Release)> *.nupkg 文件中)添加到离线提要(VS2019 中的默认位置是 C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\) VS,管理 NuGet 包 > 右上角:将包源更改为 Microsoft Visual Studio Online Packages。

详细说明可在 hereyt 上找到