在離線環境中使用.NET Core 0x00 寫在開始 很早開始就對.NET Core比較關註,一改微軟之前給人的印象,變得輕量、開源、跨平臺。最近打算試著在工作中使用。但工作是在與互聯網完全隔離的網路中進行的,因此就開始了在離線環境中部署.NET Core開發環境的嘗試。總的來說還是比較蛋疼的,幾 ...
在離線環境中使用.NET Core
0x00 寫在開始
很早開始就對.NET Core比較關註,一改微軟之前給人的印象,變得輕量、開源、跨平臺。最近打算試著在工作中使用。但工作是在與互聯網完全隔離的網路中進行的,因此就開始了在離線環境中部署.NET Core開發環境的嘗試。總的來說還是比較蛋疼的,幾乎每個階段都遇到了問題。不過還好最後搞定了,寫下這篇博客做個記錄,同時分享給有類似需求的童鞋。以下都是親測有效。
0x01安裝VS2015 Update3
開發.NET Core可以使用VS2015和VS Code。在這裡先討論VS2015的情況,畢竟如果在Windows下開發,VS2015功能上還是要強太多。.NET Core Web Tools必須要VS2015 Update3以上,也就是首先要在內網安裝VS2015 Update3。我剛開始的方式是從官網下載光碟鏡像,然後安裝。但這樣大多數情況下是無法安裝的。會提示“安裝包丟失或損壞”,之前裝VS2015時可以選擇跳過文件,裝完後也能用(至少WPF沒問題),但從VS2015 Update2開始,有些安裝包無法選擇跳過,只能退出安裝。
之所以提示安裝包損壞,是因為系統中缺少
microsoft root certificate authority 2010
microsoft root certificate authority 2011
這兩個證書,導致安裝包驗證無法通過,所以認為損壞。
解決方法:
1.找一臺正常裝了VS2015的電腦,Win+R打開運行,輸入certmgr.msc,打開證書管理界面。
2.在受信任的根證書頒發機構中找到缺少的兩項。按照預設方式導出(不知道為什麼我這臺電腦上有重覆)。
3.證書複製到內網,打開證書管理界面,然後在受信任的根證書辦法機構中導入證書。
這樣就可以正常安裝VS2015 Update3了。
此外還要說明的是除了下載VS2015 Update3的光碟鏡像外,還可以離線安裝文件,把安裝文件考到離線環境下安裝。具體方法是:在官方下載頁面中下載Web安裝程式
https://www.visualstudio.com/downloads/download-visual-studio-vs
以community版本為例,在安裝程式所在目錄打開命令行視窗,輸入:vs_community_CHS.exe /layout 這樣就可以把文件都離線下來,貌似比光碟鏡像內容要多一些。
0x02 安裝DotNetCore.1.0.0-VS2015Tools.Preview2
這個可以用與VS2015同樣的方式離線,下載線上安裝程式後,在安裝程式所在目錄打開命令行視窗輸入:
DotNetCore.1.0.0-VS2015Tools.Preview2.exe /layout
即可把安裝文件下載到相同目錄下packages文件夾里,其中也包含了.Net Core SDK。比較慘的是我的內網電腦裝了某國產殺毒軟體,每次一運行安裝就提示我惡意操作然後強行中止安裝,我又沒許可權關掉殺毒軟體,所以只好在一個一個包手動裝的,不過好在可以正常使用。因為離線環境總是缺這缺那的,如果安裝過程中出現什麼問題,只要查看錯誤log,然後解決就可以。
0x03 如何使用nuget
.NET Core的包依賴全都使用nuget,線上環境下自然是方便,離線環境下就稍麻煩一點了。在安裝VS2015 Update3時,.NET Core所需的官方依賴包都已經安裝在了(預設安裝)C:\Program Files (x86)\Microsoft SDKs\NuGetPackages目錄下,在nuget管理中也可以看到這是預設的離線包目錄,我們需要什麼樣的包只要把它複製到這個目錄,在nuget管理中的程式包源選擇離線的源即可。
那麼怎麼獲得離線安裝包呢,我們在用nuget安裝程式包時會在C:\Users\{你的用戶名}\.nuget\packages目錄進行緩存,只要找到緩存的包複製到離線環境,放到nuget離線目錄即可。
另外還有一種方式就是在內網架設nuget服務,這個也十分容易,
http://edi.wang/Post/2012/12/15/setup-private-nuget-server
阿迪王這篇網文章比較詳細,可以參考。考慮到要用的.NET Core比較新,我用的最新版的NugetServer是可以用的,其它版本的沒試。服務架設好了在nuget管理中添加新的包源就可以了。
這種方式同樣可以添加其它項目(例如WPF)的包依賴。
0x04 使用VS Code開發
除了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
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" /> <add key="NuGetorg" value="https://nuget.org/api/v2/" /> </packageSources> </configuration>
在packageSources中添加自己的包源。
0x05 寫在最後
整個過程還是花了一些時間的,中途有幾次很鬱悶不想搞了。但實在很想在工作環境中用.NET Core做點東西試試,幸好最終搞定了。想想看還是有些小激動的。