linux上还原自主nuget包需要注意的问题
問題的產(chǎn)生的背景
由于我們使用了jenkins進(jìn)行部署(jenkins~集群分發(fā)功能和職責(zé)處理),而對于.net core項(xiàng)目來說又是跨平臺的,所以對它的項(xiàng)目拉取,包的還原,項(xiàng)目的編譯和項(xiàng)目的發(fā)布都是在一臺linux的jenkins節(jié)點(diǎn)上進(jìn)行的,而我們開發(fā)時(shí)是在windows系統(tǒng),所以在進(jìn)行還原和編譯時(shí)出現(xiàn)了一些問題,今天的文章主要是解決這些問題的。
.net frameworks時(shí)代
我們在.net時(shí)代有包管理工具nuget,并且已經(jīng)知道了它的好處,類似于nodejs的npm,幫助我們管理項(xiàng)目的依賴關(guān)系,升級和卸載都十分方便,它在.net項(xiàng)目里被存儲到了解決方案下的packages目錄,而在發(fā)布時(shí),msbuild會根據(jù)這個(gè)目錄去升級項(xiàng)目,如果這個(gè)packages里沒有對象的包包依賴,就會從nuget源里進(jìn)行下載,nuget全局源在windows系統(tǒng)里,一般存儲在C:\\Users\\lind\\AppData\\Roaming\\NuGet\\NuGet.Config文件里,而本地系統(tǒng)也會有一個(gè)包包的緩存,一般會存儲在C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\目錄下面,這樣在下次安裝包的時(shí)候,就可以直接從本地進(jìn)行安裝了,官方nuget源的地址是https://api.nuget.org/v3/index.json,如果你自己去定義nuget服務(wù)器的話,也可以把它添加到nuget源里,直接修改C:\Users\lind\AppData\Roaming\NuGet\Nuget.Config文件就可以了,或者在vs的工具-選項(xiàng)里去添加它。
.net core時(shí)代
在進(jìn)行跨平臺的core時(shí)代后,我們的packages文件夾沒有了,之前的包都被存儲到了obj目錄下面,而包的映射關(guān)系在obj\project.assets.json這個(gè)文件里,我們可以看到當(dāng)前項(xiàng)目引用的包包,包包的源,包包的緩存等信息。
注意:nuget在各大系統(tǒng)中源地址的路徑
Windows 中路徑是 %appdata%NuGetNuGet.Config ,
Mac 與 Linux 中的路徑是 ~/.nuget/NuGet/NuGet.Config
如果沒有 NuGet.Config 文件,可以運(yùn)行 dotnet restore 命令生成。
還原自主Nuget包需要注意的問題
你的nuget自主服務(wù)器需要被當(dāng)前l(fā)inux服務(wù)器訪問到
需要在linux里建立一個(gè)全局的nuget.config文件,把自主源地址添加
把obj目錄添加到源代碼管理里
dotnet restore還源項(xiàng)目,依賴包由obj\project.assets.json文件確定
dotnet build編譯項(xiàng)目里,需要有Roslyn文件夾的執(zhí)行權(quán)限
最后才是成功發(fā)布
生成過程中的一些錯(cuò)誤截圖
自主依賴包找不到
沒有對Roslyn的執(zhí)行權(quán)限
最后,等待我們的才是成功!
成功得來不容!
希望通過我們的分享,可以幫到正遇到問題的您!
原文地址:http://www.cnblogs.com/lori/p/7605460.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的linux上还原自主nuget包需要注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Postman高级应用——流程控制、调试
- 下一篇: Net知识图谱