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


Answers:


462

菜单工具选项软件包管理器

在此处输入图片说明

输入名称和文件夹位置。单击确定。将您的NuGet软件包文件拖放到该文件夹​​中。

转到您的项目,右键单击并选择“管理NuGet软件包”,然后选择新的软件包源。

在此处输入图片说明

这是文档


22
实际上,我已经执行了几次步骤1。但是,当我打开查看“已安装的软件包”,“更新”或“最近的”软件包时,我的软件包未在步骤2中显示。
汤姆(Tom)

2
在我的屏幕上,我只有“已安装的软件包”下的“全部”,而不是“ NuGet官方软件包源”,而不是我的自定义“ newNuget”,它们丢失了。
汤姆

1
我正在使用vs2010。刚刚尝试从其主页下载并安装最新的nuget。下载单击“下一步”,然后单击下一步……然后出现错误... M $,如预期那样,有一个已知问题的链接,经过检查,确认签名不匹配,然后我需要卸载现有的nuget,并且很容易修复。很好,那样做。当我重新启动计算机并再次安装时,同样的错误又出现了,签名不匹配...所以现在我被旧版本卡住了,新版本不想安装了。
2012年

2
问题已解决。我从Windows->控制面板卸载了nuget。那样行不通。我需要启动VS并进入“工具”->“扩展管理器” ...,然后从此处单击“卸载nuget”。重新启动VS。然后再次去安装nuget,它起作用了。现在,本地nupkg文件也出现了(编辑:它们在Online选项卡中,而不是Installed选项卡中,这是我发布的图片中的错误)。感谢您的帮助:)
汤姆(Tom)

1
我没有足够的声誉要发表评论-但要在接受的关于VS2015仍想上网的答案中回答Michael。我遇到了同样的问题,但是在选项中,如果您取消选中所有在线资源,则它适用于离线资源。nuget Options pic
Mick m

302

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

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
我也可以使用命令行工具来做类似的事情吗?
Poul K.Sørensen2013年

5
是。该-Source选项在nuget.exe中也可用。例如:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio 2013年

16
您可能还需要指定-IncludePrerelease标志。否则,如果软件包版本带有后缀(例如“ -beta1”),则Install-Package将找不到它。
杰夫·夏普

9
这是比公认的答案更直接的答案。谢谢(你的)信息!
大卫·彼得斯

2
不适用于VS 2017,请参阅f.ex. @Granger回答。
RenniePet

124

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

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

7
唯一有效的方法。如果目录的路径包含空格,请将其用双引号引起来。
Nikos

4
同意。值得一提的是,只有绝对路径有效
Sebastian J.

5
不适用于VS 2017,请参阅f.ex. @Granger回答。
RenniePet

1
@RenniePet在VS2017中为我工作(但我已经将我.nupkg的所有其他软件包都存储在同一目录下)
Rafalon

1
它对我不起作用,我正在使用VS2013版本12.0.21..5和Nuget软件包管理器2.12.0.817 :(
Niraj Trivedi

56

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

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

您首先必须告知Visual Studio包的位置,然后可以将其添加到项目中。大多数人要做的是进入NuGet软件包管理器,然后将本地文件夹添加为源(菜单工具选项NuGet软件包管理器软件包源)。但这意味着您的依赖项的位置不会被其余代码库提交(用于版本控制)。

使用相对路径的本地NuGet软件包

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

您需要nuget.config在与文件相同的目录中创建.sln文件。使用所需的包源配置文件。当您下次在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命令专门有关?
Greg Burghardt

48
  1. 将文件添加到解决方案旁边的名为LocalPackages的文件夹中(不必调用该文件夹,但可以在接下来的步骤中相应地调整xml)
  2. 在解决方案文件旁边创建一个名为NuGet.config的文件,内容如下

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
    
  3. 如果在Visual Studio中打开了解决方案,请关闭它,然后重新打开它。

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


很棒的答案,正是我所寻找的解决方案。谢谢!
乔纳森

1
这可能只是因为我在Nuget存储库中有一个与名称相同的软件包,但是在运行Install-Package之前,我需要使用Package Manager控制台并选择软件包源作为LocalPackages。
路加福音

42

如果您有.nupkg文件,而只需要.dll文件,那么您要做的就是将扩展名更改为.zip并找到lib目录。


3
如果将其视为zip文件,则文件名中带有空格的文件将被提取为%(替换空格)。为了避免使用NuGet进行此安装。
Rahatur

2
实际上,您甚至不需要重命名扩展名。只需右键单击该文件,然后选择“打开方式”,然后找到可以打开.zip文件的应用程序,然后即可打开.nupkg文件,然后可以将所需的dll文件提取到指定的文件夹中。
jyao

1
我需要的最佳解决方案
Leo Nguyen

8

只是为了进行更新,Visual Studio 2015用户进行了一些小的更改。

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

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

在此处输入图片说明

要选择添加的软件包,请右键单击您的解决方案,然后选择“ 管理Nuget软件包

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

在此处输入图片说明


6

在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。第二个开关将禁用所有其他来源,例如,这对于脱机情况很有用。


1
在Mac上(我也假设在Linux上),由于错误,您不能依赖nuget sources是否正在使用dotnet restore(或VS Mac)。我必须将本地源手动添加(请参阅此GH 问题)。~/.nuget/NuGet/NuGet.Config
gabe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.