日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 NuGet 管理我们的程序集 - 预发行版

發布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 NuGet 管理我们的程序集 - 预发行版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、緣起

在我們的項目中。須要引用的組件統一放在一個 Libs 文件夾下。不管對于平臺上的公共組件。還是應用模塊,都是如此。

假設一個應用模塊,比如能源管理(EM)。要引用平臺提供的公共組件,比如數據庫訪問(Platform.PL)。那么不但要把Platform.PL程序集復制到EM的Libs文件夾下,也要把Platform.PL所引用的程序集。也就是Platform.PL的Libs文件夾下的文件。復制到EM的Libs文件夾下。

隨著平臺上應用模塊的增多,Platform.PL被引用得也越來越多。我們是怎么把Platform.PL自身及其Libs下的程序集給到這些應用模塊的呢?是通過手工拷貝的方式。

那么問題來了——Platform.PL升級了怎么辦?答案是,僅僅能一一手工拷貝了。

這樣的做法非常老土,并且由于手工拷貝,easy出錯。最好是把共用組件放到server上,應用模塊引用或升級時就去server上下載或更新。實際上,業界已經這么做非常久了。就是用 NuGet 獲取程序集。

僅僅是這些程序集普通情況下都是公開的,比如 NHibernate、Spring.Net等等。我們能夠使用 NuGet 的機制,并且把共用的程序集放到內部的server上。

因此,這里介紹的,不是怎么用 NuGet 來管理一個解決方式所使用的程序集,而是怎么把我們自己開發的公共組件放到內部的server上,讓其它模塊下載、更新。

順帶說一下開發環境,當然是 .NET 了,Visual Studio的版本號是 2012。這個版本號已經缺省安裝了 NuGet 包管理器。

2、準備待公布的程序集

開發好公共組件后。要將其公布到 NuGet server上,須要做些準備工作。

0. 下載 NuGet.exe。地址在這里。這是一個控制臺程序,以后要在命令行以下執行。下載后。將其放到一個合適的位置,并用path指向這個位置。當然,這個文件僅僅須要下載一次。

1. 創建清單文件。

打開命令行程序。進入公共組件所在項目的目錄,執行 nuget spec。

就像以下這樣:

這樣就會創建一個文件:Platform.PL.nuspec。打開這個文件,會看到是這個樣子的:

<?

xml version="1.0"?> <package > <metadata> <id>$id$</id> <version>$version$</version> <title>$title$</title> <authors>$author$</authors> <owners>$author$</owners> <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>$description$</description> <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> <copyright>Copyright 2014</copyright> <tags>Tag1 Tag2</tags> </metadata> </package>

當中有些內容是不須要的,能夠刪除它。licenseUrl。projectUrl,iconUrl,都能夠刪掉,反正它提示我們刪掉。

releaseNotes和tags一定要改動。否則下一步會出現警告。

比如,我把這個文件改動成這樣:

<?

xml version="1.0"?> <package > <metadata> <id>$id$</id> <version>$version$</version> <title>$title$</title> <authors>$author$</authors> <owners>$author$</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>$description$</description> <releaseNotes>MES平臺數據庫訪問組件首次公布到NuGetserver上</releaseNotes> <copyright>Copyright 2014</copyright> <tags>MES平臺 數據庫訪問</tags> </metadata> </package>

2.打包。在上面的命令行界面下,執行 nuget pack,像以下這樣:

這樣就會創建一個文件 Platform.PL.xyz.nupkg。這就是我們將要公布到NuGetserver上的包。

有一種情況值得一提:由于某種原因,我們不得不使用spring.net的預發行版(pre-release)。好奇么?這個原因就是,spring.net在并發環節使用了Dictionary,而這個類不是線程安全的,導致在執行時出現故障。spring.net在預發行版 2.0.0-RC1攻克了這一問題,但還沒有出穩定(Stable)版。所以我們就使用這個預發行版了。

nuget有一項規定:假設使用了非穩定版的程序集,所公布的程序集就不能是穩定版本號。否則,打包是就會出現這種錯誤:

為此。須要將我們要公布的包設置為測試版或預發行版。做法是手工編輯所在項目的 Properties/AssemblyInfo.cs 文件:

當中的36行就是我們加進去的。


3、將程序集公布到內部server上

經過上一步。我們生成了要公布的包:Platform.PL.3.1.0-alpha.nupkg。

這個包能夠公布到公共的NuGetserver上,供全部人下載。但如今我們不想這么做。我們僅僅是公布到內部server上,僅供項目組內部使用。

要做到這一點,我們首先要創建一個站點。用常規的方法創建IIS站點,能夠給這個站點起名為 NuGetServer。

其次,我們要創建一個Web應用。

利用VS,創建一個 ASP.NET空Web應用程序。

能夠給這個項目起名為 NuGetServer。

再次,在這個應用程序中,用 NuGet 加入 NuGet.Server 包引用:

引用了NuGet.Server包以后。會自己主動增加非常多它引用的包。

再再次,將我們剛創建的 Platform.PL.3.1.0-alpha.nupck 文件,增加到這個Web項目的packages目錄中:

最后,將這個應用公布到站點 NuGetServer 中就能夠了。

公布成功后,打開這個站點,能夠看到類似這種內容:

4、引用程序集

將程序集在內部NuGetserver上公布成功后,就能夠將其引用到應用模塊中了。

在應用模塊引用之前,還須要做一件準備工作:將server加入到NuGet配置中。

在VS 2012中,點擊菜單 工具 --> NuGet程序包管理器 --> 管理解決方式的NuGet程序包,在彈出的對話框中,點擊左下角的“設置”button,會彈出“選項”對話框。點擊右上角的大加號,能夠加入“可用程序包源”,將上面ie提示的地址。如http://localhost:8010/nuget。加入上去就能夠了。能夠起名字為mes:

至此,就能夠像從公共NuGetserver上下載程序集一樣。從內部的NuGetserver上下載我們自己的程序集了。

5、其他

這個帖子的標題帶有“預發行版”。表示這個做法剛實驗通過。真正用起來。應該會面臨諸多意想不到的問題。即便如此,也推薦使用。

建議我們的項目組:

1、擯棄用Libs管理所引用的程序集。轉用 NuGet 下載程序集的方式;

2、MES平臺搭建統一的 NuGet server;

3、公共組件統一公布到 NuGet server上,并參考語義化版本號的方式設置版本號號。



轉載于:https://www.cnblogs.com/bhlsheji/p/5397675.html

總結

以上是生活随笔為你收集整理的使用 NuGet 管理我们的程序集 - 预发行版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。