在离线环境中使用.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做点东西试试,幸好最终搞定了。想想看还是有些小激动的。

相关文章:

  • 微软.NET 正式劈腿成功,横跨所有平台

  • .NET Core 1.0 CentOS7 尝试

  • 解读发布:.NET Core RC2 and .NET Core SDK Preview 1

  • [.NET Core].NET Core R2安装及示例教程

  • ASP.NET Core 开发-中间件(Middleware)

  • 结合Jexus + Kestrel 部署 asp.net core 生产环境

  • 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

  • ASP.NET Core 中文文档 第一章 入门

  • 用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

  • 用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

  • 用 Visual Studio 发布一个 Azure 云 Web 应用程序

  • ASP.NET Core MVC 与 Visual Studio 入门

  • 第二章指南(4.2)添加 Controller

  • DotNet Core 介绍

  • asp.net core 中间件详解及项目实战

  • 教你实践ASP.NET Core Authorization(免看文档教程)

  • asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

  • asp.net core 中间件详解及项目实战

  • 第二章 指南(4.3)添加 View

  • dotnet core开发体验之开始MVC

  • dotnet core 开发体验之Routing

  • 聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer

  • 简析.NET Core 以及与 .NET Framework的关系

  • .NET Core 使用Dapper 操作MySQL

  • 使用 CommandLineApplication 类创建专业的控制台程序

  • 简析 .NET Core 构成体系

  • .NET Core也可以使用MongoDB了

  • .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

  • .NET Core:面向未来的开源跨平台开发技术

  • 微软说它深爱着Linux,现在它用行动证明了

  • 移植.NET Core计划,整合各平台变得更简单了!

  • ASP.NET Core 介绍

  • 通过几个Hello World感受.NET Core全新的开发体验

  • ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

  • .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

  • Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

  • Asp.Net Core 发布和部署(Linux + Jexus )

  • 学习ASP.NET Core,你必须了解无处不在的“依赖注入”

  • .NET Core应用类型(Portable apps & Self-contained apps)

  • .NET Core 1.0发布:微软开源跨平台大布局序幕

  • ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

  • 在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

  • ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

  • 拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc

  • 使用 dotnet watch 开发 ASP.NET Core 应用程序

  • ASP.NET Core 发布至Linux生产环境 Ubuntu 系统

  • ASP.NET Core Docker部署

  • ASP.NET Core "完整发布,自带运行时" 到jexus

  • 全球首发免费的MySql for Entity Framework Core

  • ASP.NET Core开发-使用Nancy框架

  • .NET Core全新路线图

  • 解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

原文地址:http://www.cnblogs.com/durow/p/5681331.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java常量池技术

转载自 java常量池技术摘要&#xff1a; 简介 常量池在java用于保存在编译期已确定的&#xff0c;已编译的class文件中的一份数据。它包括了关于类&#xff0c;方法&#xff0c;接口等中的常量&#xff0c;也包括字符串常量&#xff0c;如String s "java"这种…

华为荣耀5a是android几,华为荣耀5a各版本区别 华为荣耀5a各版本 对比【图文】

一个多月前&#xff0c;华为发布了华为荣耀5a&#xff0c;相信不少人都对这部手机十分期待。这款产品主打Slogan是“青春好拍档”。延续了5系列的定位&#xff0c;不仅价格便宜还拥有不错的拍照及音质调教。那么华为荣耀畅玩5A有几个版本?各版本有什么区别?下面小编就带来华为…

.NET程序员走向高端必读书单汇总

如今程序开发工作越来越简单(丰富的API、智能的IDE、越来越多的开发框架)&#xff0c;普通人通过简单的训练&#xff0c;通过组合和复制就能完成众多程序的功能。因此程序员这种过去高技术职业的代名词&#xff0c;现在却如此低贱&#xff0c;被称之为码农。借用微观经济学原理…

android roboguice2,Android快速开发框架 roboguice

//使用框架前class AndroidWay extends Activity {TextView name;ImageView thumbnail;LocationManager loc;Drawable icon;String myName;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);name (TextVi…

java 为什么需要常量池

转载自 java 为什么需要常量池java中讲的常量池&#xff0c;通常指的是运行时常量池&#xff0c;它是方法区的一部分&#xff0c;一个jvm实例只有一个运行常量池&#xff0c;各线程间共享该运行常量池。 java内存模型中将内存分为堆和栈&#xff0c;其中堆为线程间共享的内存数…

.NET Core第三方开源Web框架YOYOFx

YOYOFx框架 YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务&#xff0c;基于 .NET 和 Mono 平台。 本着学习的态度&#xff0c;造了这个轮子&#xff0c;也是为了更好的了解各个框架的原理和有点&#xff0c;还希望可以和大家多交流 。 GitHub&#xff1a;https://github.co…

JavaScript实现搜索框效果

要求&#xff1a;搜索框获取焦点的时候如果里面的内容是“请输入关键字”&#xff0c;则清空&#xff0c;否则不清空 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

