【发布时间】:2019-09-25 14:45:08
【问题描述】:
我的理解是,当您发布 .NET 标准库时,预期的行为是生成 .nupkg。
我有内部的 .Net 标准库,我维护这些库用于内部项目。一个典型的工作流程是发布库,然后将发布的文件复制到使用项目。这不是我应该做的事情吗?我对发布 .NET 标准库时缺少选项感到有些困惑——因为有一个 .nupkg 而没有选择以不同的形式发布。
我想要从发布中获得的只是发布目录中必要的库文件的集合(不在nupkg 中)。有没有办法做到这一点?
【问题讨论】:
-
.nupkg 文件只有一个目的,就是将其发布到 Nuget 服务器。这是明智的,但听起来不是你真正想做的。将库文件放入专用目录不需要 .nupkg,您只需更改项目的输出路径。只要确保你能在五年后将它们重新组合到一台新机器上。
-
我原本以为我需要做的就是构建项目。但这产生了一个非常意想不到的问题,我在这里询问:stackoverflow.com/questions/58085571/… 这导致我尝试使用 Publish(我以前从未使用过)。但听起来发布也不是正确的方法。构建 .net 标准 DLL 并将所有依赖项复制到构建文件夹以便手动部署的正确工作流程是什么?不发布吗?
-
我知道这可能不适用于您的设置,但 FWIW - 如果您在本地开发多个项目,项目引用比引用构建的 DLL(或 nupkg)容易得多。
-
就像 Nate 建议的那样,如果你在本地开发它们,你可以添加项目引用来做。 (如果不是相同的解决方案,请先添加现有项目)。如果你想输出一个包含多个程序集的文件夹,并将该文件夹共享给其他人,你可能需要在 xx.csproj 中进行一些修改。同样正如我回答中的文档所说,
The primary distribution vehicle for the .NET Standard reference assemblies is NuGet packages,然后当您发布它并获得 xx.nupkg 时,为了进一步开发,您可以轻松地将 xx.nupkg(一个 nuget 包)分享给其他人。它确实有一些优势。 -
.net 标准项目引用了哪些包的信息存储在 xx.nupkg 中的隐藏 xx.nuspec 文件中。您无需解压即可使用输出的project.dll,将xx.nupkg共享给其他人或本地其他项目的正确方法是通过Package Manager UI或Package Manager将xx.nupkg消耗到一个项目中VS 中的控制台,或在服务器中使用dotnet cli。由于依赖 ID 的信息存储在 xx.nupkg 中,这些包也会被安装。
标签: .net visual-studio nuget publish .net-standard