天天看點

在離線環境中使用.NET Core

很早開始就對.NET Core比較關注,一改微軟之前給人的印象,變得輕量、開源、跨平台。最近打算試着在工作中使用。但工作是在與網際網路完全隔離的網絡中進行的,是以就開始了在離線環境中部署.NET Core開發環境的嘗試。總的來說還是比較蛋疼的,幾乎每個階段都遇到了問題。不過還好最後搞定了,寫下這篇部落格做個記錄,同時分享給有類似需求的童鞋。以下都是親測有效。

開發.NET Core可以使用VS2015和VS Code。在這裡先讨論VS2015的情況,畢竟如果在Windows下開發,VS2015功能上還是要強太多。.NET Core Web Tools必須要VS2015 Update3以上,也就是首先要在内網安裝VS2015 Update3。我剛開始的方式是從官網下載下傳CD光牒鏡像,然後安裝。但這樣大多數情況下是無法安裝的。會提示“安裝包丢失或損壞”,之前裝VS2015時可以選擇跳過檔案,裝完後也能用(至少WPF沒問題),但從VS2015 Update2開始,有些安裝包無法選擇跳過,隻能退出安裝。

之是以提示安裝包損壞,是因為系統中缺少

microsoft root certificate authority 2010

microsoft root certificate authority 2011

這兩個證書,導緻安裝包驗證無法通過,是以認為損壞。

解決方法:

1.找一台正常裝了VS2015的電腦,Win+R打開運作,輸入certmgr.msc,打開證書管理界面。

在離線環境中使用.NET Core

2.在受信任的根證書頒發機構中找到缺少的兩項。按照預設方式導出(不知道為什麼我這台電腦上有重複)。

3.證書複制到内網,打開證書管理界面,然後在受信任的根證書辦法機構中導入證書。

這樣就可以正常安裝VS2015 Update3了。

此外還要說明的是除了下載下傳VS2015 Update3的CD光牒鏡像外,還可以離線安裝檔案,把安裝檔案考到離線環境下安裝。具體方法是:在官方下載下傳頁面中下載下傳Web安裝程式

https://www.visualstudio.com/downloads/download-visual-studio-vs

以community版本為例,在安裝程式所在目錄打開指令行視窗,輸入:vs_community_CHS.exe /layout 這樣就可以把檔案都離線下來,貌似比CD光牒鏡像内容要多一些。

這個可以用與VS2015同樣的方式離線,下載下傳線上安裝程式後,在安裝程式所在目錄打開指令行視窗輸入:

DotNetCore.1.0.0-VS2015Tools.Preview2.exe /layout

即可把安裝檔案下載下傳到相同目錄下packages檔案夾裡,其中也包含了.Net Core SDK。比較慘的是我的内網電腦裝了某國産防毒軟體,每次一運作安裝就提示我惡意操作然後強行中止安裝,我又沒權限關掉防毒軟體,是以隻好在一個一個包手動裝的,不過好在可以正常使用。因為離線環境總是缺這缺那的,如果安裝過程中出現什麼問題,隻要檢視錯誤log,然後解決就可以。

.NET Core的包依賴全都使用nuget,線上環境下自然是友善,離線環境下就稍麻煩一點了。在安裝VS2015 Update3時,.NET Core所需的官方依賴包都已經安裝在了(預設安裝)C:\Program Files (x86)\Microsoft SDKs\NuGetPackages目錄下,在nuget管理中也可以看到這是預設的離線包目錄,我們需要什麼樣的包隻要把它複制到這個目錄,在nuget管理中的程式包源選擇離線的源即可。

在離線環境中使用.NET Core

那麼怎麼獲得離線安裝包呢,我們在用nuget安裝程式包時會在C:\Users\{你的使用者名}\.nuget\packages目錄進行緩存,隻要找到緩存的包複制到離線環境,放到nuget離線目錄即可。

另外還有一種方式就是在内網架設nuget服務,這個也十分容易,

http://edi.wang/Post/2012/12/15/setup-private-nuget-server

阿迪王這篇網文章比較詳細,可以參考。考慮到要用的.NET Core比較新,我用的最新版的NugetServer是可以用的,其它版本的沒試。服務架設好了在nuget管理中添加新的包源就可以了。

這種方式同樣可以添加其它項目(例如WPF)的包依賴。

除了VS外也可以使用VS Code開發.NET Core,我的方式是在能聯網的電腦上下載下傳VS Code,然後裝一堆需要的插件,插件都裝在了C:\Users\{你的使用者名}\.vscode\extensions目錄下,隻要把這個目錄打包考到離線環境中,解壓到相同目錄下就能用了。

另外用VS Code開發在dotnet restore時需要加-s參數指明包源:dotnet restore -s 包目錄。或者在項目的根目錄添加nuget.config檔案

此檔案可在github上下載下傳: https://github.com/aspnet/Home/blob/dev/samples/latest/HelloMvc/NuGet.Config

在packageSources中添加自己的包源。

整個過程還是花了一些時間的,中途有幾次很郁悶不想搞了。但實在很想在工作環境中用.NET Core做點東西試試,幸好最終搞定了。想想看還是有些小激動的。

更多内容歡迎通路我的部落格:http://www.durow.vip

繼續閱讀