最近研究ABP框架,下载其全套源码,想“据为己有”,这样添加功能或者修改源码的话就非常方便了,否则搭建项目直接用其官方的Nuget肯定是做不到的。

  源码下好了,取其精华之处,编译完美运行,然后问题就来了,这么多类库,如何将他们全部做成Nuget包呢,之前从主管那得到了个制作Nuget包的神器(NuGetPackageExplorer.application),然而制作起来相当费劲,每次都要打开该软件,一个一个dll的添加,还需要配置相当多的引用,引用版本弄不好就弄错了,然后整个Nuget就GameOver了,升级起来也相当费劲。

  最近做项目,又从主管那得知了制作的新招,采用文件配置方式制作Nuget,那效率杠杠的,废话不多说,开始吧:

  一、安装(NuGetPackageExplorer.application)

    这个肯定是要的,因为Nuget包就是用这个工具来生成的,只是我们把其操作方式改成了文本配置。

  二、在VS解决方案里创建.nuget文件夹

    其实此文件夹名称是可以随意,但是为了区分就给它命名为.nuget咯。

  三、在.nuget文件夹里面创建.xml格式的文件,接着将此文件后缀改成.nuspec

    为何不直接创建一个以.nuspec文本文件呢?那是因为该文件本身就是xml格式,如果采用文本格式,那么VS就直接将其内容识别成普通的问题咯,更不会有xml相关的提示。

    新增的配置文件如下:

    Nuget包制作最佳解决方案_Nuget

    四、添加配置内容

Nuget包制作最佳解决方案_Nuget_02
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>Drea.AutoMapper</id><!--Nuget包名称-->
    <version>1.0.0</version><!--Nuget包版本-->
    <title>Drea.AutoMapper</title><!--Nuget包显示名称-->
    <authors>Drea</authors><!--作者-->
    <owners>Drea</owners><!--所有者-->
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <iconUrl>http://drea.cc/favicon.ico</iconUrl>
    <description>
      1.0.0 原始版本<!--描述(升级记录)-->
    </description>
    <summary>AutoMapper自动映射</summary><!--简介-->
    <copyright>©2018 Drea</copyright><!--版权-->
    <language>zh-CN</language><!--语言-->
    <tags>asp.net;asp.net mvc;boilerplate;application framework;web framework;framework;domain driven design;automapper;object mapper</tags><!--标签-->
    <dependencies><!--项目依赖-->
      <group targetFramework=".NETStandard2.0">
        <dependency id="Drea.Core" version="1.0.0" />
        <dependency id="AutoMapper" version="6.2.1" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="..\src\Abp.AutoMapper\bin\Debug\netstandard2.0\Abp.AutoMapper.dll" target="lib\netstandard2.0\Abp.AutoMapper.dll" /><!--目标Dll所在路径-->
  </files>
</package>
Nuget包制作最佳解决方案_Nuget_02

  其他都好说,但是项目依赖如果有N多个呢,难道要一个一个去找,然后加进来?其实大可不必,VS项目本身的配置文件里面都已经配好了,我们只需要打开项目配置文件,复制粘贴即可。

  Nuget包制作最佳解决方案_Nuget_04

  Nuget包制作最佳解决方案_Nuget_05

   Nuget包制作最佳解决方案_Nuget_06

   Nuget包制作最佳解决方案_Nuget_07

  注意:PackageRefreshce引用可能位于多个ItemGroup,都要加进去,对于系统引用(.NetFramework)无需加入(自测没有问题,但是不保证不出问题)

  五、进入.nuget所在目录,打开.nuspec文件,Ctrl+S创建并保存Nuget包

  Nuget包制作最佳解决方案_Nuget_08

  Nuget包制作最佳解决方案_Nuget_09

  

    至此大功告成,一定要注意以下几点:

  1、项目引用的Nuget包一定要都配上去!

  2、系统引用可以无需配置!

  3、Nuget包的版本一定要配对!