我有一些来自 C# 书籍的 .nupkg 文件。我该如何安装它们?
https://i.stack.imgur.com/RMgIm.jpg
菜单工具 → 选项 → 包管理器
https://i.stack.imgur.com/BgbB0.png
提供名称和文件夹位置。单击确定。将 NuGet 包文件放在该文件夹中。
在解决方案资源管理器中转到您的项目,右键单击并选择“管理 NuGet 包”。选择新的包源。
https://i.stack.imgur.com/jOthh.png
您还可以使用 Package Manager Console 并通过在 -Source
参数中指定包含包文件的目录的路径来调用 Install-Package
cmdlet:
Install-Package SomePackage -Source C:\PathToThePackageDir\
对于我喜欢使用的 .nupkg 文件:
Install-Package C:\Path\To\Some\File.nupkg
.nupkg
放在同一个目录下,所有其他包都存储了)
对于 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 的人可以在任何他们想要的地方签出代码,相关解决方案将成功恢复和构建。
-Source
参数传递给 Update-Package
,它运行良好。也许与 Install-Package
命令有关?
将文件添加到解决方案旁边名为 LocalPackages 的文件夹中(不必这样调用,但在以下步骤中相应地调整 xml)在解决方案文件旁边创建一个名为 NuGet.config 的文件,其中包含以下内容 < ?xml version="1.0" encoding="utf-8"?>
现在你的包应该出现在浏览器中,或者可以使用 Install-Package 安装
如果您有一个 .nupkg 文件并且只需要 .dll 文件,您只需将扩展名更改为 .zip 并找到 lib 目录。
只是为了提供更新,Visual Studio 2015 用户有一些细微的变化。
要手动使用或安装包,请转到工具 -> 选项 -> NuGet 包管理器 -> 包源
单击“添加”按钮,选择“源”,不要忘记单击“更新”,因为它会更新包的文件夹位置,如果需要,可以编辑所需的包源名称:
https://i.stack.imgur.com/d6Bfk.jpg
要选择您添加的包,请右键单击您的解决方案并选择“管理 Nuget 包”
下拉列表在右侧,然后选择浏览以浏览您在文件夹源中指定的包。如果该文件夹源上没有 nuget 包,则这将为空:
https://i.stack.imgur.com/HCFDE.jpg
在 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
一起使用。第二个开关将禁用所有其他来源,例如,这对于离线场景很有用。
最近我想安装 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
成功安装它。
使用以下 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。