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. C# 判断是否是节假日

    1.引用Newtonsoft.Json.dll 2. /// <summary>        /// 判断是不是节假日,节假日返回true         /// </summar ...

  2. Python-类属性与对象属性之间的关系

    只要对象的属性未被指定赋值过, 不论类的属性怎么改变, 对象的属性都会跟随改变, 若对象属性被赋值过, 则不跟随类的属性而改变

  3. 调用Android自带日历功能

    Android手机配备有一个内置的日历应用程序.第三方应用程序可以利用日历内容提供商接口读取用户的日历信息和安排在日历新的事件.这个日历可以直接同步用户的谷歌日历. 不幸的是,没有文档和Android ...

  4. win7 下配置 java 环境变量[转]

    首先,你应该已经安装了 java 的 JDK 了,笔者安装的是:jdk-7u7-windows-x64 接下来主要讲怎么配置 java 的环境变量,也是为了以后哪天自己忘记了做个备份 1.进入“计算机 ...

  5. idea 编辑时cup飙升解决方案,亲测有效

    idea(64).exe.vmoptions内容如下: -Xms1024m -Xmx2048m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=256m ...

  6. HDU 3746 数据结构之KMP

    pid=3746">点击打开链接 题意:给T组数据,每组一个字符串,问最少加入多少个字符能够使这个串变成一个子串连续出现的串 思路:利用KMP的next数组进行变换,next数组保存的 ...

  7. php从memcache读取数据再批量写入mysql的方法

    这篇文章主要介绍了php从memcache读取数据再批量写入mysql的方法,可利用memcache缓解服务器读写压力,并实现数据库数据的写入操作,非常具有实用价值,需要的朋友可以参考下. 用 Mem ...

  8. Atitit.部分错误 设计模式,异常处理框架atiPartErr 的总结

    Atitit.部分错误 设计模式,异常处理框架atiPartErr 的总结 1. 流程图 1 2. Java 类关系结构图片 1 3. 错误信息结构 1 4. 调用 2 4.1. 收集错误信息 3 4 ...

  9. JavaScript判断浏览器类型及版本(新增IE11)

    $(function () { var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:( ...

  10. Spring3的表达式语言

    Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言, 能在运行时构建复杂表达式.存取对象图属性. ...