Visual Studio 2022 Community 不完全攻略
0. 前言
建议结合视频阅读哦
Visual Studio 2022 Community 不完全攻略
有问题或者意见欢迎评论 !
1. 下载&安装
Visual Studio Community 是免费使用的.
下载最新版 (目前是 2022 , 一定要去官网下载 ! )
https://visualstudio.microsoft.com/vs/community/
下载完打开 Visual Studio Installer.
- 在安装页面, 左下角可以修改安装位置 (下载缓存可以不保留, 但必须要和本体放在不同的文件夹中).
- 编写基本的 C++ 程序只需勾选 使用 C++ 的桌面开发 这个工作负荷.
- 语言包自行选择. 建议使用英文界面强迫自己学英语.
- 一般都会选择黑暗模式.
- 安装完重启电脑.
- 使用 VS 2022 需要注册一个微软账号.
2. 认识 Visual Studio
2.1. 创建一个空项目
Create a new project => Empty Project => 勾选 Place Solution and Project in the same directory ( VS 的目录结构比较混乱, 稍后会介绍更改的方式).
如果打开不是 Start Window 而是之前打开的项目, 可以进入 Tools => Environment => General, 在 On startup, open: 选项中选择 Start window.
2.2. 选项卡
各个选项卡都是可以拖动.
既可以放大缩小又可以改变位置, 还可以固定或浮动.
一般来说 Solution Explorer 是一个比较重要的选项卡, 如果意外关闭可以在上方的菜单栏重新打开: View => Solution Explore . 你也可以使用快捷键 Ctrl+Alt+L .
2.3. Solution Configuration & Platform
在上方菜单栏默认有 Debug 和 x64 两个选项, 可以分别切换成 Release 与 x86.
Release 模式会自动优化你写的代码, Debug 便于调试.
Release 模式生成的 .exe 文件可以不依赖其他文件在别人的电脑上直接运行, Debug 不行.
x64 和 x86 分别代表在 64 位和 32 位平台下编译运行.
2.3. 两个绿箭头和一个小火苗
从代码到运行程序经历两个阶段
- Compile --- 把一个个 .cpp 文件编译成电脑读得懂的二进制文件 - Ctrl+F7
- Build --- 把一个个二进制文件 link 在一起生成 .exe 可执行文件 - Ctrl+Shift+B
代码的语法错误在 Compile 阶段就能被 Compiler 识别, 但一些 linker 错误要到 Build 阶段会被 linker 识别.
当然, 更多的错误只能靠你自己识别.
- 实心的绿箭头是 Compile + Build + Run(运行生成的 .exe 可执行文件) - F5.
- 空心的绿箭头是跳过一个个调式断点的 Compile + Build + Run(运行生成的 .exe 可执行文件), 这里还没讲到调试, 所有不用深究 - Ctrl+F5.
- 红色的小火苗是 Hot Reload, 简单地说就是在不终止当前的运行进程下, 重新 Compile + Build. 例如在一个循环中, 已经循环了两次, 这时你修改了循环中的部分代码, 然后 Hot Reload, 下一次循环就会以你改完的代码运行.
3. 界面设置
3.1. 滚动条
右键滚动条 => Scroll Bar Options
可以更改滚动条的显示方式.
3.2. 字体
Tools => Options => Enviroment => Fonts and Colors
可以更改字体样式, 大小和颜色.
3.3. 主题
Tools => Theme
4. Hello World !
右键 Solution Explorer 下的 Source Files, Add => New Item...
选择 C++ File, 然后重命名.
注意: 你要创建什么类型的文件就选择什么类型, 不要创建了一个 C++ File 然后在外部改后缀名, 这会导致 linker 错误.
在编写程序的时候, 要注意如下一些快捷键:
- 代码自动补全: Tab
- 注释 / 取消注释选中行: Ctrl+K+C / Ctrl+K+U
- 多行编辑: Ctrl+Alt+LeftClick
- 变量 / 对象 / 类 / ... 重命名: Ctrl+R+R
运行完可能什么都没有, 或者有个黑色窗口闪了以下. 这是正常的, 因为你的程序结束了! 如果你希望程序结束后保持控制台窗口打开, 就在上方点击 Tools => Options => Debugging => 关闭 Automatically close the console when debugging stops .
5. 快捷键设置
Tools => Options => Enviroment => KeyBoard
找到想要做的操作, 在键盘上按出想要基于的快捷键, 查看有没有冲突.
6. 代码风格设置
这里以 C++ 为例.
Tools => Options => Text Editor => C/C++ => General
里面有若干设置选项, 其中可能 Automatic brace completion 比较重要 (如果喜欢所有右括号都手动打而不是自动补全的话可以考虑关闭这个选项).Tools => Options => Text Editor => C/C++ => Tabs
用来设置 Tab 键是打一个 '\t' 还是 n 个 ' '. 我个人习惯四个空格.Tools => Options => Text Editor => C/C++ => Advanced
这里面有很多非常重要的设置选项. 其中关于 IntelliSense 的设置直接关系到自动代码补全. 更改前务必查阅足够多的资料, 并且先保存好先前的设置.Tools => Options => Text Editor => C/C++ => Code Style
General: 更改注释格式 / 注释生成方式.
Formatting: 各种格式自定义设置, 比如 { 跟在 函数名同行还是新一行.Tools => Options => Text Editor => C/C++ => IntelliSense
VS 2022 新增的 inline hints 设置.
7. 文件目录
前面提到 VS 的默认文件生成目录非常混乱, 右键 Solution Explorer 中的 Project 名, 选择 Open Folder in File Explorer 打开当前项目处在的文件夹.
7.1. 几个文件的说明
正常情况下当前文件夹内会出现这样几个文件:
- .vs 文件夹(隐藏)
- x64 文件夹
- Project1.sln
- Project1.vcxproj
- Project1.vcxproj.filters
- Project1.vcxproj.user
- Source.cpp
这里要说明的是,
.sln 文件是一个 Visual Studio project 的入口. 当你想打开一个别人的 project , 不要从 Start Window 打开项目文件夹, 而应该直接运行 .sln 文件.
.vcxproj 文件时项目不可缺少的文件. 参考官方文档:
MSBuild is the default project system in Visual Studio; when you choose File > New Project in Visual C++ you're creating an MSBuild project whose settings are stored in an XML project file that has the extension .vcxproj.
因此如果你想要开源 Visual Studio 项目, 除非只想发布源代码, 否则至少应当保留 .sln 文件和 .vcxproj 文件.
我们在工程中将 Source.cpp 建立在一个叫 Source Files 的文件夹内, 但是当前的目录里没有这个文件夹. 这是因为这些文件夹其实是虚拟的 Filter (筛选器), 现实中所有文件都被堆在一起. 这其实不是一个很好的文件管理方式. 哪些文件归于哪个 filter 的信息都储存在 .filters 文件内部. 所以如果你的项目不依赖 filter, 开源时可以忽略 .filter 文件.
When Solution Explorer is used to add a file to a project, the filters file (.vcxproj.filters) defines where in the Solution Explorer tree view the file is added, based on its file name extension.
.user 文件直接参考官方文档就行了, 储存的是一些断点信息.
A user file (.vcxproj.user) stores user-specific properties, for example, debugging and deployment settings. The vcxproj.user file applies to all projects for a particular user.
.vs 文件夹内部储存了 template bar information 以及一些其他内容, 这些都不需要被加入 Source Control.
x64 文件夹内部储存了所有的生成文件.
7.2. 更好的文件管理
这里主要分为两部分, 代码文件的管理和生成文件的管理.
所有代码文件都堆在 .filter 文件夹内并不整洁.
在 Solution Explorer 内点击 Show All Files (如果看不到请拖大选项卡), 显示文件夹内确实的情况.
在空白部分右键 => Add , 添加两个文件夹: header 和 source 分别存放头文件和源文件.
右键 source 文件夹 => Add => C++ File. 这样就在 source 文件夹内部添加了一个 .cpp 文件. 你也可以在别的地方新建然后拖动进去.
对于生成文件的管理, 右键 Solution Explorer 中的项目名 => Properties => Output Directory 改为: $(SolutionDir)\bin\$(Platform)\$(Configuration)\
; Intermediate Directory 改为: $(SolutionDir)\bin\intermediate\$(Platform)\$(Configuration)\
. 这样改动, 生成的中间文件和可执行文件就会依据运行环境不同区分开.
8. 调试
在开发大项目的时候, 调试是必不可少的工具. 在调试时请保证处于 Debug 环境而不是 Release 环境 !
8.1. 添加断点
断点顾名思义就是程序运行到这行会停下来 (还没执行这行). 你可以在多个地方添加断点.
8.2. Step into & Step Over
F5 运行程序, 到这行确实停下来了. 接下来想一步步让程序往下走, 可以按 F11(Step into) 或者 F10(Step over). 前者会在调用用户定义的函数的地方跳入该函数; 后者会直接执行完该函数进入下一行. 需要注意的是, Step into 不会跳入由 "<>" 头文件 (标准库) 中定义的函数.
8.3. 在断点间跳跃
当到达一个断点程序暂停后, 再按 F5 就会跳到下一个可能到达的断点 --- 没有后续可能到达的断点就直接运行完程序.
8.4. 调试看什么 ?
这是个好问题. 在调试过程中, 点击上方 Debug => Windows => Locals 可以打开 Locals 窗口监测各变量的数值变化情况. 这是非常非常有用的 --- 只要你又耐心看.
对于指针变量储存的数组地址, Locals 窗口只会显示指针所指唯一元素的地址. 解决方案是 Debug => Windows => Watch 1/2/3/4 打开一个 Watch 窗口, 然后双击 Add item to watch 输入诸如 ptr, 10
, 就能看到 ptr 所指的 10 个元素.
9. 对 C 库函数的兼容问题
部分 C 语言函数在 Visual Studio 中使用会报错, 这是考虑到内存安全问题. 我的建议是, 如果你自己写项目 (一直在 Visual Studio 中写), 那就遵循他的规则使用改进的函数, 比如 scanf_s()
, strcpy_s()
.
如果这是一个开源项目, 可能有别的编译器参与, 就在 Solution Explorer 中右键项目名 => Properties => C/C++ => Preprocessor, 在 Preprocessor Definitions 中添加一条 _CRT_SECURE_NO_WARNINGS
. 这样 (仅在) 当前这个项目中允许了使用原生的 C 库函数.
10. <bits/stdc++.h>
Visual Studio 没有添加这个万能头文件. 实际上除非竞赛, 真正团队项目开发的时候是不会用这个头文件的. 想要使用 <bits/stdc++.h> 需要自己手动添加到头文件文件夹中.
10.1. C++ 标准 & 宏变量 __cplusplus
在 C++ 中定义了 __cplusplus 这宏变量表示当前的 C++ 标准.
在随便一个地方打 __cplusplus 然后把鼠标移上去, 会跳出 Expands to 199711L 这个提示.
在 Solution Explorer 中右键项目名 => Properties => General . 这里面的 C++ Language Standard 可以选择用不同的标准编写 C++ 程序. 但是无论切换到什么标准, __cplusplus 总是 Expands to 199711L . 用微软自己的话说:
Because a lot of existing code appears to depend on the value of this macro matching 199711L, the compiler doesn't change the value of the macro unless you explicitly opt in by using the /Zc:__cplusplus compiler option.
改不改很多时候都没什么差别, 但是 C++ 17 和 20 弃用了若干标准库, 导致如果 __cpluscplus 不扩展到正确数值, <bits/stdc++.h> 会报错.
解决方法如下:
在 Solution Explorer 中右键项目名 => Properties => C/C++ => Command Line , 在 Additional Options 中 添加一句: /Zc:__cplusplus
, 确定即可.
10.2. 添加 bits/stdc++.h
在以下链接下载我修改过的 bits/stdc++.h
随便 inlcude 一个标准库头文件, 鼠标点一下这个头文件, 按 F12 Go To Document, 右键右上角弹出的 tab 标签, 选择 Open Containing Folder . 在这个文件夹内新建一个 bits 文件夹, 再把下载好的 bits/stdc++.h 扔进去, 就大功告成了.
Visual Studio 2022 Community 不完全攻略的更多相关文章
- [翻译]正式宣布 Visual Studio 2022
原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...
- 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!
美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...
- .NET6系列:微软正式宣布Visual Studio 2022
系列目录 [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...
- .NET6系列:Visual Studio 2022 线路图
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...
- 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5
Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...
- Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布
具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5. https://devblogs. ...
- 乘风破浪,遇见Visual Studio 2022预览版(Preview),宇宙最强开发者工具首次迎来64位版本
简介 众所周知,我们从官方新闻来看,对Visual Studio 2022最大的期待莫过于:其是首个64位的Visual Studio,这个宇宙最强开发者工具一脚迈入了新的阶段. https://vi ...
- Visual Studio 2022 预览版3 最新功能解说
我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...
- 微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版
微软今天发布了Visual Studio 2022 最接近正式发布的RC版本,同时宣布在11月8日发布正式版,届时将在线上发布虚拟的发布活动,具体参见:https://devblogs.microso ...
随机推荐
- linux下的nginx日志自动备份压缩--日志切割机
部署完毕nginx之后,发现自己的/var/log/nginx/*log的日志不会压缩,一直都是一个文本写日志, 时间久了,日志文件内存过于增加,将会导致在日志添加过程效率降低,延长时间. 默认安装的 ...
- thymeleaf实现前后端数据交换
1.前端传数据后端接收: 用户在登录界面输入用户名和密码传给后端controller,由后端判断是否正确! 在html界面中要传递的数据name命名,通过表单的提交按钮会传递给响应的controlle ...
- 无需CORS,用nginx解决跨域问题,轻松实现低代码开发的前后端分离
近年来,前后端分离已经成为中大型软件项目开发的最佳实践. 在技术层面,前后端分离指在同一个Web系统中,前端服务器和后端服务器采用不同的技术栈,利用标准的WebAPI完成协同工作.这种前后端分离的&q ...
- 160_技巧_Power BI 新函数-计算工作日天数
160_技巧_Power BI 新函数-计算工作日天数 一.背景 Power BI 2022 年 7 月 14 日更新了最新版本的,版本号为:2.107.683.0 . 更多更新内容可以查看官方博客: ...
- Docker 安全及日志管理
Docker 安全及日志管理 容器的安全性问题的根源在于容器和宿主机共享内核. 容器里的应用导致Linux内核崩溃,那么整个系统可能都会崩溃. 虚拟机并没有与主机共享内核,虚拟机崩溃一般不会导致宿主机 ...
- 深入剖析(JDK)ArrayQueue源码
深入剖析(JDK)ArrayQueue源码 前言 在本篇文章当中主要给大家介绍一个比较简单的JDK为我们提供的容器ArrayQueue,这个容器主要是用数组实现的一个单向队列,整体的结构相对其他容器来 ...
- excel网络函数库之谷歌翻译
不知道看到本篇文章的小伙伴是否被表格翻译所困扰,当面对大量需要被翻译的文件内容,有着三头六臂的孙悟空也难以招架得住,那么有没有一个工具能让我们快速将大量文件进行翻译呢? ExcelApi函数库的横空出 ...
- 题解 P1999【覆盖墙壁】
数学题 令 \(A_n\) 为 \(2\times n\) 的墙壁放满块的方案数,考虑递推. 显然 \(A_0=1\),我们令对于 \(k<0\),\(A_k=0\) . 放直线型的块非常好递推 ...
- Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)
设置 添加实验室人员,系统用户 因为创建实验室时必须选择实验室经理/主任/负责人,因此需要先创建实验室经理人员. 创建人员时输入人员姓名,可上传签名图片. 创建实验室部门 输入实验室名称.代码,选择实 ...
- 自动提交本地git仓库脚本
#! /bin/bash git_user_name=`git config user.name` git_user_mail=`git config user.email` branch_name= ...