![]() |
逃跑的椰子 · 深度学习做股票预测靠谱吗? - 知乎· 1 年前 · |
![]() |
神勇威武的灌汤包 · 如何用Pandas重命名一个重置索引上的多个列· 1 年前 · |
![]() |
玩滑板的柚子 · C++ static ...· 1 年前 · |
![]() |
另类的蚂蚁 · Linux数据库服务器buffer/cach ...· 1 年前 · |
用户分析 程序调试 重载函数 方法重载 |
https://learn.microsoft.com/zh-cn/visualstudio/releases/2022/release-notes-v17.0 |
![]() |
礼貌的消炎药
2 年前 |
为 配置为在 17.0 LTSC 频道上接收更新 的 Visual Studio 2022 版本 17.0 的 Enterprise 和 Professional 用户提供支持,他们将在 2023 年 7 月之前收到针对安全漏洞的修补程序。 有关 Visual Studio 支持的基线的详细信息,请查看 Visual Studio 2022 的支持策略 。
单击下面的按钮之一,从 17.0 LTSC 频道下载 Visual Studio 2022 版本 17.0 的最安全版本。 可以在 Visual Studio 订阅 网站上找到其他 17.0 LTSC 产品。
访问 Visual Studio 网站可访问最新版本的 Visual Studio 2022 产品的链接。 有关如何安装和更新 Visual Studio 2022 的说明,请参阅 将 Visual Studio 2022 更新到最新版本 。 Visual Studio 管理员指南 包含有关如何在整个组织中部署 Visual Studio 的指南。
Visual Studio Community 版本仅在具有 Visual Studio 最新次要版本的最新服务版本的当前频道上受支持。 你可以从 visualstudio.microsoft.com/downloads 或 my.visualstudio.com 安装最新版本的 Visual Studio Community
可从 Visual Studio 2022 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2022 版的详细信息,可参阅以下文章:
发布日期:2023 年 2 月 14 日
发布日期:2023 年 2 月 14 日
CVE-2022-41953 Git GUI 克隆远程代码执行漏洞
发布日期:2023 年 1 月 10 日
发布时间:2022 年 12 月 13 日
发布时间:2022 年 11 月 8 日
发布日期:2022 年 10 月 11 日
发布日期:2022 年 9 月 13 日
CVE-2022-38013 .NET 拒绝服务漏洞 ASP.NET Core 3.1 和 .NET 6.0 中存在拒绝服务漏洞,其中恶意客户端可能会导致堆栈溢出,这可能会在攻击者发送在模型绑定期间分析的自定义有效负载时导致拒绝服务攻击。
发布日期:2022 年 8 月 9 日
发布时间:2022 年 7 月 12 日
发布日期:2022 年 6 月 14 日
发布日期:2022 年 5 月 10 日
[ CVE-2022-29117 .NET 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可以操纵 Cookie 并导致拒绝服务。
CVE-2022-23267 .NET Core 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可利用通过 HttpClient 分配的过量内存导致拒绝服务。
CVE-2022-29145 .NET 拒绝服务漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在漏洞,恶意客户端可在解析 HTML 表单时导致拒绝服务。
CVE-2022-24513 特权提升漏洞 当 Microsoft Visual Studio 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。
发布日期:2022 年 4 月 19 日
发布日期:2022 年 4 月 12 日
CVE-2022-24767 DLL 劫持漏洞 在 SYSTEM 用户帐户下运行卸载程序时,Git for Windows 安装程序中存在潜在的 DLL 劫持漏洞。 Git for Windows 现已更新为版本 2.35.2.1。
CVE-2022-24513 特权提升漏洞 当 Microsoft Visual Studio 更新程序服务错误分析本地配置数据时,存在潜在的特权提升漏洞。
发布日期:2022 年 3 月 8 日
CVE-2020-8927 漏洞 .NET 5.0 和 .NET Core 3.1 中存在远程代码执行漏洞,其中在 1.0.8 之前的 Brotli 库版本中存在缓冲区溢出。
CVE-2022-24464 漏洞 分析某些类型的 http 表单请求时,.NET 6.0、.NET 5.0 和 .NET CORE 3.1 中存在拒绝服务漏洞。
CVE-2022-24512 漏洞 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在远程代码执行漏洞,其中堆栈缓冲区溢出发生在 .NET Double Parse 例程中。
CVE-2021-3711 OpenSSL 缓冲区溢出漏洞 OpenSSL 中存在潜在的缓冲区溢出漏洞,Git for Windows 会使用该漏洞。 Git for Windows 现已更新为版本 2.35.1.2,解决了此问题。
发布时间:2022 年 2 月 8 日
CVE-2022-21986 漏洞 当 Kestrel Web 服务器处理某些 HTTP/2 和 HTTP/3 请求时,.NET 5.0 和 .NET 6.0 中存在拒绝服务漏洞
发布时间:2022 年 1 月 13 日
发布时间:2021 年 12 月 16 日
发布时间:2021 年 12 月 14 日
为了防止潜在的恶意利用导致错误表示代码,Visual Studio 编辑器将不再允许双向文本控制字符来操纵编辑表面上的字符顺序。 一个新选项将使这些双向文本控制字符与占位符一起显示。 双向文本控制字符仍将出现在代码中,因为此行为仅影响代码编辑器中呈现的内容。
此功能在“工具”\“选项”中控制。 在“文本编辑器”\“常规”页面下,存在“显示双向文本控制字符”选项,默认情况下会选中此选项。 选中后,所有双向文本控制字符都将呈现为占位符。 取消选中该选项将还原为先前不呈现这些字符时的行为。
如果 Unicode 字符属于以下任一范围,则将其视为双向文本控制字符:U+061c、U+200e-U+200f、U+202a-U+202e、U+2066-U+2069。
CVE-2021-43877 .NET 漏洞 ANCM 中存在一个特权提升漏洞,当 .NET Core、.NET 5 和 .NET 6 应用程序托管在 IIS 中时,该漏洞可能会允许提升特权。
CVE-2021-42574 双向文本漏洞 双向文本控制字符可用于使代码在编辑器中的呈现与磁盘上所包含的内容不同。
发布时间:2021 年 11 月 30 日
开发者社区提供了 17.0 中可用修复的完整列表 。
发布时间:2021 年 11 月 16 日
发布时间:2021 年 11 月 8 日
Azure 云服务
buildPresets.targets
选项。 这样用户可以在 CMake 项目中生成目标的子集。
/scanDependencies
标志,用于为 CMake 项目输出 C++20 模块依赖项,如
P1689r4
中所述。 这是为了支持使用 CMake 生成基于模块的项目而迈出的一步,我们正致力于在更高版本中完成此支持。
-fsanitize=fuzzer
下的 libfuzzer。 有关更多详细信息,请参阅
文档
。
_Check_return_
或
_Must_inspect_result_
批注的函数的返回值。
gsl::not_null
的支持以进行代码分析。
_SILENCE_AMP_DEPRECATION_WARNINGS
。 有关更多详细信息,请参阅
AMP 弃用链接
。
VSSDK\VisualStudioIntegration\Common\Assemblies
文件夹中。 如果生成依赖于这些程序集,请迁移你的项目以改用 NuGet 包。 对于脱机情况:
Git 工具
有关更多详细信息,请参阅上面的链接
IntelliCode
JavaScript/TypeScript
.NET 6 SDK
<exception>
标记
UWP 扩展 SDK 的工具箱填充
更新、LTSC 和部署
Web 工具
.NET Framework 的 WPF XAML 设计器
.design.dll
和
Microsoft.Windows.Design.Extensibility
的上一个模型已启用。 如果已为 .NET (.NET Core) 创建了一个
.designtools.dll
扩展,则同样的扩展也适用于面向 .NET Framework 的新版 WPF XAML 设计器。 请参阅下面的
迁移文档
,以获取有关如何迁移到新的扩展性模型的详细信息。
有关更多信息,请单击下面的链接。
XAML 示例数据
有关更多信息,请单击下面的链接。
使用 .NET 的移动开发
Python 工具
C++ IntelliSense

这是新的断点,允许用户将断点配置为仅在首次命中另一个断点时启用。 调试时,Visual Studio 调试程序仅在命中先决条件断点时在依赖断点处暂停应用程序。 可以通过从设置窗口中启用“仅在命中以下断点时启用”复选框,然后从下拉列表中选择希望基于其配置依赖断点的先决条件断点,将任何断点转换为依赖断点。
断点槽改进
我们添加了新的断点标志符号,以指示用户可以设置断点的位置。
右键单击该断点标志符号可提供包含选项的新上下文菜单;这样可以快速创建高级断点(条件断点、跟踪和临时断点)。
此新断点仅允许用户中断代码一次。 调试时,Visual Studio 调试器针对此断点仅暂停应用程序运行时一次,并在命中该断点之后立即将其删除。 可通过在设置窗口中启用“命中断点后将其删除”复选框,将任何断点转换为临时断点。 也可使用此新设置右键单击断点槽中的上下文菜单来设置此断点。
我们为断点添加了拖放手势。 现在可通过按住断点并在所需的代码行上释放,将断点从一个位置移动到另一个位置。 只要上下文中存在操作/条件变量,就可以对高级断点使用拖放操作。
解决方案资源管理器中的外部源节点
我们在解决方案资源管理器中添加了一个新的外部源节点。 此节点当前仅在调试时显示,并且将显示加载了包含源服务器或源链接信息符号的托管模块的源。 调试时,任何加载的包含源服务器信息的托管符号文件 (.pdb) 都将显示在此节点下。 可以像任何其他解决方案资源管理器文件夹一样浏览文件,也可以双击某个项,从源服务器下载文件,然后在 VS 编辑器中打开它。
“附加到进程”对话框改进
我们在“附加到进程”对话框中添加了新的自动刷新复选框,选中该复选框后,会使用可用进程自动刷新进程列表。 使用“附加到进程”对话框中新的“从桌面选择任何窗口”选项,用户可以从桌面选择任何正在运行的窗口,并将其附加到关联的进程进行调试。
内存转储诊断分析
发生 Stack Overflow 异常时,查找根调用帧可能比较困难,而且会耗费大量的时间。 我们最新的分析器提供了一个方便的调用堆栈视图,并删除了重复帧和干扰帧,以便更快地进行问题分析。
将 VS Code 主题转换为 Visual Studio 主题
我们创建了一个主题转换器工具,可以将 VS Code 主题转换为在 Visual Studio 中有效。 在此处试用。
新建 Visual Studio 主题包
默认 VS Code 主题现在可作为 Visual Studio 主题包使用。 请在此处查看主题包。
将主题同步到 Windows OS
我们添加了将 Visual Studio 主题同步到 Windows 主题的功能,以便根据可用的环境光量调整主题。 若要启用此功能,请导航到“工具”>“主题”>“使用系统设置”。
为选项卡着色
若要启用为选项卡着色功能,请导航到“工具”>“选项”>“选项卡和窗口”,并启用“为选项卡着色”。
现在可通过子词导航“Ctrl+Alt+向左键”和“Ctrl+Alt+向右键” 。 例如,字符串 HelloWorld 将 Hello 和 World 标识为子词。 启用“工具”>“选项”>“文本编辑器”>“常规”中的“子词导航”将导致与字词相关的命令(例如 TransposeWord)与子词交互。
自动保存功能现已在“工具”>“选项”>“环境”>“预览功能”下提供。 如果启用该功能,Visual Studio 应用程序会失去焦点(例如,另一个窗口获得焦点),所有脏文档都将保存到磁盘(如果可能)。 如果无法保存任何文件,它将保持脏状态,直到用户使用“保存”或“另存为...”命令显式保存文件。
多插入点复制/粘贴体验
改进了多插入点复制和粘贴体验。 以前,将多行粘贴到多个插入点时,会在每个插入点复制整个剪贴板。 现在,将多行粘贴到相同数量的插入点时,会将每一行插入相应的插入点。 若要使用多插入点,请按“Alt+Shift+鼠标单击”或“Alt+Shift+.”,并使用“Ctrl+Shift+箭头键”展开选定内容。 接下来,按 Ctrl+C 复制多个选定内容中的文本。 使用 Alt+Shift+鼠标单击为要粘贴到所需位置的每一行创建多个插入点。 最后,按 Ctrl+V 将每行粘贴到其自己的插入点。
此外,可以使用 Alt+Shift+向上键或向下键,或者使用 Alt+Shift+鼠标拖动,来选择多个插入点。 以前,这些操作会创建框选择。 现在,框选择将转换为多个插入点。 与在精确位置单击以插入单独的插入点相比,此方法操作起来更容易且速度更快。 如果希望在展开多插入点选择时将框选择与Alt+Shift+箭头键和 Alt+Shift+鼠标拖动一起使用,请转到“工具”>“选项”>“文本编辑器”>“高级”,然后选择“使用框选择”。
Microsoft.VisualStudio.LanguageServer.Client 引入了一种新的方式,可以在语言客户端未能初始化时自定义通知。
初始化任务现在由任务状态中心 (TSC) 跟踪。 如果初始化任务失败,用户可以转到 TSC 获取相关问题的详细信息。 语言客户端现在可以自定义向用户显示的消息,可以在消息中提供有关此故障的信息,以及可以采取的修复措施。 为此,我们将在 ILanguageClient 接口中引入一组新的 API。 这些新 API 会导致 ILanguageClient 接口发生中断性变更,因此语言扩展将需要引用新包才能在 Visual Studio 2022 中运行。
以下是新的 API:
建议仅在失败显著影响用户对当前正在处理的项目的体验时,才将此属性设置为 true。
现在支持新的 JavaScript/TypeScript 项目类型,你可使用该类型在 Visual Studio 中创建单独的 Angular、React 和 Vue 项目。 这些项目是使用安装在本地计算机上的框架 cli 工具创建的。 这也意味着模板版本基于本地计算机中的 cli 版本。
在这些新项目中,你将能够运行单元测试并将其与 ASP.NET Core API 项目集成。 可在 此处 找到相关文档
今年早些时候, 我们宣布了 .NET 热重载 ,这是一个充满雄心壮志的项目,旨在为尽可能多的 .NET 开发人员提供热重载体验。 我们最初在 Visual Studio 2019 中提供了第一个预览版本,并承诺在 Visual Studio 2022 中提供更完整的体验。 今天,我很高兴能在此分享我们在 Visual Studio 2022 GA 版本中具体已经完成了哪些部分。
如果你不熟悉热重载,请参阅下面的快速简介。 Visual Studio 中的热重载体验适用于托管 .NET 和原生 C++ 应用。 无论使用哪种类型的应用,热重载的目的都是尽可能减少编辑之间的应用重启次数,从而使你通过减少等待应用重新生成、重启、重新导航到你在应用中的上一个位置等操作的时间来提高工作效率。
为此,可以编辑应用程序的代码文件并将代码更改立即应用于正在运行的应用程序,也称为“热重载”。 应用更改后,通过在应用中执行操作(或通过某种计时器等)再次重新执行代码并立即查看更改;不需要通过断点暂停应用!
若要观看此功能的一些实时演示,可以观看以下视频之一:
Visual Studio 2022 中 .NET 和 C++ 开发人员的热重载体验也有了重大改进。 工具栏中现在有“热重载”按钮的目标实现,并且外观有所改进,功能更多。
你首先会注意到带有新图标的新下拉样式按钮。 该命令从早期预览版的“应用代码更改”重命名为“热重载”。
展开按钮可以快速访问功能,例如重启正在运行的应用程序、在保存时选择切换热重载以及快速访问新的设置面板。
每个新功能的更多详细信息如下:
我们还添加了一个改进的强制编辑对话框,该对话框在不使用调试器的情况下运行 .NET 应用时可用。
此新对话框有多项改进,例如:
如果不想像以前那样采取任何自动化操作,该对话框还允许继续编辑。
但存在一个已知的限制,当使用调试器时,此新对话框在 GA 版本中将不可用,但未来的更新将完成使此新对话框在这种情况下可用的工作。
使用 Visual Studio 2022 并使用调试器启动应用时,现在可以使用“热重载”按钮热重载在调试器 (F5) 下运行的原生 C++ 应用程序。 使用 CMake 和 OpenFolder 项目生成的应用也支持热重载。
此体验由本机“编辑并继续”提供支持。有关支持的编辑类型,请参阅我们的 文档 。
自我们于 2021 年 5 月宣布热重载以来,.NET 开发人员经常提到的一个问题是“热重载是否适用于我的 .NET 应用框架/版本组合?”。 我们已经取得了巨大的进步,在大多数情况下,这一问题的答案都是肯定的,要点如下。
在以下部分中,我们将对上述摘要进行扩展,并深入了解更多详细信息。
使用 Visual Studio 2022 并使用调试器启动应用时,热重载适用于大多数应用框架,包括典型的应用类型,例如控制台、Windows 窗体 (WinForms)、WPF、UWP、WinUI 3* 和大多数类型的 ASP.NET Web 项目(用于代码隐藏编辑),包括 ASP.NET MVC、Web API,甚至较旧的 Web Forms 项目。 此列表也只是一个示例。 真正的答案是,在你拥有 .NET 并使用 Visual Studio 托管调试器的任何地方都应该获得基本的热重载支持。
这意味着,即使是 Azure Functions 之类的项目在此方案中也非常成功。 我们建议你尝试组合,如果发现任何问题,请告知我们。
*WinUI 3 默认使用不支持热重载的混合模式调试。 可以通过启用托管调试器在项目设置中修改它,使热重载正常工作。
当面向大多数类型的 .NET 6 应用(包括控制台、WPF、Windows 窗体 (WinForms)、ASP.NET Core MVC、Web API 和 Blazor 等项目类型)时,无需调试器即可使用热重载。 我们知道,一些开发人员有充分的理由或偏好于在没有调试器的情况下启动应用,我们希望此额外功能能给他们带来价值,且不会对启动时间产生影响。
此功能是 .NET 6+ 独有的,不面向 .NET 6(.NET 5 或更低版本)的应用将不支持“无调试器”方案,必须使用调试器才能访问热重载功能。
另请注意,在我们的第一个版本中,并非所有项目类型都支持“无调试器”方案。 具体而言:
能够同时使用 Visual Studio 2022 并处理面向 .NET 6 的应用的开发人员将获得最完善和功能最强大的热重载体验的好处。
支持选项的要点:
面向 .NET 6 的开发人员将继续在未来的 Visual Studio 2022 更新和 .NET 功能带以及主要版本中获得更多改进。 我们才刚刚开始!
*在 Visual Studio 2022 GA 版本中,尚未启用在使用 Visual Studio 调试器时对 Blazor WebAssembly 的热重载支持。 如果在没有调试器的情况下通过 Visual Studio 启动应用,你仍然可以获得热重载,我们正在努力在未来的 Visual Studio 更新中解决这个问题。
现在,许多 ASP.NET 方案都广泛支持基本的热重载体验。 最广泛可用的功能是能够为大多数类型的 Web 应用程序更改代码隐藏和其他 .NET 类文件。 此功能在使用 Visual Studio 调试器时有效,并且出现在以前可以使用“编辑并继续”的任何位置。
对于面向 .NET 6 的 ASP.NET Core 开发人员,还有一些其他功能不适用于较低版本的 .NET,其中包括以下改进:
注意:同时使用 Blazor Wasm 应用和 Visual Studio 2022 (17.0) 时,Razor Pages 的热重载目前仅在没有调试器的情况下启动应用时有效。 我们将在将来的更新中添加调试器支持。
.NET 热重载体验由“编辑并继续”机制提供支持,我们进行了改进,以支持超出以前的版本最初可能支持的其他类型的编辑。 改进包括:
上述改进适用于热重载和“编辑并继续”体验。
即使在最终版本中,你仍应注意一些不受支持的方案:
解决方案资源管理器中的项目或文件夹(右键单击)菜单中现在提供“同步命名空间”重构,可用于轻松同步命名空间以匹配文件夹结构。
解决方案资源管理器(右键单击)菜单现在提供后台代码分析配置。 右键单击解决方案资源管理器中的解决方案节点,然后选择“分析和代码清理”。 然后选择“设置分析范围”以配置后台代码分析的范围。
C# 语言工具
在 C# 8.0 中,我们引入了
可为空引用类型
,该类型可用于声明是否需要 null。 若要使用可为空引用类型,需要将
<Nullable>
enable
</Nullable>
元素添加到项目文件,或将 #nullable enable pragma 添加到项目中的每个源文件中。 为了帮助简化此过程,我们现在将在 .NET 项目中自动包含
<Nullable>
enable
</Nullable>
元素。
在 C# 10.0 中,我们引入了
文件范围的命名空间
,让你可以选择不在命名空间中嵌套类定义。 我们现在提供了一个重构,可将命名空间转换为文件范围的命名空间。 若要使用文件范围的命名空间,首先需要将
<LangVersion>
preview
</LangVersion>
元素添加到项目文件。 接下来,将光标置于命名空间上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“转换为文件范围的命名空间”。
现在,在应用于值类型时,可以选择一种新重构,即首选
is not null
而不是
is object
。 若要使用此新重构,请将光标置于类型检查上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“首选 null 检查而不是类型检查”。
导航到反编译源
“导航到反编译源”默认为启用状态,使你可以导航到库类型的声明。 对源代码中的库符号和反编译源调用“转到定义”时,可使用“导航到反编译源”。
编辑器的增强功能
XML 注释现在会在
<summary>
标记中自动生成
<exception>
标记,使你可以在方法显式引发异常时添加说明。
在 Visual Studio 2019 中,我们发布了 继承边距 ,可向边距添加新图标,以此表示代码的实现和替代。 单击“继承边距”图标将显示可以选择导航到的继承选项。 在此版本中,继承边距默认为启用。 若要禁用继承边距,请转到“工具”>“选项”>“文本编辑器”>“C#”或“基本”>“高级”,然后取消选择“启用继承边距” 。
with
表达式(
record struct Point(int X, int Y);
和
var newPoint = point with { X = 100 };
)。
global using
指令可避免在程序中的许多文件内重复相同的
using
指令。
dictionary?.TryGetValue(key, out value) == true
。
if (e is MethodCallExpression { Method.Name: "MethodName" })
)。
ToString
的基础记录。
(existingLocal, var declaredLocal) = expression
)。
async
方法的 AsyncMethodBuilder 可以在本地重写。
#line
指令 (
#line (startLine, startChar) - (endLine, endChar) charOffset "fileName"
) 对行映射进行精细控制。
var f = short () => 1;
)。
namespace X.Y.Z;
)。
有关更多详细信息,请参阅 C# 语言功能状态 和 重大更改 。
我们对 Razor 编辑器的性能进行了重大的改进。
加强了格式和缩进,使其更可靠、速度明显加快。
我们添加了新的 Razor 颜色! 你可以在“工具”>“选项”>“环境”>“字体和颜色”中自定义这些颜色。
TagHelper 现已着色,并在“快速信息”中提供分类支持,还提供 IntelliSense 完成工具提示。
我们在远程环境(如 Linux 容器、WSL 和通过 SSH 连接)上启用运行测试的非常早的试验性预览! 虽然这是一个非常有价值的功能,但我们请你耐心等待,因为在我们收集反馈时,此功能仍处于非常早的试验状态。 你可能不会体验到你通常所获得的流畅性,因为你可想象到我们从 Visual Studio 通信和管理已连接环境有很多不同的场景。 下面是使用此试验版远程测试的一些要求:
如何试用远程测试?
testenvironments.json
指定环境。 JSON 文件结构遵循以下架构:
testEnvironments.json
指定环境:
{
"name": "<name>",
"localRoot": "<path to local environment>", // optional
"type": "docker",
"dockerImage": "<docker image tag>",
例如:{
"version": "1",
"environments": [
"name": "linux dotnet-core-sdk-3.1",
"type": "docker",
"dockerImage": "testenv"
- 下面是用于运行面向 .NET 3.1 运行测试的 Dockerfile 示例。
FROM mcr.microsoft.com/dotnet/core/sdk:3.1
- 使用以下命令生成容器(在末尾加上“.”):
docker build -t <docker image name> -f <path to Dockerfile> .
- 本地 WSL2 连接
- 必须在本地计算机上启用 WSL2 集成。
- 可以按照以下架构,在解决方案的根目录中使用
testEnvironments.json
指定环境:{
"version": "1",
"environments": [
"name": "WSL-Ubuntu",
"type": "wsl",
"wslDistribution": "Ubuntu"
- SSH 连接
- 转到“工具”>“选项”>“跨平台”>“连接管理器”,以添加或删除 SSH 连接。 选择“添加”将可以输入所需的主机名、端口和任何凭据。
- 按照以下示例,在解决方案的根目录中使用
testEnvironments.json
指定环境:{
"version": "1",
"environments": [
"name": "ssh-remote",
"type": "ssh",
"remoteUri": "ssh://user@hostname:22"
测试资源管理器中的热重载[试验性]: 现在可以尝试新的试验性功能,使用后台的热重载技术加速测试体验。 这意味着,在首次测试运行后,如果仍然需要完整生成,你可以进行细微更改,然后运行测试,所有这些更新都将反映出来,而无需再次执行完整生成。 若要开始使用并了解更多注意事项,请参阅以下详细信息:
- 此体验仅适用于面向 .NET 6 的项目,并且必须通过访问“工具”>“选项”>“测试”选择加入
启用此选项后,即使编辑器中存在未保存的更改,也将更新测试。 我们不会生成,因此 bin 文件夹中磁盘上的二进制文件已过时。 这意味着,你可能会发现磁盘上的内容与 Visual Studio 中的测试结果不相符。 若要解决这些问题,请在签入之前,确保使用 Ctrl+Shift+B 执行完整生成。 任何显式生成都会将热重载测试结果替换为常规的完整生成测试结果。
热重载无法选取某些类型的编辑,在这些情况下,它会默认回退到执行完整生成的旧行为。 另请注意,系统仅跟踪 Visual Studio 中的更改,而编辑器中的不透明情况(例如更改目标)可能会默认回退到需要完整生成。
对于某些大的改动(例如重命名 1000 多个方法名称),热重载的时间可能比重新生成所用的时间还要长。 在这些情况下,“输出”窗格中会输出一条消息,提示用户执行完整重新生成,而不是等待热重载。
测试资源管理器中的热重载尚不提供堆栈跟踪。 如果需要使用堆栈跟踪,建议执行完整生成。
在测试资源管理器中显示 (Ctrl+E、S) :使用“在测试资源管理器中显示”功能,可从编辑器中测试方法中的光标所在位置跳转到测试资源管理器中测试所在的位置。 这可能会让你想起名为“与活动文档同步”的类似功能,该功能会在解决方案资源管理器中突出显示当前正在处理的文档。 这是开发者社区得票最多的项目之一,感谢所有投票并帮助我们确定优先支持此功能的人员! 也可以从编辑器右键单击菜单、CodeLens 测试字形和解决方案资源管理器右键单击菜单访问“在测试资源管理器中显示”。
Web 负载测试和编码的 UI 测试支持更新:Visual Studio 2022 中提供了 Web 负载测试记录器。 Visual Studio 2022 中不包含编码的 UI 测试记录器。 你仍然能够通过在 Visual Studio 2022 中编写代码来运行编码的 UI 测试和创建新测试,但记录器依赖于无法移植的 32 位依赖项。 仍可以并行安装 Visual Studio 2019,以使用编码的 UI 记录器。 提醒一下,Web 负载测试和编码的 UI 测试已于 2019 年弃用,我们计划在尽量减小其对用户的影响的情况下将其从产品中删除。 我们强烈建议对 Web UI 测试感兴趣的用户采用新的跨平台和开源 Web 测试框架 Playwright。 Playwright 支持所有主要浏览器,可更好地处理异步代码,并且还内置了测试录制功能。
受信任的位置
- 作为“信任设置”改进的一部分,我们删除了“Web 标记”复选框,并添加了一个警告对话框,在尝试打开之前不受信任的代码(例如文件、项目或文件夹)时会显示该对话框
- 现在,可以在当前文件夹或父文件夹位置信任代码
- 用户创建的项目会自动添加到用户的信任位置列表中
- 可以跳过对 Visual Studio 功能创建的临时位置的信任检查
在 IDE 中打开内容(例如解决方案、项目、文件或文件夹)之前,我们将验证文件夹位置以前是否受信任。
如果检测到不受信任的代码,我们将显示一个警告对话框,提醒你注意安全隐患,并要求你在执行正常 IDE 操作之前信任该代码。
注意:虽然此功能当前默认关闭,但可以通过“选项”>“信任设置”>“打开内容前要求信任决定”启用
外部源节点更新
解决方案资源管理器中的外部源节点现在还支持 C++。 此外,我们添加了一个新的子节点,该子节点提供所有尚未加载符号的模块。
还可使用右键单击上下文菜单直接从解决方案资源管理器加载符号,以便模块可以出现在外部源节点中。
外部源节点中的文件现在也按字母顺序排序。
已更新并已刷新图标
- 作为我们用于刷新 Visual Studio 2022 的用户界面的目标的一部分,你会发现整个 IDE 中基于一致性、易读性和熟悉性的新刷新和更新的图标。
XAML 热重载
我们更新了 XAML 热重载设置和应用内工具栏,以明确表示这些设置和应用内体验与 XAML 热重载相关,而与 .NET 热重载不相关。
我们还简化了设置窗格,以便更好地将常用选项整理到一处。
XAML 实时预览
在 Android Emulator 中运行应用或将应用作为 UWP 桌面应用运行的 WPF、UWP、WinUI 和 Xamarin.Forms 开发人员现在可以使用 XAML 实施预览功能。 实时预览捕获正在运行的应用程序用户界面,并将其引入 Visual Studio 中的停靠窗口。 这样可以更轻松地使用 XAML 热重载更改应用,同时在 Visual Studio 内部查看这些更改,而无需在进行实时 XAML 代码更改时在正在运行的应用与 Visual Studio 之间来回切换。
开始操作:
- 使用调试器启动受支持的应用程序
- 打开 XAML 实时预览,通过键入“XAML 实时预览”进行快速搜索或使用应用内工具栏中的“在 XAML 实时预览中显示”按钮
启动体验后,将提供以下功能:
- 滚动和缩放:你可以平移和缩放用来捕获应用 UI 的窗口,使其满足你的需要,以显示完整的应用或只显示你要编辑的部分。 平移和滚动操作适用于触摸板(两个手指滚动)、鼠标滚轮或按住 CTRL 键的同时单击以拖动内容。
- 标尺:你可以添加一个或多个水平/垂直标尺来覆盖正在运行的应用。 然后,可以使用鼠标或键盘将这些线条移到位置中。 使用键盘移动标尺时,使用箭头键精确定位,使用 Ctrl + 箭头键进行快速定位。 你还可以通过选择(单击)标尺并按 Delete 键来删除标尺。
- 元素选择和信息提示:使用元素选择,可以使用与“实时可视化树”或应用内工具栏中的相同功能来选择你要编辑的 XAML 元素。 选择后,还可以启用新的“信息提示”功能,以获取有关所选元素的其他信息,如字体、颜色、边距/填充信息等。 使用“元素选择”时,请考虑启用“预览所选项”:通过“实时可视化树”工具栏按钮,或“调试”>“选项”>“热重载设置”转到源 XAML。
- 窗口切换:可以控制捕获的应用窗口。
改进了 XAML 绑定体验
- 改进了属性检查器中的数据绑定图标。 现在,你可以通过单击属性旁边的“圆柱”图标快速访问“数据绑定”对话框,可以通过单击“x”图标清除绑定。
- 在快速操作中添加了“绑定”选项卡,现在只需在 XAML 设计器中单击几下即可创建绑定。
- 向“数据绑定”对话框添加了“目标属性”组合框,以便随时选择属性。
开发者社区中投票最多的问题
- 禁用
Place 'else' on a new line
时 C++ 格式不正确。
- 对话框在编辑时冻结并继续检查任何代码更新
- Win 11 下的 VS Android 模拟器启动问题 - 虚拟机监控程序
- 对话框在编辑时冻结并继续检查任何代码更新
- Win 11 下的 VS Android 模拟器启动问题 - 虚拟机监控程序
- 无法部署到 iPhone,错误 MT1001:无法在指定目录中找到应用程序
- 无法调试多个 dotnet 5 Azure 函数
- Visual Studio 在调试 UWP 应用程序时变得无响应
- Blazor WebAssembly:在浏览器关闭时执行热重载会导致无用的异常
- Visual Studio 无故崩溃
- 在平台工具集 143 中使用 std:c++lastest 时,C++ 语法着色不起作用
- vs2022 预览版 3 中的“在文件中查找”不起作用
- 分支更改后 Visual Studio 不会重载所有已更改的项目文件
- 激活语言服务器时出错
- 在解决方案资源管理器中右键单击任何项目并选择“签入”时出现异常消息。 无法签入更改。
- 生成期间生成日志输出过多时 Visual Studio UI 无响应(例如:诊断详细程度)
- 使用 C++ 的 Linux 开发 - 静态链接有误
- VS2022 中的 T4 模板需要不兼容的用法
- C++20 模块无法获取来自其他模块的模板特殊化/重载
- 在“Live Share”会话中保存文件会打开“另存为”对话框,而不是直接保存文件
- C++ 项目在启动时无法重新加载项目外部的文件
- 使用函数指针错误地编译回归
- 错误诊断带有 /permissive- 和 friend 的不明确运算符调用 (C2593)
- 升级到 16.10 后,热重载无法用于 Xamarin.Forms UWP/IOS
- 加载 Entitlements.plist 模板时出错
- dllimport constexpr 默认构造函数的 Intellisense 错误
- 系统找不到指定文件(双击生成错误消息进行导航时)
- VS2022 中不再生成 C++ 项目:找不到程序集“mscorlib.dll”
- VS2022 预览版 2.1 中的 Razor 编辑器速度缓慢
- Intellisense 无法用于 C++20
- PackageId:Microsoft.WebView2.arm64;PackageAction:Install;ReturnCode:-2147219199
- 分析器 C26110 的不正确锁定警告
- 16.10 升级因 testrunconfig 而中断了 MSTest DataSourceAttribute
- MSVC 程序全局优化会导致不正确的输出
- IDE 冻结,选项卡在未知条件下闪烁
- 添加了对使用 TLS 回调检测 DLL 的支持(通过 vsinstr.exe 检测)
- VS2019 16.10 ASP.NET WEBFORM 中不能选择事件
- MFC 单一文档项目中的灾难性故障(HRESULT 异常: 0x8000FFFF (E_UNEXPECTED))
- 基于专用化选择的主模板会导致编译错误
- 无法从预览版 1.1 更新到预览版 2.0。 在依赖项关系图中检测到一个周期:Microsoft.VisualStudio.ComponentGroup.UWP.VC
- 在 Windows Server 2022 安装 Visual Studio 2022 预览版失败。
- 使用“全部生成”时,Visual Studio 2022 预览版 1 使 IDE 故障。
- 使用 Android Emulator 进行调试时 Xamarin Android 出现故障并重启 Visual Studio 2022。
- 无法安装任何以前版本的 VS。 下载失败,因为签名无效
- CppCoreCheck::PointerSafetyXtension::SearchSmartPtrsAndReferences 中的代码分析//PREfast 警告 C26404、C26406、C26407 性能回归
- 当变量为 global 且类型为 char const 时,std::to_array 出现内部编译器错误
- 编译外部标头的错误
- 在 lambda 中使用结构化绑定时 /std:c++latest 出现 C3493
- 安装 Python 工具时,“发送反馈”按钮在 VS 2022 中不起作用
- 16.10 更新后,Aspx 文件损坏
- C++ 编译器对 constexpr 方法生成无效代码
- 声明 const 时对未使用的变量没有警告
- C++ 模块名称冲突
- 对 c++/cli ref 类执行方法调用期间,GC 会收集对象
- 自从 Visual Studio 更新到 16.9 后,无法通过 WebDeploy 项目发布 Python Django
- ICE:针对 /std:c++latest 的 ARM64 优化
- VS 16.3.0 .NET Core 3.0 Blazor Server 应用源代码灰显,并在部署后丢失 IntelliSense
- 在密钥链中找不到 iOS 代码签名密钥“iPhone Distribution: Microframe Corp
(xxxxx)'
”
- “诊断工具”窗口加载为缩图,且无法正确调整大小。
- 尝试对类调用 make_shared 时出现编译器错误 2694,且在 MSVC 16.9 预览版 2 上引发析构函数。
- 处理快照时出错,无法处理托管堆。
MSVC 允许 new-expression 中的默认初始化 const int。
- 在“复杂”STL 标头中收到警告 C5219。
- 工具提示阻止搜索结果。
- Visual Studio 出现异常。
- Intel C++ 编译器 ICL 编译失败,因为头文件中概念的使用不受 ifdef __cpp_lib_concept 的保护。
- 使用 /Zc:preprocessor 扩展 __pragma(optimize) 时出现内部编辑器错误。
- 未计算的上下文中 lambdas 内的 func 类型不正确。
- Visual Studio 安装程序提供 vsconfig 时崩溃
- 通过向导添加新对话框类后获取生成错误默认模板 MFC dll 项目。
- Visual Studio 针对本机桌面开发 C++ 的脱机安装未正确运作。
- 通过 Visual Studio 连接到 Azure VSTS 项目导致 UI 停止响应。
- 如果使用较大的字体,则“选项”中的文本框将不可读。
- Visual Studio“将新项目添加到文件夹”停止响应。
- 编辑 js/cshtml 文件时出现常量 Nullreference 异常。
- 激活远程语言服务器 C#/Visual Basic 语言服务器客户端时出错。
- /E 与 /experimental:preprocessor 和 __pragma 一起使用时出现内部错误。
通过以下链接查看 Visual Studio 2022 中所有待解决问题和可用暂避方法。
反馈和建议
我们期待你的宝贵意见和建议! 可使用安装程序或 Visual Studio IDE 右上角的“发送反馈”图标,或者通过“帮助”>“发送反馈”来报告问题或提出功能建议
。 可在 Visual Studio 开发者社区跟踪你的问题,也可在这里添加评论和查找解决方案。 此外,还可通过实时聊天支持获得免费安装帮助。
Blogs
通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。