自从装了长城带宽,我的肠子就变成青色的了。

国内的网络环境,真的是有很大的不同,有的人装 VS 的时候,号称满速,有的人(其实就是我)要等它下载很久,还告诉我有个组件没有安装成功。很久很久以前,VS 是提供 ISO 版的离线安装包的。那个时候,最幸福的事就是,把 ISO 文件链接拉到迅雷里,然后选y离线下载,之后就可以全速下载完整个安装镜像了。但随着 VS 越来越大,这样的做法已经变得不再“科学”了。VS 开始提供一个在线的安装器。但奇怪的是,在现在 CLI 程序变得越来越“啰嗦”的时代,GUI 程序确越来越少的提供有用的信息。比如下载的速度,正在下载的文件名,文件的大小,下载的进度等等,统统没有。只能看到一个玄学般的安装进度在那里,一动不动,像是死了一样。然后又 biu 的一下,就完成了。这种体验真是神奇啊!

不过,其实 VS 还是有提供贴心的离线下载功能,当然,本质上是为了大中型企业提高效率,只是我等 community 用户顺便沾光而已。虽然官方有详细的文档,我就在这里再啰嗦一遍:

第一步:创建 offline 文件存放的位置

找一个空闲空间比较大的盘,大概需要 30G 左右的空间(完全下载,包括了几个模拟器)。30G 对于现在以 TB 记的硬盘来说,只是一部高清蓝光电影的空间,而 VS 是宇宙第一的 IDE,已经很值了吧。创建一个文件夹,比如叫 vs2017

第二步:创建下载脚本

下载 VS2017 的在线安装程序。放到刚才创建好的文件夹里。然后创建一个 cmd 文件:

vs_community.exe --layout D:\vs2017\offline

程序员都能理解这个。如果有什么错误,说明你是小白,请留言。

这个简单的脚本会下载所有的安装包。如果你不想下载所有的,可以自己选择要下载的:

vs_community.exe --layout D:\vs2017\offline --add Microsoft.VisualStudio.Workload.Azure Microsoft.VisualStudio.Workload.ManagedDesktop Component.GitHub.VisualStudio

察看包的列表请点击这里

第三步:运行脚本,然后等待

这一步的时间视每个人的网络而定。如果你网速不快,可以去干点正经事了。

第四步:安装证书

下载完成之后,别急着安装。我想这个离线包可能是用了什么本地的 Web Server,而又需要 https,所以你得先把几个证书装上,位置在 vs2017\offline\certificates。不要偷懒,要都装。双击就可以安装。如果双击不行,就右键选择安装。

第五步:安装

下面才开始正式的安装。要注意的是,不要运行你下载的那个 installer,要运行 vs2017\offline\vs_community.exe 这个 installer。顺带提示一下,要用右边的滚动条,不要用鼠标的滚轮。不然鼠标会坏的。剩下的就是选你需要的组件进行安装了。

结语

离线安装有一个大好处,就是避免了选择困难症。以往因为要下载这么多安装包,所以我都会“精挑细选”每一个组件,以保证安装完成之后,正好可以满足现在的工作,还能有一些可以探索的东西。结果就是总是会装很多。而这次因为所有的安装包都已经下载了,什么时候想装什么,只需要去运行离线安装程序,就可以随时安装想研究的功能,而不用再等待很长的下载时间了。

另外,那个下载离线包的脚本不要删,可以隔三岔五的运行一下,更新一下离线安装。

安装 VS2017 的正确姿势的更多相关文章

  1. 在Linux(ubuntu server)上面安装NodeJS的正确姿势

    上一篇文章,我介绍了 在Windows中安装NodeJS的正确姿势,这一篇,我们继续来看一下在Linux上面安装和配置NodeJS. 为了保持一致,这里也列举三个方法 第一个方法:通过官网下载安装 h ...

  2. 在Windows中安装NodeJS的正确姿势

    NodeJS已经非常流行了,而且可以预见他将继续受到追捧.这确实是一个不错的创举,想想看他现在能做什么吧 1.服务器程序(典型的就是用来做网站或者restful服务,主打就是多线程,非阻塞,最后,一个 ...

  3. 安装 Anaconda 的正确姿势

    下面以 Anaconda2 安装为例, 说明如何更加流畅的使用 Conda Install Anaconda2 安装 Anaconda2(从清华源下载比较快) wget https://mirrors ...

  4. 阿里云centos7使用yum安装mysql的正确姿势

    yum快速安装mysql 新增yum源 rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 查看可用的 ...

  5. centos7安装redis的正确姿势

    目前redis5已经发布,Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本.按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的 ...

  6. windows安装redis的正确姿势

    安装: 1,redis官方下载地址:https://redis.io/download,redis 64位下载地址:https://github.com/ServiceStack/redis-wind ...

  7. centos7 安装mysql的正确姿势

    1. 添加MySQL Yum源 MySQL官网>DOWNLOADS>MySQL Yum Repository找到合适版本的yum源 $wget https://dev.mysql.com/ ...

  8. ubuntu 安装 mysql 的正确姿势

    1.下载官方提供的mysql-apt-config.deb包进行APT源设置,下载地址:https://dev.mysql.com/downloads/repo/apt/ 2. // 将 mysql- ...

  9. 安装luasocket 的正确姿势

    在lua中用下面这种方式使用socket,安装luasocket-2.0.2后老是报一些莫名其妙的错误. require("socket") 下面是部分报错信息 lua: erro ...

随机推荐

  1. IO流-file

    1.1 IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把 ...

  2. php接收base64图片并保存

    header("Content-Type: text/html; charset=utf-8"); /*print_r($_FILES)*/;//所有传入的图片都在files这个数 ...

  3. 重排DL

    题解: https://www.luogu.org/problemnew/show/T51442 从这题上还是学到不少东西.. 以前并没有写过ex-bsgs 正好拿这个复习中国剩余定理和bsgs了(我 ...

  4. 一起学Hive——详解四种导入数据的方式

    在使用Hive的过程中,导入数据是必不可少的步骤,不同的数据导入方式效率也不一样,本文总结Hive四种不同的数据导入方式: 从本地文件系统导入数据 从HDFS中导入数据 从其他的Hive表中导入数据 ...

  5. 【Android】Android 监听apk安装替换卸载广播

    [Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...

  6. Codeforces 802I Fake News (hard) (SA+单调栈) 或 SAM

    原文链接http://www.cnblogs.com/zhouzhendong/p/9026184.html 题目传送门 - Codeforces 802I 题意 求一个串中,所有本质不同子串的出现次 ...

  7. ELK安装(windows)

    一.安装JAVA环境 在Oracle官网获取最新版的Java版本,官网:http://www.oracle.com/ 安装完成后,配置JAVA_HOME和JRE_HOME. 二.下载安装ELK htt ...

  8. P1074 靶形数独 dfs回溯法

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  9. Python 主、次(major,minor)版本号获取

    Python  主.次(major,minor)版本号获取 import sys sys.version_info sys.version_info.major sys.version_info.mi ...

  10. string通过逗号分割不用split方法

    package com.simon; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub ...