【问题标题】:Create nuget package from dlls从 dll 创建 nuget 包
【发布时间】:2017-09-02 19:32:34
【问题描述】:

我想创建一个 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/… 这对我解决同样的问题有帮助

标签: visual-studio nuget


【解决方案1】:

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

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

首先,使用NuGet Package Explorer

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

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

  1. 下载nuget.exe

  2. 创建一个新项目。

  3. 打开一个cmd并切换到nuget.exe的路径

  4. 使用命令行:nuget spec "PathOfProject\TestDemo.csproj"

  5. 打开TestDemo.csproj.nuspec文件并修改它并将程序集添加为文件;下面是我的 .nuspec 文件:

    <?xml version="1.0"?>
    <package>
      <metadata>
        <id>TestDemo</id>
        <version>1.0.0</version>
        <authors>Tester</authors>
        <owners>Tester</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>TestDemo</description>
        <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
        <copyright>Copyright 2017</copyright>
        <tags>Tag1 Tag2</tags>
      </metadata>
      <files>
        <file src="MultipleDll\*.*" target="lib\net461" />
      </files>
    </package>
    
  6. 使用打包命令:nuget pack TestDemo.csproj.nuspec

  7. 通过 NuGet 包资源管理器打开 TestDemo 包。

【讨论】:

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

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

  1. 首先,下载安装nuget.exe (https://www.nuget.org/downloads)
  2. 然后进入你的项目文件夹,按shift+右键显示命令提示符
  3. 在命令提示符下,输入

    nuget spec
    
  4. 您现在将拥有一个.nuspec 文件。在编辑器中打开并添加Id、作者等。

  5. 最重要的部分是封闭元数据标签后的files标签。

    您可以像这样在这里定义所有 dll:

    <files>
       <file src="bin\Release\YourDll.dll" target="lib"></file>
    </files>
    
  6. 最后,您可以使用以下命令创建.nupkg 文件:

    nuget pack 'Your_nuspec_file_name'
    

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

【讨论】:

    【解决方案3】:

    如果你想通过 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>
    

    【讨论】:

      猜你喜欢
      • 2021-04-02
      • 2019-10-11
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多