天天看點

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

我們在.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的工具-選項裡去添加它。

在進行跨平台的core時代後,我們的packages檔案夾沒有了,之前的包都被存儲到了obj目錄下面,而包的映射關系在obj\project.assets.json這個檔案裡,我們可以看到目前項目引用的包包,包包的源,包包的緩存等資訊。

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

注意:nuget在各大系統中源位址的路徑

Windows 中路徑是 %appdata%\NuGet\NuGet.Config ,

Mac 與 Linux 中的路徑是 ~/.nuget/NuGet/NuGet.Config

如果沒有 NuGet.Config 檔案,可以運作 dotnet restore 指令生成。

你的nuget自主伺服器需要被目前linux伺服器通路到

需要在linux裡建立一個全局的nuget.config檔案,把自主源位址添加

把obj目錄添加到源代碼管理裡

dotnet restore還源項目,依賴包由obj\project.assets.json檔案确定

dotnet build編譯項目裡,需要有Roslyn檔案夾的執行權限

最後才是成功釋出

自主依賴包找不到

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

沒有對Roslyn的執行權限

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

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

成功得來不容!

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

感謝各位閱讀!