https://www.cnblogs.com/drea/p/8418717.html

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

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

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

  一、安装(NuGetPackageExplorer.application)

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

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

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

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

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

    新增的配置文件如下:

    

    四、添加配置内容

<?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>

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

  

  

  

  

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

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

  

  

  

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

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

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

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

Nuget包制作最佳解决方案的更多相关文章

  1. 一个技术汪的开源梦 —— 基于 .Net Core 的组件 Nuget 包制作 & 发布

    一个技术汪的开源梦 —— 目录 微软的 ASP.Net Core 强化了 Nuget 的使用,所有的 .Net Core 组件均有 Nuget 管理,所以有必要探讨一下 .Net Core 组件制作 ...

  2. 使用 NuGet 包管理器在 Visual Studio 中安装和管理包

    https://docs.microsoft.com/zh-cn/nuget/consume-packages/install-use-packages-visual-studio 通过 Window ...

  3. nuget 包是如何还原包的

    nuget 是如何还原包的 Intro 一直以来从来都是用 nuget 包,最近想折腾一个东西,需要自己搞一个 nuget 包的解析,用户指定 nuget 包的名称和版本,然后去解析对应的 nuget ...

  4. 记录使用 Cake 进行构建并制作 nuget 包

    书接上一回(https://www.cnblogs.com/h82258652/p/4898983.html)?[手动狗头] 前段时间折腾了一下,总算是把我自己的图片缓存控件(https://gith ...

  5. 为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)

    前言 nuget 是 .net 的常用包管理器,目前已经内置到 Visual Studio 2012 以后的版本.大多数 .net 包都托管在 nuget.org,包括 .net core 框架基础包 ...

  6. 运用.net core配合VS 2015制作nuget包

    from:http://www.cnblogs.com/zeusro/p/5171084.html 运用.net core配合VS 2015制作nuget包 以往做nuget包我们一般要么用命令行,要 ...

  7. 【Visual Studio】解决方案未保存,请先保存你的解决方案,然后再管理Nuget包

    上网下的Demo,文件夹中没有.sln文件,用VS打开.csproj文件来打开方案.此时可能因为一些引用问题想打开Nuget包管理器,会弹出如下提示: 解决方案未保存,请先保存你的解决方案,然后再管理 ...

  8. 使用NuGet Package Project快速制作NuGet包

    今天在visual studio gallery发现了一个插件NuGet Package Project,通过它可以在Visual Studio中建立Nuget Package工程,直接生成Nuget ...

  9. 搭建nuget服务器(二):制作nuget包

    生成nuget包可以使用nuget.exe或者下载nuget package explorer工具 nuget package explorer 下载地址:https://github.com/NuG ...

随机推荐

  1. 【TP3.2与TP5.0区别】

    Tp3.2 和 Tp5.0之间的区别   5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正 ...

  2. DBMS_SQL使用

    一.简介 DBMS_SQL包提供一个接口,用于执行动态SQL(包括DDL 和DML). DBMS_SQL定义了一个实体叫游标ID,游标ID是一个PL/SQL整型数,通过游标ID,可以对游标进行操作. ...

  3. sqlconnection 调用webservice服务

    package cn.itcast.service.urlconnection; import java.io.InputStream; import java.io.OutputStream; im ...

  4. c#+mysql 中文乱码

    c#+mysql 中文乱码 遇到一个奇怪的问题,C#读取mysql中文正常,写入时发生乱码 网上查阅原因,发现如下信息 ---------------------------------------- ...

  5. 微信公共服务平台开发(.Net 的实现)3-------发送文本消息

    首先建立一个微信消息类. class wxmessage { public string FromUserName { get; set; } public string ToUserName { g ...

  6. atitit.Windows Server 2003 2008 2012系统的新特性 attilax 总结

    atitit.Windows Server 2003  2008  2012系统的新特性 attilax 总结 1. Windows Server 2008 新特性也可以归纳为4个方面. 1 2. 相 ...

  7. [sh]shell脚本栗子

    我会定期的把看到的一些好的shell和py脚本搜集在这里,供参考学习: 命令行回收站 推荐一个不相关的:trash-cli,就是命令行版的回收站,它的神奇之处在于不是简单的把文件移动到回收站,而且可以 ...

  8. Java 之进制转换

    //十进制转十六进制 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scan ...

  9. 李洪强iOS经典面试题34-求两个链表表示的数的和

    李洪强iOS经典面试题34-求两个链表表示的数的和 问题 给你两个链表,分别表示两个非负的整数.每个链表的节点表示一个整数位. 为了方便计算,整数的低位在链表头,例如:123 在链表中的表示方式是: ...

  10. SpringMVC之学习(1)

    先来一个springmvc的基本配置,照样输出hello world 1.先导入springmvc所需要的开发包 最起码需要这么多的基本包,然后开始上配置 2.先在web.xml里进行引入,和Stru ...