JVM调优总结(1):一些概念

转载自 JVM调优总结&#xff08;1&#xff09;&#xff1a;一些概念数据类型Java虚拟机中&#xff0c;数据类型可以分为两类&#xff1a;基本类型和引用类型。基本类型的变量保存原始值&#xff0c;即&#xff1a;他代表的值就是数值本身&#xff1b;而引用类型的变量保存引用…

android通讯录增删改查,android 通话记录的增删改查 .

//获取当前的手机号public String getLocalNumber() {Context context getApplicationContext();TelephonyManager tManager (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);String number tManager.getLine1Number();return number;}//删除通话记录privat…

使用C#进行系统编程

虽然对于系统编程&#xff08;System programming&#xff09;的定义很模糊&#xff0c;不过可以将其描述为在比特、字节、指令&#xff0c;或CPU周期层面所进行的思考。系统编程这个概念也暗含了对性能和可靠性的需求。Microsoft技术总监Joe Duffy在QCon New York活动中介绍了…

html表格转换为csv,python实现将html表格转换成CSV文件的方法

python实现将html表格转换成CSV文件的方法发布于 2015-11-18 16:53:39 | 155 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido van Rossum于1989年底发明&#xff0c;第一个公开发行版发行于1991年。Pyth…

JVM调优总结(2):基本垃圾回收算法

转载自 JVM调优总结&#xff08;2&#xff09;&#xff1a;基本垃圾回收算法可以从不同的的角度去划分垃圾回收算法&#xff1a; 按照基本回收策略分 引用计数&#xff08;Reference Counting&#xff09;: 比较古老的回收算法。原理是此对象有一个引用&#xff0c;即增加一个…

巧妙使用信用卡N个小技巧

大家看标题也看出来了&#xff0c;今天的博文与之前的相差十万八千里&#xff0c;既不是代码&#xff0c;也不是黑科技&#xff0c;既不属于创业&#xff0c;也不属于赚钱&#xff0c;今天咱们坐下来就慢慢的谈谈信用卡吧&#xff0c;现在大多数白领&#xff0c;老板&#xff0…

ubuntu16.4下用jexus部署asp.net core rtm

今天说下ubuntu 下部署asp.net core&#xff0c;不需要安装.net core sdk&#xff0c;自带运行时方式部署&#xff0c;利用jexus服务器转发请求到asp.net core. 1.部署准备环境 vmware虚拟机&#xff08;其他也可以&#xff09; ubuntu16.04镜像 2.发布环境 win10系统 vs2015 u…

html页面会出现浏览器崩溃,大规模WebGL应用引发浏览器崩溃的几种情况及解决办法...

我们使用Javascript写WebApp的时候&#xff0c;一般都不会考虑对象的生命周期&#xff0c;不太关注内存“泄露”的问题&#xff0c;依赖JS引擎的垃圾回收机制就可以运行的很好&#xff0c;基本上很少会出现浏览器崩溃的情况。但在Web端显示大规模三维模型的时候&#xff0c;内存…

细说SSO单点登录

什么是SSO&#xff1f; 如果你已知道&#xff0c;请略过本节&#xff01; SSO核心意义就一句话&#xff1a;一处登录&#xff0c;处处登录&#xff1b;一处注销&#xff0c;处处注销。即&#xff1a;在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应…

java实现字符逆序输出

package cn.jbit.array;import java.util.Arrays;public class CharsSort {/*** 字符逆序输出*/public static void main(String[] args) {char[] chars new char[]{a,c,u,b,e,p,f,z};System.out.print("原字符序列&#xff1a;");for(int i 0; i < chars.lengt…

html5页面转场,基于HTML5 SVG的页面过渡切换效果

示例中使用了CSS Flexbox和CSS变量&#xff0c;不是所有的浏览器都支持这些新的CSS属性。该HTML5 SVG的页面过渡变形切换效果的基本HTML结构如下&#xff1a;d"M -44,-50 C -52.71,28.52 15.86,8.186 184,14.69 383.3,22.39 462.5,12.58 638,14 835.5,15.6 987,6.4 1194,1…

JVM调优总结(4):分代垃圾回收

转载自 JVM调优总结&#xff08;4&#xff09;&#xff1a;分代垃圾回收为什么要分代 分代的垃圾回收策略&#xff0c;是基于这样一个事实&#xff1a;不同的对象的生命周期是不一样的。因此&#xff0c;不同生命周期的对象可以采取不同的收集方式&#xff0c;以便提高回收效…

.NET Core系列 : 2 、project.json 这葫芦里卖的什么药

.NET Core系列 &#xff1a; 1、.NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境&#xff0c;本文介绍.NET Core中最重要的一个配置文件project.json的相关内容。我们可以使用.NET Core 的dotnet 命令行接口&#xff08;CLI&#xff09;dotnet new命令创建一个应用&…