最近研究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包的版本一定要配對!