Visual Studio 17.8现已推出!
解锁开发人员生产力的新高度:优化的C++支持、增强的企业功能和完整功能。NET 8集成
Visual Studio 2022的最新更新(17.8)现已正式提供!这个通用版本提供了一套涵盖生产力、编程语言和企业管理的全面增强功能,是向前迈出的一大步。根据广泛的用户反馈开发,此版本与完全兼容。NET 8,目前也普遍可用。
让我们知道您的最喜爱的功能!
这个版本非常重要,不仅因为它有广泛的功能列表,还因为它强调社区驱动的增强功能。以上功能是由客户自己投票决定的顶级改进。对于企业来说,此版本简化了客户端初始化并添加了新的管理功能,确保开发团队能够高效运行。高级调试控件和扩展的测试评测选项是此版本的一部分,为应用程序性能优化提供了关键指标。
生产力
GitHub复制
在最新版本的Visual Studio中,使用Visual Studio提高工作效率变得更加容易。GitHub Copilot autocomplete现在作为可选组件提供,与新的VisualStudio一起安装更容易。激活功能需要GitHub Copilot订阅;可以免费试用.
此处显示组件详细信息:Visual Studio Enterprise工作负载和组件ID | Microsoft Learn。
创建拉取请求–在Visual Studio中添加审阅者并使用“全部标记”编辑描述
我们在这方面看到了很多参与开发者社区门票.作为响应,您现在可以在Visual Studio中创建一个Pull Request,从而完成整个内部工作流。推送后,通过单击Git Changes中通知横幅中的链接,或通过Git>GitHub/Azure DevOps>New Pull Request从顶级菜单进入New Pull请求窗口。在Visual Studio的每个预览版本中自17.7起预览2,我们已经分享了关于这一体验的新更新,我们很高兴能将其作为一项功能提供给普通观众。
采取本次调查让我们知道你的想法。
保留大小写查找和替换
执行Replace时,现在可以保留代码中每个匹配项的原始大小写。请注意,要获得Pascal大小写和Camel大小写,Replace字符串也必须是Pascal或Camel大小写法。
使用“Alt+V”或单击“保留大小写”选项在“替换”窗口中切换大小写保留。
快速替换(Ctrl+H):
在文件中替换(Ctrl+Shift+H):
分享您对案例保存替换经验的看法开发者社区门票.
多报告限额增加
随着越来越多的人使用我们的多基因功能,我们听说开发者社区建议票你们中的许多人需要活动存储库的数量超过10个。现在,您可以在解决方案中一次使用多达25个存储库。
总结差异(和改进!)
利用新的摘要差异视图来关注代码中的更改。
在每个比较视图中启用,新的汇总差异视图允许您切换上下文行可以更快地进行文件比较。我们还实现了diff和compare视图中的Summary视图。这个新选项允许您仅查看文件中的更改以及几行上下文,从而使在提交中查看更改或比较两个文件更加高效。
通过分享您的反馈,让我们了解您对此功能的看法在这里并与我们就开发者社区的建议票.
远程Linux单元测试支持
我们添加了支持,以便您可以从VisualStudio的测试资源管理器在远程Linux机器上运行CTest和GTest测试,就像您执行任何本地测试一样。
使全局函数静态
Visual Studio现在提示您将全局函数标记为静态函数。当您遇到没有向前声明的全局函数时,VisualStudio将提供一个快速修复,用螺丝刀图标表示。
您可以在“工具”>“选项”>“文本编辑器”>“C/C++”>“智能感知”下自定义此功能的设置。要了解有关此功能和Make Member Function Const的更多信息,请访问我们的在Visual Studio博客中使成员函数常量和全局函数静态。
清理和分类#include指令
现在,您可以自动对#include指令进行排序和清理。
未使用的#include指令将在编辑器中变暗。您可以将鼠标悬停在暗显的包含上,然后使用灯泡菜单删除该包含或所有未使用的包含。
现在还可以为当前通过其他标头间接包含的实体添加#include指令。例如,如果您在代码中使用std::string,但没有#include<string>,那么如果传递性包含的其他头包含正确的头,那么代码仍然有效。这使得代码对其他标头中的更改很脆弱。如果#include cleanup检测到间接标头,将显示一个快速操作(在默认视图中由三个点表示)。将鼠标悬停在它上面会通知您,正在使用该及物include中的内容。然后,您可以选择单独添加直接包含,或者添加所有可传递使用的包含。
有关此功能的更多信息,请访问清除Visual Studio中的C/C++#includes.
要自动对#include排序,请右键单击任意#incl包括语句。然后,将鼠标悬停在上下文菜单中的#include directives选项上,将显示“Sort#inclUDirectives”
您还可以配置可传递的包含清理,并通过“代码清理”条目进行包含排序。首先,通过分析>代码清理>配置代码清理打开代码清理配置菜单,或者单击底部状态栏中扫帚图标旁边的箭头并选择配置代码清理。将所需的功能添加到Included fixers部分,然后单击扫帚图标运行它们。
您可以在“工具”>“选项”>“文本编辑器”>“C/C++”>“代码清理”中配置包括清理和排序。
Visual Studio更新通知
注意到新的东西了吗?对于VisualStudio2022,我们在VS任务栏图标中添加了覆盖,以帮助您了解VS何时更新。当有可用的更新并且您启用了“关闭时更新”选项时,图标将出现。一旦关闭VS,更新将立即开始,因此图标也将消失。有关关闭时更新的更多信息,请访问关闭时VS更新.
GitHub虚拟形象添加到Git存储库窗口
在Git Repository窗口的多分支图中查看您的GitHub化身。
现在,您可以使用Microsoft团队应用程序项目模板中发布的新选项为Microsoft团队创建更多类型的应用程序。包含在团队工具包现在可以创建以下选项:
- Echo Bot–一个简单的机器人项目,可以回声用户输入并进行自定义
- 链接展开项目–将URL链接呈现为自适应卡的消息扩展
- 自定义搜索结果–一个消息扩展,用于从聊天合成区域运行自定义搜索查询,并将结果显示为自适应卡
- Collect Form Input and Process Data(收集表单输入和流程数据)–一个基于操作的消息扩展,显示如何获取用户输入、执行某些操作并将结果发送回用户。
在ASP中安装“Microsoft团队开发工具”组件。NET工作负载开始或访问文档了解更多信息.
性能优化
提高剃须刀/剃须刀的响应能力
使用Razor和Blazor的解决方案将获得更好的响应能力。我们通过在VisualStudio和Roslyn之间的跨进程通信期间显著减少内存分配来实现这一点。我们测试了OrchardCore公司解决方案,结果令人印象深刻。为了打开解决方案并准备好Razor智能感知,我们分配了大约1.4GB的内存。更少的堆分配意味着垃圾收集器的工作量更少,从而提高了响应能力。
增强的F5速度
通过优化断点的设置方式,我们大大提高了本地项目的F5性能。任何给定项目所看到的改进都取决于带断点的文件数量、带符号的DLL数量等。此外,我们已经为Windows应用程序优化了PDB加载过程,减少了PDB定位后加载PDB所需的时间。在我们的测试中,这些优化为Unreal Editor项目带来了20%的速度显著提高。
针对C++虚拟引擎的优化智能感知
我们已经改进了在打开以前打开的C++文件后,智能感知和着色变得可用的速度。我们始终为打开的文件缓存IntelliSense状态。在17.8中,我们重新构造了缓存中的读取,以便首先计算最关键的信息,包括所选引用的彩色化和高亮显示。这种优化有助于您更快地提高生产效率。
为非SDK风格打造加速度。NET项目
Visual Studio 17.8扩展构建加速目标为的托管应用程序非SDK样式项目(例如,针对.NETFramework4.8或更低版本的项目)对构建时间有很大影响。要启用,请按如下所示设置msbuild项目属性:
<项目>
<属性组>
<AccelerateBuildsInVisual Studio>真</AccelerateBuildsInVisual Studio>
</PropertyGroup(属性组)>
</项目>
这基于17.5中介绍的成功SDK风格项目,显著减少增量构建时间。
在内部解决方案的内部测试中,我们注意到在增量构建时间方面提高了50%。然而,实际的改进取决于构建开始时项目的状态。具体来说,与解决方案中的总项目相比,修改的项目越少,改进越大。您所经历的实际改进程度取决于项目的具体特征及其修改。
C++游戏开发
C++结构化诊断
大量编译器错误似乎无法导航,这是许多C++开发人员生活中的祸根。这取决于提供更好体验的工具,以帮助您理解诊断并了解如何解决根本问题。
为了帮助实现这一点,您现在可以在“输出”窗口和新的“问题详细信息”窗口中查看结构化诊断。具有可用附加信息的错误列表条目将在新的“详细信息”列中显示一个图标。
单击此项将在“问题详细信息”窗口中打开这些详细信息,允许您浏览错误的相关信息:
此嵌套结构也反映在“输出”窗口中:
1> 来源:cpp(18.6):
1> 或“无效宠物(_T0)”
1> 来源:cpp(23.5):
1> 未满足相关约束
1> 来源.cpp(18,10):
1> “宠物<蜥蜴>”的概念被评估为错误
1> 来源.cpp(16,20):
1> “has-memberpet<蜥蜴>”这个概念被评估为false
1> 来源.cpp(10,44):
1> “宠物”:不是“蜥蜴”的成员
1> 来源.cpp(20,8):ra
1> 参见“蜥蜴”的声明
1> 来源.cpp(16,41):
1> “hasdefaultpet<蜥蜴>”这一概念被评估为false
1> 来源.cpp(13,30):
1> “is_pettable”:不是“蜥蜴”的成员
1> 来源.cpp(20,8):
1> 参见“蜥蜴”的声明
有关此功能的详细信息,请访问“新问题详细信息”窗口中的结构化诊断。
CMake目标查看改进
为了使CMake Targets视图更可用,我们实施了一些新的改进,使您比以往更容易导航CMake目标。这包括改进了对CMake Targets视图的导航,一个新的、更简化的CMake Targets视图,以及从Targets视图中排除指定CMake项的功能。
现在,您可以右键单击解决方案资源管理器中的任意位置,然后从上下文菜单导航到CMake Targets视图。
CMake Targets视图得到了进一步简化,这样用户就不必在没有可构建的可执行文件的情况下单击文件夹就可以到达他们想要的目标。
现在,您还可以使用新的CMakeTargetsViewExcludedItems字段(一个字符串数组)在VSWorkspaceSettings.json中定义要从CMake Targets视图中排除的项。
要查看更多详细信息,请参阅此博客帖子增强Visual Studio中的CMake Targets视图–C++团队博客
您还可以通过右键单击解决方案资源管理器中的任意位置并选择切换到CMake Targets View,轻松导航到CMakeTargets视图
’
现在,您还可以通过从View下拉列表中选择CMake Targets View来访问它。
此外,CMake Targets视图已经过简化,因此用户无需在没有可构建的可执行文件的情况下单击文件夹即可到达所需的目标。
C++类、结构和联合的大小和对齐
根据您的反馈,我们引入了“大小和对齐”功能。此功能使您能够可视化数据类型(例如类、结构、联合、基类型或枚举)的大小和对齐方式,而无需编译代码。要检查大小和对齐方式,请将鼠标悬停在标识符上,“快速信息”工具提示将显示信息。要使用此功能,请将鼠标悬停在标识符上,“快速信息”工具提示将显示详细信息。
生成成员函数常量提示
现在,您可以使用此新功能,该功能建议在逻辑上不应修改对象状态的情况下使成员函数成为常量。常量成员函数的使用对于在C++代码中实现常量正确性至关重要。当成员函数声明为const时,可以在const对象上安全地调用它,使您能够创建const-correct代码,并避免在处理不可变对象时出现意外的副作用。
使用常量成员函数的优点之一是它们为代码库带来了增强的安全性和可预测性。通过清楚地区分修改对象状态的函数和不修改对象的函数,可以更容易地推断不同成员函数的行为。
通过将鼠标悬停在成员函数上并单击灯泡图标,可以快速访问建议,将该函数标记为常量。
默认情况下,此功能设置为建议,由功能下方的三个点表示。要配置设置,请导航到“工具”>“选项”>“文本编辑器”>“C/C++”>“代码样式”>“Linter”。
C++标准库
在C++23中标准化的标准库模块现在可以在C++20模式下使用。这是一个跨供应商扩展,也由libstdc公司++和利比亚银行++.
我们还实现了几个新的C++23和C++26特性,包括对独立实现的增强支持和对std::格式中的std::stacktrace的支持。阅读中的所有详细信息STL变更日志.
虚拟发动机测试适配器
特别感谢为这一功能做出巨大贡献的Rare的工作人员。
简化您的测试过程,而不使用Unreal Engine Test Adapter离开IDE。现在,您可以发现、运行、管理和调试虚幻引擎测试。在Visual Studio 2022版本17.8中,打开Visual Studio时,将自动显示Unreal Engine Tests。要查看测试,可以使用视图>测试浏览器打开测试浏览器。
我们免费的最新版本用于虚拟引擎的Visual Studio工具需要使用Unreal Engine Test Adapter。此外,确保在Visual Studio安装程序中启用“用C++开发游戏”工作负载中的“虚拟引擎测试适配器”组件。
非真实引擎代码段
使用更高效地编写代码非真实引擎代码段。在Visual Studio 2022版本17.8中,可以在成员列表中找到作为代码段的常见Unreal Engine构造。首先,键入任何Unreal Engine构造名称,例如uclass。按Tab键或Enter键展开代码段。
我们还为使用导出API和插件的用户提供了导出版本的UCLASS(UCLASS,uclassexported)、UINTERFACE(UINTERFACE,uinterffaceexported)和USTRUCT(USTRUCT,ustrutexport)。此外,根据您的反馈,我们还包括了诸如SWidget(SWidget)、TActorRange(TActorRange)、TObjectRange(TObjectRange)和WITH_EDITOR(witheditor)等宏。
支持的代码段列表
- uclass类
- uclass导出
- 铀
- u函数
- 界面
- uinterface导出
- 喧闹
- ustruct公司
- 出口的ustruct
- uelog公司
- 斯威吉特
- 塔克托朗日
- 射程
- 带编辑器
虚幻引擎宏说明符建议
这是目前的一个实验特性,将在未来几周内逐步提供给Unreal Engine开发人员。
我们通常收到的最重要的反馈之一是建议使用虚幻引擎宏说明符。我们很高兴与大家分享,宏说明符将开始出现在Visual Studio 2022版本17.8中反射宏的成员列表建议中。此功能将帮助您快速访问各个宏的所有可能的说明符,而无需依赖内存或在VisualStudio和文档之间来回切换。
构建洞察功能视图
Build Insights现在与Visual Studio 2022集成,并使用MSVC与MSBuild和CMake项目一起工作。在Visual Studio 2022版本17.8中,您现在可以看到与函数生成相关的其他信息。新的功能视图将提供编译过程中函数所需的时间以及关联的ForceInline数。
转到Build菜单,开始Build Insights.etl跟踪捕获。
编译后,Build Insights将创建一个诊断报告,显示函数生成时间以及ForceOnline。
结构化诊断
C++编译器错误可能很长而且很难处理。为了解决这个问题,我们创建了一个新的“问题详细信息”窗口,它允许您以结构化的方式导航编译器错误。单击错误列表中某个条目的详细信息图标,可以打开“问题详细信息”窗口。
可以展开“问题详细信息”窗口中的条目,以查看编译器中有关错误的嵌套信息。
C11螺纹支架
我们现在已经实现了对可选C11线程库的支持。
与C11原子不同,C11线程和C++线程之间不兼容,但C++程序可以像任何C程序一样包含C11线程头并调用函数。实现是不同的。
C11包含对线程和各种支持并发原语的支持,包括互斥锁、条件变量和线程静态存储。(所有这些都已实施)
远程文件资源管理器更新
现在,在远程文件资源管理器中,您可以通过双击远程文件来查看和编辑这些文件,并像通常通过解决方案资源管理器一样进行编辑和保存。
尺寸和对齐提示
使用此功能,您可以轻松地在代码编辑器中检查类、结构、联合、基类型和枚举的大小和对齐方式,而无需编译代码。当您将鼠标悬停在这些图元上时,“快速信息”将显示其大小和对齐信息。您可以灵活地将类、结构或联合的名称悬停在代码中出现的任何位置,而不仅仅是在其声明中。这样就不需要滚动和搜索它们的声明,允许您轻松地从代码库的任何部分访问它们的大小和对齐信息。
F类#
新代码修复
我们引入了一个代码fix,它将equals(`=`)更改为acolon(`:`。这种错误在F#新手中尤其常见。
改进的自动完成
F#自动完成现在在各种场景中都得到了增强。这包括:
减少了参数名提示中的噪音
现在,与区分联合字段匹配的参数名称的提示被隐藏。这有助于提示的目标是只显示在其他情况下不明显的信息。
未打开文件的诊断
我们实现了一个选项来激活对未打开文件的诊断。出于性能考虑,默认情况下此选项处于禁用状态(阅读详细信息在这里). 您可以在中启用此功能工具>选项>文本编辑器>F类#>高级>背景分析:
.NET/C语言#
这个。NET计数器工具现在在诊断窗口中可用。
这意味着即使在调试会话期间;你仍然可以利用的力量。NET计数器,用于监视和分析关键性能指标。只需选择“选择工具”下拉菜单下的“.NET计数器”选项即可启用它。
该工具在性能分析和调试环境中的无缝集成提供了全面的见解,并增强了它们有效优化应用程序性能的能力。
在HTTP请求中安全使用机密
在许多情况下,当开发Web API时,您可能需要使用一个秘密值。我们增加了对安全使用机密的支持HTTP文件在Visual Studio中。该支持包括在三个不同的秘密提供者中存储秘密。有关更多信息,请参阅在Visual Studio 2022–Visual Studio博客中的HTTP请求中安全使用机密。
通过Meters API为新仪器提供.Net计数器支持
的最新版本。NET计数器工具引入了集成的扩展功能。NET Meters API,包括新的仪器选项,包括“计数器”和“ObservableCounter”
“计数器”跟踪值随时间的变化,调用方使用“Counter<T>.Add”报告更新。相反,“ObservableCounter”类似于计数器,但调用方负责跟踪总值。目前。NET计数器工具报告总计的更改率。
您可以在的列表中找到这些指标。NET计数器指标名册,提供了对系统性能和资源利用率的增强可见性。此外,我们正积极计划在未来引入其他仪器选项,以进一步增强此功能。
基准DotNet IDiagnosers
Visual Studio Profiler最近进行了增强,以提供对Benchmark DotNet IDiagnosers的支持。这些IDiagnoser在汇集Benchmark DotNet场景中产生的诊断会话中发挥着关键作用。
“基准测试”选项卡提供了已执行基准测试的可视化。它还提供了通过双击特定行从泳道中精确选择基准的功能。
或者,您可以选择通过右键单击上下文菜单导航到源文件。统计数据直接来自Benchmark DotNet,并以结构化网格格式呈现。
JavaScript和TypeScript开发
launch.json对打开文件夹的支持
当您选择使用.vscode目录中的launch.json打开工作区中的文件夹以存储启动和调试设置时,Visual Studio将识别该文件夹,并将其包含在绿色按钮旁边的调试目标下拉菜单中。
调试和诊断
在诊断和调试Linux容器或Windows Subsystem for Linux(WSL)中托管的应用程序时,添加了对F5(带调试器)和Ctrl-F5(无调试器的)场景的“编辑并继续”支持。请注意F5调试场景依赖于。NET 8 RC1及以上。
通过附加到进程调试Linux应用程序服务
我们很高兴推出一个强大的新功能,可以对进行调试。Linux应用程序服务中的NET进程–通过“附加到进程”。
此功能使开发人员能够轻松调试和诊断正在运行的Linux Azure App Services实例中的问题。
要附加到进程,请执行以下操作:
1.选择调试>附加到进程(或按Ctrl+Alt+P)以打开附加到进程对话框。
2.检查连接类型。应该是“Microsoft Azure应用程序服务”
3.将Connection目标设置为Linux机器名。
4.选择正确的可用流程并单击“附加”
使用VS Profiler进行测试评测
我们很高兴能够推出更新的测试分析功能。当您在测试资源管理器中右键单击测试并选择“配置文件”时,您现在可以在一组可用工具之间进行选择,包括:
- CPU使用率
- GPU使用
- 文件IO
- .NET异步
- 事件查看器
- .NET对象分配跟踪
- 仪表
选择要使用的工具,然后单击“开始”,将提供报告。
事件处理程序方法生成的代码操作
如果您使用像@onclick或@onactivate这样的事件来引用尚未定义的C#方法,则可以使用新的Razor代码操作来自动生成该事件处理程序方法。此代码操作还支持自定义事件参数。
C#代码的背景色
对于那些喜欢它的人,现在可以选择为Razor文件中的C#代码添加背景色。默认情况下已关闭,请转到工具>选项>文本编辑器>剃刀>高级和设置C#代码的背景到真的.
测试
预览版中的新IntelliTest
IntelliTest探索您的。NET代码生成具有高代码覆盖率的测试套件。它由最新版本的Z3问题解决程序提供支持,生成一组不同的输入(作用域为那些提高代码覆盖率的输入),然后插入我们所称的每个方法的参数化单元测试。当您生成测试时,您可以选择要保留到测试项目中的测试,该项目可以作为您的回归套件。更新代码时,可以重新运行IntelliTest以使生成的测试与代码同步。
此企业版功能以前的实现仅支持代码定位。NET Framework,不支持x64配置。此更新版本包括以下内容:
通过“工具”>“管理预览功能”启用该功能,并选择IntelliTest支持使用Z3 v4的NetFx和Net6(需要重新启动),立即在您的项目上进行尝试。
然后在代码中,右键单击方法并选择IntelliTest(Preview),然后选择Create Project以创建可以保存测试的项目,或Generate tests以生成一组测试以进行检查并决定保留哪些测试。
SQL Server数据工具(SSDT)已从(Microsoft.Data.SQLClient)MDS 3.0升级到MDS 5.0。MDS 5.0比MDS 3.0有一些显著的优点。它增加了对TDS 8.0的支持,支持在连接上指定服务器SPN和故障转移服务器SPN等。请参阅博客有关升级好处的更多信息。
对于SSDT用户,可以注意到的主要变化是连接到数据库时。两个新字段,即:加密和信任服务器证书已添加到连接页面。这指定了加密类型和信任服务器证书的要求。默认情况下,Encrypt设置为true或Mandatory。您可以在我们的Microsoft学习文档.
企业管理
我们在此版本中引入了两个新功能,可以帮助IT管理员在其企业中部署VisualStudio。
仅安装安装程序
去年8月17.7日,我们推出了一项功能允许管理员将更新Visual Studio的控制权委托给标准用户没有管理员权限的用户。要启用此功能,管理员必须通过启用全局策略并执行安装程序的初始安装来预配置客户端计算机。我们使用以下新的––installeronly参数使后一步非常容易通过编程实现:
vs_enterprise.exe安装––installeronly[--passive][--quiet]
管理员可以提示用户关闭以取消阻止更新
许多企业利用我们的管理员更新解决方案在整个组织内提供每月安全更新。这是我们建议的保持安全的最佳做法。然而,正如你们中的一些人已经意识到和向我们建议,如果Visual Studio处于打开状态且正在使用中,则阻止应用管理员更新。我们创建了一个新的管理员设置的名为“AdministratorUpdatesNotifications”的策略这将在必要时向用户显示windows toast通知,并通知他们需要关闭Visual Studio。一旦用户自愿保存其工作并关闭Visual Studio,管理员更新将立即应用。
设置新的“AdministratorUpdatesNotification”策略时的通知
此策略将在Intune设置目录中提供,也可以在我们的ADMX模板.
分享您的反馈并与Visual Studio保持联系!
我们感谢您花时间报告问题/建议,并希望您在使用Visual Studio时继续向我们提供反馈,说明您喜欢什么以及我们可以改进什么。您的反馈对于帮助我们使Visual Studio成为最佳工具至关重要!您可以通过与我们分享反馈开发者社区:通过报告任何错误或问题报告问题Ş和分享您的建议Ş以获得新功能或对现有功能的改进。
通过关注我们,与Visual Studio团队保持联系YouTube网站,推特,LinkedIn链接,抽搐和上的Microsoft学习.
代表整个Visual Studio团队,感谢您的阅读和快乐编码!!