我有一些来自 C# 书籍的 .nupkg 文件。我该如何安装它们?
10 回答
Menu Tools → Options → Package Manager
Give a name and folder location. Click OK. Drop your NuGet package files in that folder.
Go to your Project in Solution Explorer, right click and select "Manage NuGet Packages". Select your new package source.
Here is the documentation.
您还可以使用包管理器控制台Install-Package
并通过在参数中指定包含包文件的目录的路径来调用cmdlet -Source
:
Install-Package SomePackage -Source C:\PathToThePackageDir\
对于我喜欢使用的 .nupkg 文件:
Install-Package C:\Path\To\Some\File.nupkg
对于 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 的人可以在任何他们想要的地方签出代码,相关解决方案将成功恢复和构建。
- 将文件添加到解决方案旁边的名为 LocalPackages 的文件夹中(不必如此调用,但在后续步骤中相应地调整 xml)
在您的解决方案文件旁边创建一个名为 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>
如果解决方案在 Visual Studio 中打开,请将其关闭,然后重新打开。
现在你的包应该出现在浏览器中,或者可以使用 Install-Package 安装
如果您有一个 .nupkg 文件并且只需要 .dll 文件,您只需将扩展名更改为 .zip 并找到 lib 目录。
在 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
or /p:RestoreSources=MySource
。第二个开关将禁用所有其他来源,例如,这对于离线场景很有用。
最近我想安装squirrel.windows
,我尝试Install-Package squirrel.windows -Version 2.0.1
从https://www.nuget.org/packages/squirrel.windows/,但它失败了一些错误。所以我下载squirrel.windows.2.0.1.nupkg
并保存在 中D:\Downloads\
,然后我可以通过Install-Package squirrel.windows -verbose -Source D:\Downloads\ -Scope CurrentUser -SkipDependencies
在 powershell 中成功安装它。
- 使用以下 3 个选项之一打包您的库:
- Visual Studio(csproj > 属性 > 包 > 勾选“在构建时生成 NuGet 包”。然后构建解决方案)
- dotnet CLI(在项目文件夹中的命令提示符中:
dotnet build
,然后是dotnet pack
命令) - NuGet CLI(在项目文件夹的命令提示符中:
dotnet build
,然后是nuget pack
命令)
- 使用命令将生成的包(在项目文件夹 bin > Debug(或 Release)>
*.nupkg
文件中)添加到离线提要(VS2019 中的默认位置是C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
)nuget add
- 在 VS 中,管理 NuGet 包 > 右上角:将包源更改为
Microsoft Visual Studio Online Packages
.