ChatGPT解决这个技术问题 Extra ChatGPT

从 dll 创建 nuget 包

我想创建一个 NuGet 包,它添加多个 .dll 文件作为对我的项目的引用。

我有一个包含 10 个 .dlls 文件的文件夹。

当我通过 nuget 安装它时,我希望将这些文件添加到项目的引用中。

没有神奇的工具可以自动执行此操作,您必须学习 .nuspec 并以这种方式打包程序集。
@LexLi 错了。请参阅已接受的答案。
@Neo “NuGet Package Explorer”和“nuget spec/pack”都隐式使用 .nuspec。我想知道你的评论来自哪里。
@LexLi NuGet 包资源管理器是“神奇工具”,可自动创建包含 DLL 的 NuGet 包,然后将其发布到 NuGet。您只需指定应包含哪些 DLL、任何元数据和用于发布的 URL/密钥。这就是OP想要的。我今天刚刚完成,甚至不必查看 .nuspec 文件一次,现在有其他项目引用我的包并根据需要包括所需的 DLL。所以我不必像你建议的那样“学习 .nuspec”。
docs.microsoft.com/en-us/nuget/reference/… 这是帮助我解决同样问题的原因

N
Nimantha

我想创建一个 nuget 包,它添加多个 .dll 作为对我的项目的引用。

我想给你两个解决方案来实现这一点:

一、使用 NuGet 包资源管理器:

下载 NuGet 包资源管理器。打开 NuGet 包资源管理器,选择创建新包。在内容选项卡上添加一个 lib 文件夹,并添加您的 dll 文件保存包并将其安装到项目中,检查它是否添加了引用。

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

其次,正如 Lex Li 提到的,我们可以使用 .nuspec 来打包程序集:

下载 nuget.exe。创建一个新项目。打开 cmd 并切换路径到 nuget.exe 使用命令行:nuget spec "PathOfProject\TestDemo.csproj" 打开 TestDemo.csproj.nuspec 文件并修改它并将程序集添加为文件;下面是我的 .nuspec 文件: TestDemo 1.0.0 Tester < owner>Tester false TestDemo 在此版本包中所做的更改摘要。 2017 年版权所有 Tag1 Tag2 使用pack命令:nuget pack TestDemo.csproj.nuspec 通过 NuGet 包资源管理器打开 TestDemo 包。

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


我正在尝试制作我的第一个 NuGet 包,我从您那里了解了 NuGet 包资源管理器。超级容易。一个问题:我是否需要将 DLL 放在 lib 文件夹的“本机”子文件夹中? (您的第二个屏幕截图建议使用这样的子文件夹)!screenshot
@Mike 如果此示例中的 ClassLibrary 具有例如对 4.6.1 的依赖项,则需要添加 lib 并将它们的 dll 添加到 lib。否则,您稍后在安装软件包时会遇到依赖性问题。
我建议完成 NuGet CLI reference page 中提到的安装步骤,以便在您的环境中有效地使用 nuget.exe。它基本上是在 Path 环境变量中添加包含 nuget.exe 的文件夹的路径,以便能够从系统上的任何位置使用它。
K
KyleMit

我认为创建 NuGet 包的最佳方法是使用 nuget.exe

首先,下载并安装nuget.exe(https://www.nuget.org/downloads)然后进入你的项目文件夹,按shift+右键显示命令提示符在命令提示符下,输入nuget spec你现在会有一个.nuspec 文件。在编辑器中打开并添加Id,作者等。最重要的部分是关闭元数据标签后的文件标签。您可以在此处定义所有 dll,如下所示: 最后,您可以使用此命令创建 .nupkg 文件: nuget pack 'Your_nuspec_file_name'

How to Create Nuget Packages 上的这个视频有一个非常有用和清晰的教程。


A
Akhil Dabral

如果您想通过 Visual Studio 或 dotnet 执行此操作,则可以编辑您的 csproj 文件,添加一个 ItemGroup 以包含以下 dll:这会将其他 dll 与您当前的项目 dll 一起打包到 nuget 包中。

<ItemGroup>
    <Content Include="<path to other dll>">
        <Pack>true</Pack>
        <PackagePath>lib\$(TargetFramework)</PackagePath>
    </Content>
</ItemGroup>