在離線環境中使用.NET Core

来源:http://www.cnblogs.com/durow/archive/2016/07/18/5681331.html
-Advertisement-
Play Games

在離線環境中使用.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做點東西試試,幸好最終搞定了。想想看還是有些小激動的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前些天公司項目需要對上傳的圖片打水印,前端採用angularjs,後端nodejs,網上一搜,找到了一個images的庫,在本地Windows環境下試了下還不錯,然後就上傳測試伺服器(centos6.5系統)了,結果就出問題了,網上一查,發現需要gblic2.14(centos6.5系統自帶的是2. ...
  • 但是對於在各個 IT 領域的人們,我們需要將這個事情提高一個層面。我們需要使用像 SSH 密鑰這樣的加密秘鑰,而不只是密碼。 設想一個場景:我有一個運行在雲上的伺服器,用作我的主 git 庫。我有很多台工作電腦,所有這些電腦都需要登錄到這個中央伺服器去做 push 與 pull 操作。這裡我設置 g ...
  • 設計界面: 代碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; usi ...
  • 前幾天,領導讓我找一下老系統(Java)里getRemoteUser方法都哪個文件用了,package是什麼,方法被調用了多少次,當時因為著急,所以,直接人工找的,但是以後要是再出現,人工找就太討厭了,畢竟程式員以懶著稱,因此,寫了一個小工具進行查詢。 一、效果圖 從圖中不難看出,現在的功能只能查詢 ...
  • 先看一段代碼,本文所有的例子,都是在這段代碼的基礎上進行的. 一個矩形rec,放到佈局容器內,這個矩形就是被動畫控制的對象,一個double類型的動畫. 以前我後臺寫動畫,都是通過先給對象註冊名稱,通過名稱,把對象(Rectangle)和動畫(DoubleAnimation)通過Storyboard ...
  • 快捷鍵是Ctrl+F8 快捷鍵是Ctrl+Shift +Alt +A ...
  • 作為一個菜鳥,避免不了被老鳥罵爹,但是如果能有一手漂亮的代碼給你作盾牌,多少能擋掉不少的鋒芒,作為菜鳥中的菜鳥的我,便嘗試起了重構自己的代碼。 這是一種不堪的憂傷…… 首先,教材入手《重構:改善即有代碼的設計》,重點是PDF版本,又是憂傷,買本書都沒錢了,又是一種憂傷…… 然後就對著書,邊學習,便嘗... ...
  • 在我們前面的代碼中已經接觸到了C#的類(class)還有類的方法。我們的代碼主要都放在Program 類的Main方法裡邊。我們也創建了我們自己的方法。同時我們也使用了類Console的writeline等方法。但是我想到目前為止我們還是不是很清楚類是一個什麼東西。接下來我就給大家介紹一下類還有面向 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...