DotNetCore跨平臺~linux上還原自主nuget包需要註意的問題

来源:http://www.cnblogs.com/lori/archive/2017/09/28/7605460.html
-Advertisement-
Play Games

問題的產生的背景 由於我們使用了jenkins進行部署(jenkins~集群分發功能和職責處理),而對於.net core項目來說又是跨平臺的,所以對它的項目拉取,包的還原,項目的編譯和項目的發佈都是在一臺linux的jenkins節點上進行的,而我們開發時是在windows系統,所以在進行還原和編 ...


問題的產生的背景

由於我們使用了jenkins進行部署(jenkins~集群分發功能和職責處理),而對於.net core項目來說又是跨平臺的,所以對它的項目拉取,包的還原,項目的編譯和項目的發佈都是在一臺linux的jenkins節點上進行的,而我們開發時是在windows系統,所以在進行還原和編譯時出現了一些問題,今天的文章主要是解決這些問題的。

.net frameworks時代

我們在.net時代有包管理工具nuget,並且已經知道了它的好處,類似於nodejs的npm,幫助我們管理項目的依賴關係,升級和卸載都十分方便,它在.net項目里被存儲到瞭解決方案下的packages目錄,而在發佈時,msbuild會根據這個目錄去升級項目,如果這個packages里沒有對象的包包依賴,就會從nuget源里進行下載,nuget全局源在windows系統里,一般存儲在C:\\Users\\lind\\AppData\\Roaming\\NuGet\\NuGet.Config文件里,而本地系統也會有一個包包的緩存,一般會存儲在C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\目錄下麵,這樣在下次安裝包的時候,就可以直接從本地進行安裝了,官方nuget源的地址是https://api.nuget.org/v3/index.json,如果你自己去定義nuget伺服器的話,也可以把它添加到nuget源里,直接修改C:\Users\lind\AppData\Roaming\NuGet\Nuget.Config文件就可以了,或者在vs的工具-選項里去添加它。

.net core時代

在進行跨平臺的core時代後,我們的packages文件夾沒有了,之前的包都被存儲到了obj目錄下麵,而包的映射關係在obj\project.assets.json這個文件里,我們可以看到當前項目引用的包包,包包的源,包包的緩存等信息。

註意:nuget在各大系統中源地址的路徑

  1. Windows 中路徑是 %appdata%NuGetNuGet.Config ,
  2. Mac 與 Linux 中的路徑是 ~/.nuget/NuGet/NuGet.Config
  3. 如果沒有 NuGet.Config 文件,可以運行 dotnet restore 命令生成。

還原自主Nuget包需要註意的問題

  1. 你的nuget自主伺服器需要被當前linux伺服器訪問到
  2. 需要在linux里建立一個全局的nuget.config文件,把自主源地址添加
  3. 把obj目錄添加到源代碼管理里
  4. dotnet restore還源項目,依賴包由obj\project.assets.json文件確定
  5. dotnet build編譯項目里,需要有Roslyn文件夾的執行許可權
  6. 最後才是成功發佈

生成過程中的一些錯誤截圖

自主依賴包找不到

沒有對Roslyn的執行許可權

最後,等待我們的才是成功!

成功得來不容!

希望通過我們的分享,可以幫到正遇到問題的您!

感謝各位閱讀!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • shell shell命令分為兩種:分別是內部命令和外部命令。 Linux中,預設的shell是bash 系統中的shell 控制台的名詞: 標準Linux命令: bash組合鍵: ...
  • windows 7安裝 準備 1、iso系統鏡像文件(我一般選用純凈版) 2、Windows7-USB-DVD-Download-Tool-Installer-en-US(啟動盤製作) 3、準備4G以上空U盤,之後的過程中會被格式化,不要放重要文件 4、C盤(系統盤)留有8G以上空間 5、備份網卡驅 ...
  • ...
  • 轉載需註明來源:http://www.cnblogs.com/yczcc/p/7594322.html openssl官網:https://www.openssl.org 下載源碼 源碼地址為:https://www.openssl.org/source/old/;當前最新版本為 1.1.0f,ht ...
  • 創建LVM分區: 相關命令: pvcreat /dev/sdb{1,2,3} 創建物理捲 vgcreat test_vg1 /dev/sdb1 創建捲組 vgcreat test_vg2 -s 16M /dev/sdb2 /dev/sdb3 指定PE大小為16M lvcreat 在已存在的捲組中創建 ...
  • 自己挖了一個大坑,,,然後苦逼的在碼代碼重寫樣式! 廢物不多少 直接上代碼 先在前臺創建一個TextBox,然後各種附加的屬性加上去:如圖所示 效果圖: 樣式代碼: 本文原創出處:http://www.cnblogs.com/PettyHandSome/ 歡迎各位轉載,但是未經作者本人同意,轉載文章 ...
  • 1. foreach C#編譯器會把foreach語句轉換為IEnumerable介面的方法和屬性。 foreach語句會解析為下麵的代碼段。 調用GetEnumerator()方法,獲得數組的一個枚舉 在while迴圈中,只要MoveNext()返回true,就一直迴圈下去 用Current屬性訪 ...
  • 用socket做了個程式,本地測試沒有問題,發佈到伺服器上時連接不上,用telnet測試連接失敗 伺服器上netstat -a 查看埠情況,127.0.0.1綁定埠9300處於監聽狀態,如下圖: 修改socket綁定IP為伺服器IP,埠狀態變為下圖: telnet連接測試成功! 很納悶,查了下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...