在离线环境中使用.NET Core
0x00 寫(xiě)在開(kāi)始
很早開(kāi)始就對(duì).NET Core比較關(guān)注,一改微軟之前給人的印象,變得輕量、開(kāi)源、跨平臺(tái)。最近打算試著在工作中使用。但工作是在與互聯(lián)網(wǎng)完全隔離的網(wǎng)絡(luò)中進(jìn)行的,因此就開(kāi)始了在離線環(huán)境中部署.NET Core開(kāi)發(fā)環(huán)境的嘗試。總的來(lái)說(shuō)還是比較蛋疼的,幾乎每個(gè)階段都遇到了問(wèn)題。不過(guò)還好最后搞定了,寫(xiě)下這篇博客做個(gè)記錄,同時(shí)分享給有類似需求的童鞋。以下都是親測(cè)有效。
0x01安裝VS2015 Update3
開(kāi)發(fā).NET Core可以使用VS2015和VS Code。在這里先討論VS2015的情況,畢竟如果在Windows下開(kāi)發(fā),VS2015功能上還是要強(qiáng)太多。.NET Core Web Tools必須要VS2015 Update3以上,也就是首先要在內(nèi)網(wǎng)安裝VS2015 Update3。我剛開(kāi)始的方式是從官網(wǎng)下載光盤(pán)鏡像,然后安裝。但這樣大多數(shù)情況下是無(wú)法安裝的。會(huì)提示“安裝包丟失或損壞”,之前裝VS2015時(shí)可以選擇跳過(guò)文件,裝完后也能用(至少WPF沒(méi)問(wèn)題),但從VS2015 Update2開(kāi)始,有些安裝包無(wú)法選擇跳過(guò),只能退出安裝。
之所以提示安裝包損壞,是因?yàn)橄到y(tǒng)中缺少
microsoft root certificate authority 2010
microsoft root certificate authority 2011
這兩個(gè)證書(shū),導(dǎo)致安裝包驗(yàn)證無(wú)法通過(guò),所以認(rèn)為損壞。
解決方法:
1.找一臺(tái)正常裝了VS2015的電腦,Win+R打開(kāi)運(yùn)行,輸入certmgr.msc,打開(kāi)證書(shū)管理界面。
2.在受信任的根證書(shū)頒發(fā)機(jī)構(gòu)中找到缺少的兩項(xiàng)。按照默認(rèn)方式導(dǎo)出(不知道為什么我這臺(tái)電腦上有重復(fù))。
3.證書(shū)復(fù)制到內(nèi)網(wǎng),打開(kāi)證書(shū)管理界面,然后在受信任的根證書(shū)辦法機(jī)構(gòu)中導(dǎo)入證書(shū)。
這樣就可以正常安裝VS2015 Update3了。
此外還要說(shuō)明的是除了下載VS2015 Update3的光盤(pán)鏡像外,還可以離線安裝文件,把安裝文件考到離線環(huán)境下安裝。具體方法是:在官方下載頁(yè)面中下載Web安裝程序
https://www.visualstudio.com/downloads/download-visual-studio-vs
以community版本為例,在安裝程序所在目錄打開(kāi)命令行窗口,輸入:vs_community_CHS.exe /layout 這樣就可以把文件都離線下來(lái),貌似比光盤(pán)鏡像內(nèi)容要多一些。
0x02 安裝DotNetCore.1.0.0-VS2015Tools.Preview2
這個(gè)可以用與VS2015同樣的方式離線,下載在線安裝程序后,在安裝程序所在目錄打開(kāi)命令行窗口輸入:
DotNetCore.1.0.0-VS2015Tools.Preview2.exe /layout
即可把安裝文件下載到相同目錄下packages文件夾里,其中也包含了.Net Core SDK。比較慘的是我的內(nèi)網(wǎng)電腦裝了某國(guó)產(chǎn)殺毒軟件,每次一運(yùn)行安裝就提示我惡意操作然后強(qiáng)行中止安裝,我又沒(méi)權(quán)限關(guān)掉殺毒軟件,所以只好在一個(gè)一個(gè)包手動(dòng)裝的,不過(guò)好在可以正常使用。因?yàn)殡x線環(huán)境總是缺這缺那的,如果安裝過(guò)程中出現(xiàn)什么問(wèn)題,只要查看錯(cuò)誤log,然后解決就可以。
0x03 如何使用nuget
.NET Core的包依賴全都使用nuget,在線環(huán)境下自然是方便,離線環(huán)境下就稍麻煩一點(diǎn)了。在安裝VS2015 Update3時(shí),.NET Core所需的官方依賴包都已經(jīng)安裝在了(默認(rèn)安裝)C:\Program Files (x86)\Microsoft SDKs\NuGetPackages目錄下,在nuget管理中也可以看到這是默認(rèn)的離線包目錄,我們需要什么樣的包只要把它復(fù)制到這個(gè)目錄,在nuget管理中的程序包源選擇離線的源即可。
那么怎么獲得離線安裝包呢,我們?cè)谟胣uget安裝程序包時(shí)會(huì)在C:\Users\{你的用戶名}\.nuget\packages目錄進(jìn)行緩存,只要找到緩存的包復(fù)制到離線環(huán)境,放到nuget離線目錄即可。
另外還有一種方式就是在內(nèi)網(wǎng)架設(shè)nuget服務(wù),這個(gè)也十分容易,
http://edi.wang/Post/2012/12/15/setup-private-nuget-server
阿迪王這篇網(wǎng)文章比較詳細(xì),可以參考。考慮到要用的.NET Core比較新,我用的最新版的NugetServer是可以用的,其它版本的沒(méi)試。服務(wù)架設(shè)好了在nuget管理中添加新的包源就可以了。
這種方式同樣可以添加其它項(xiàng)目(例如WPF)的包依賴。
0x04 使用VS Code開(kāi)發(fā)
除了VS外也可以使用VS Code開(kāi)發(fā).NET Core,我的方式是在能聯(lián)網(wǎng)的電腦上下載VS Code,然后裝一堆需要的插件,插件都裝在了C:\Users\{你的用戶名}\.vscode\extensions目錄下,只要把這個(gè)目錄打包考到離線環(huán)境中,解壓到相同目錄下就能用了。
另外用VS Code開(kāi)發(fā)在dotnet restore時(shí)需要加-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 寫(xiě)在最后
整個(gè)過(guò)程還是花了一些時(shí)間的,中途有幾次很郁悶不想搞了。但實(shí)在很想在工作環(huán)境中用.NET Core做點(diǎn)東西試試,幸好最終搞定了。想想看還是有些小激動(dòng)的。
相關(guān)文章:
微軟.NET 正式劈腿成功,橫跨所有平臺(tái)
.NET Core 1.0 CentOS7 嘗試
解讀發(fā)布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開(kāi)發(fā)-中間件(Middleware)
結(jié)合Jexus + Kestrel 部署 asp.net core 生產(chǎn)環(huán)境
通過(guò)Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門(mén)
用 Visual Studio Code 在 macOS 上創(chuàng)建首個(gè) ASP.NET Core 應(yīng)用程序
用 Visual Studio 和 ASP.NET Core MVC 創(chuàng)建首個(gè) Web API
用 Visual Studio 發(fā)布一個(gè) Azure 云 Web 應(yīng)用程序
ASP.NET Core MVC 與 Visual Studio 入門(mén)
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
教你實(shí)踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進(jìn)行 Session 緩存
asp.net core 中間件詳解及項(xiàng)目實(shí)戰(zhàn)
第二章 指南(4.3)添加 View
dotnet core開(kāi)發(fā)體驗(yàn)之開(kāi)始MVC
dotnet core 開(kāi)發(fā)體驗(yàn)之Routing
聊聊ASP.NET Core默認(rèn)提供的這個(gè)跨平臺(tái)的服務(wù)器——KestrelServer
簡(jiǎn)析.NET Core 以及與 .NET Framework的關(guān)系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創(chuàng)建專業(yè)的控制臺(tái)程序
簡(jiǎn)析 .NET Core 構(gòu)成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會(huì)上正式發(fā)布
.NET Core:面向未來(lái)的開(kāi)源跨平臺(tái)開(kāi)發(fā)技術(shù)
微軟說(shuō)它深愛(ài)著Linux,現(xiàn)在它用行動(dòng)證明了
移植.NET Core計(jì)劃,整合各平臺(tái)變得更簡(jiǎn)單了!
ASP.NET Core 介紹
通過(guò)幾個(gè)Hello World感受.NET Core全新的開(kāi)發(fā)體驗(yàn)
ASP.NET Core 運(yùn)行原理剖析1:初始化WebApp模版并運(yùn)行
.NET Core系列 : 1、.NET Core 環(huán)境搭建和命令行CLI入門(mén)
Asp.Net Core 發(fā)布和部署( MacOS + Linux + Nginx )
Asp.Net Core 發(fā)布和部署(Linux + Jexus )
學(xué)習(xí)ASP.NET Core,你必須了解無(wú)處不在的“依賴注入”
.NET Core應(yīng)用類型(Portable apps & Self-contained apps)
.NET Core 1.0發(fā)布:微軟開(kāi)源跨平臺(tái)大布局序幕
ASP.NET Core 運(yùn)行原理剖析2:Startup 和 Middleware(中間件)
在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序
ASP.NET Core 開(kāi)發(fā)-Entity Framework (EF) Core 1.0 Database First
擁抱.NET Core,跨平臺(tái)的輕量級(jí)RPC:Rabbit.Rpc
使用 dotnet watch 開(kāi)發(fā) ASP.NET Core 應(yīng)用程序
ASP.NET Core 發(fā)布至Linux生產(chǎn)環(huán)境 Ubuntu 系統(tǒng)
ASP.NET Core Docker部署
ASP.NET Core "完整發(fā)布,自帶運(yùn)行時(shí)" 到j(luò)exus
全球首發(fā)免費(fèi)的MySql for Entity Framework Core
ASP.NET Core開(kāi)發(fā)-使用Nancy框架
.NET Core全新路線圖
解決.NET Core中MailKit無(wú)法使用阿里云郵件推送服務(wù)的問(wèn)題
原文地址:http://www.cnblogs.com/durow/p/5681331.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的在离线环境中使用.NET Core的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ASP.NET Core 十种方式扩展你
- 下一篇: .NET程序员走向高端必读书单汇总