很早開始就對.NET Core比較關注,一改微軟以前給人的印象,變得輕量、開源、跨平臺。最近打算試着在工做中使用。但工做是在與互聯網徹底隔離的網絡中進行的,所以就開始了在離線環境中部署.NET Core開發環境的嘗試。總的來講仍是比較蛋疼的,幾乎每一個階段都遇到了問題。不過還好最後搞定了,寫下這篇博客作個記錄,同時分享給有相似需求的童鞋。如下都是親測有效。git
開發.NET Core可使用VS2015和VS Code。在這裏先討論VS2015的狀況,畢竟若是在Windows下開發,VS2015功能上仍是要強太多。.NET Core Web Tools必需要VS2015 Update3以上,也就是首先要在內網安裝VS2015 Update3。我剛開始的方式是從官網下載光盤鏡像,而後安裝。但這樣大多數狀況下是沒法安裝的。會提示「安裝包丟失或損壞」,以前裝VS2015時能夠選擇跳過文件,裝完後也能用(至少WPF沒問題),但從VS2015 Update2開始,有些安裝包沒法選擇跳過,只能退出安裝。github
之因此提示安裝包損壞,是由於系統中缺乏api
microsoft root certificate authority 2010緩存
microsoft root certificate authority 2011網絡
這兩個證書,致使安裝包驗證沒法經過,因此認爲損壞。visual-studio
解決方法:spa
1.找一臺正常裝了VS2015的電腦,Win+R打開運行,輸入certmgr.msc,打開證書管理界面。插件
2.在受信任的根證書頒發機構中找到缺乏的兩項。按照默認方式導出(不知道爲何我這臺電腦上有重複)。命令行
3.證書複製到內網,打開證書管理界面,而後在受信任的根證書辦法機構中導入證書。rest
這樣就能夠正常安裝VS2015 Update3了。
此外還要說明的是除了下載VS2015 Update3的光盤鏡像外,還能夠離線安裝文件,把安裝文件考到離線環境下安裝。具體方法是:在官方下載頁面中下載Web安裝程序
https://www.visualstudio.com/downloads/download-visual-studio-vs
以community版本爲例,在安裝程序所在目錄打開命令行窗口,輸入:vs_community_CHS.exe /layout 這樣就能夠把文件都離線下來,貌似比光盤鏡像內容要多一些。
這個能夠用與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管理中的程序包源選擇離線的源便可。
那麼怎麼得到離線安裝包呢,咱們在用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
<?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中添加本身的包源。
整個過程仍是花了一些時間的,中途有幾回很鬱悶不想搞了。但實在很想在工做環境中用.NET Core作點東西試試,幸虧最終搞定了。想一想看仍是有些小激動的。