从dll创建nuget包

时间:2017-04-07 12:06:39

标签: visual-studio nuget

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

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

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

3 个答案:

答案 0 :(得分:47)

  

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

我想给你两个解决方案来实现这个目标:

首先,使用 NuGet Package Explorer

  1. 下载NuGet Package Explorer
  2. 打开NuGet Package Explorer,选择创建新包。
  3. 在内容标签上添加一个lib文件夹,然后添加您的dll文件
  4. 保存包并将其安装到项目中,检查是否添加了引用。
  5. NuGet Package Explorer GUI

    其次,就像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. 使用pack命令:nuget pack TestDemo.csproj.nuspec

    7. 通过NuGet Package Explorer打开TestDemo包。
    8. NuGet Package Explorer - built package output

      希望这可以帮到你。

答案 1 :(得分:11)

我认为创建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上的这段视频有一个非常有用且清晰的教程。

答案 2 :(得分:1)

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