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