原文:https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes
单击按钮即可下载最新版 Visual Studio 2019。 有关如何安装和更新 Visual Studio 2019 的说明,请参阅将 Visual Studio 2019 更新到最新版本。 另请参阅如何脱机安装的说明。
可从 Visual Studio 2019 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2019 版的详细信息,可参阅以下文章:
发布 2019 年 4 月 30 日
发布时间:2019 年 4 月 18 日
发布时间:2019 年 4 月 9 日
发布时间:2019 年 4 月 2 日
安装
IDE
性能
常规调试和诊断
源代码管理和团队资源管理器
扩展性
编程语言
C#
体验 C# 编译器现支持的 8.0 语言功能的预览,包括:
#nullable enable
或在项目级别使用 enable
),如果使用 ?
注释,则引用类型将被视为可为空,否则将引用类型视为不可为空。 随后编译器分析 null 值的流向,并警告可能的不安全使用情况。switch
表达式:在表达式上下文中提供类似 switch
的语义。Range
和 Index
类型,包括范围的 x..y
文字语法。IAsyncEnumerable
表示的异步流可以与 await foreach
异步枚举,并且可以使用 async IAsyncEnumerable
迭代器方法生成。using
声明:在当前块的末尾进行释放,但不增加嵌套级别。 可以通过实现公共 Dispose()
方法来处理 ref
结构。static
本地函数:标有 static
的本地函数不能引用封闭函数中的 this
或变量。x
为 null
,x ??= y;
仅会将 y
赋值给 x
。有关详细信息,请参阅 Mads 提供的 C# 8.0 概述。
有关更多详细信息,请参阅 C# 语言功能状态和重大更改。
此外,默认情况下,可以在 Visual Studio 中使用更现代的 C# 语言功能。
C++
F#
JavaScript/TypeScript
Python
Web 技术
容器工具
使用 Xamarin 进行移动开发
通用 Windows 平台 (UWP)
SQL Server Data Tools
安装
产品更新选项
启动窗口
新的启动窗口提供简化的启动体验,可帮助在启动 Visual Studio 时快速访问代码。
新启动窗口体验
Shell 和平台
Visual Studio 中增强的搜索功能
文件运行状况指示器 - 文件中的问题
文件运行状况指示器 - 没有问题
配置代码清理
剪贴板循环上下文菜单
Visual Studio Code 清理配置文件
带有标签的“扩展和更新”对话框
性能
Visual Studio 键入延迟选项
解决方案负载还原设置
现可从上一个会话中禁用工具窗口的状态还原,并改为始终在启动时加载解决方案资源管理器和团队资源管理器。\* 实施此更改是因为从上一个会话还原工具窗口可能会在启动时延迟解决方案加载。 在“工具”>“选项”>“环境”>“启动”中切换此选项。
常规调试和诊断
常规调试
在“监视”窗口中搜索
“监视”窗口中的格式说明符下拉列表
适用于 .NET Core 应用程序的数据集可视化工具
托管数据断点
当某个特定对象的属性值在 .NET Core(3.0 或更高版本)应用程序中更改时,现可使用数据断点中断,此功能最初为 C++ 所独有。 它们是绝佳的替代方案,如果有上百个对象调用该函数,则只需在属性的 setter 上设置断点,因为数据断点可以专注于特定对象的属性,即使该属性不在范围内,而前者可能导致经常出现不相关的中断。
.NET Core 应用程序中的数据断点
监视窗口搜索用户体验更新
我们更新了用于在“自动”、“局部变量”和“监视”窗口中搜索的 UI,界面更加简单。 “深度搜索”功能已更改为一个下拉菜单,因此可快速选择初始搜索和后续搜索所需的深度。
应用代码样式首选项
dotnet tool install -g dotnet-format --version 3.0.0-beta4-19105-10
从命令行运行 dotnet 格式。
扩展性
统一的 SDK NuGet 包
过期,扩展创建者需要在其扩展中使用 Visual Studio SDK 的 NuGet 包时,必须单独一个一个地引用。 各个包的版本并不总是相一致,因此通常导致在编译时出现依赖项冲突和运行时问题。
若要解决这些问题,请使用名为 Microsoft.VisualStudio.SDK 的新包,该包中包含构成 Visual Studio SDK 的所有包的依赖项。 使用此包可解决版本不匹配的问题以及轻松知晓要使用的版本。 只需使用对应于扩展支持的 Visual Studio 的最低版本的包版本,即可访问整个 SDK。
现在,只存在 15.9 版的 SDK 包,但在随后的几个月里将在版本 14.0 的基础上发布更多包版本。
新的和更新的项目模板
VSIX Project 模板已进行过多次更新,旨在简化该模板并使其更易于使用:
已创建一个新的空 VSIX Project 模板,该模板与VSIX Project 模板相同,只是未包含 AsyncPackage 类。 它还应用统一的 SDK NuGet 包,用于为 MEF 扩展和其他无包扩展类型提供一个良好的起点。
免费/付费/试用
查看扩展是被标记为免费、付费还是试用并不是那么容易。 现在这种情况已发生改变,在“扩展和更新”对话框内部,每个扩展都将被清晰地标记为试用或付费。 没有试用/付费标签的扩展即为免费。
测试工具
“测试”窗口中以前未记录但标记为公共的其他 API 已添加到弃用列表中。
源代码管理
新拉取请求体验
MSBuild
15.0
更改为 Current
。 MSBuild.exe
现包含在 %VSINSTALLDIR%\MSBuild\Current\Bin\MSBuild.exe
中。C#
对于 Visual Studio 2019 之前的每个版本,默认的 C# 语言版本始终等同于“最新版本”。 在 Visual Studio 2017 中,C# 发展并发布了三个次要版本:7.1、7.2 和 7.3。 但是,新项目仍然默认为 C#7.0。 对于想要使用新功能但不得不手动更改每个新项目的语言版本的 C# 开发人员而言,这种结果令人沮丧。
若要解决此问题,默认的 C# 语言版本由其目标框架确定:
这允许默认使用最新的稳定 C# 语言功能,并且在使用 .NET Core 预览时,使用与 .NET Core 3.0 预览一致的 C#8.0 预览语言功能。
如果在项目或道具文件中通过 LangVersion
指定语言版本,则该语言版本将覆盖先前描述的默认值。
C++
工作效率
CMake
vcpkg integrate install
后在 IDE 中打开的 CMake 项目,将自动为其检测并启用 vcpkg 工具链。 可通过在 CMakeSettings 中指定空工具链文件来关闭此行为。后端
弃用功能
F#
Visual Studio 2019 中的 F# 改进主要包括三个方面:
F# 4.6
此版本包含 F# 4.6 语言:
F# 编译器和 FSharp.Core 的改进
F# 和编译器以及 FSharp.Core 已经可见许多改进,尤其是来自开放源代码参与者的改进:
+
的使用,以尽可能实现最少的 String.Concat
调用数 (#5560)。Attribute
类继承时,用户将收到来自 Vasily Kirichenko 的警告。AssemblyInformationVersionAttribute
值现在支持任意值,以支持 SourceLink 等方案(#4822)。Module
后缀添加到递归模块中的模块,以匹配唯一差异是通用参数的类型的 bug (#5794)。uint16
文字后缀 (#5712)。async
,而是 引用“计算表达式”,由 John Wostenberg 实现 (#5343)。.dll
时的错误消息 (#5416)。F# 性能改进
Visual Studio 2019 中 F# 的另一个重点关注领域是中型和大型解决方案的性能。 我们解决了一些长期存在的问题,其中一些可以追溯到 Visual Studio 的第一版 F# 工具。 我们也从优秀的 F# 开源社区获得了一些帮助。
F# 工具改进
除了性能改进之外,Visual Studio 2019 的 F# 工具还进行了其他各种改进:
open
语句代码修复现在默认为在文件顶部添加 open
语句。match!
使结构指南和后续作用域的代码大纲节点失效的 bug (#5456)。byref
、outref
和 ref
值正确地标记记录字段的颜色 (#5579)。'
字符的 bug (#5604)。inherit
子句中构造函数的 IntelliSense 无法显示主构造函数的 bug (#3699)F# 开源基础结构
我们已经完全迁移了 F# 和 F# 工具代码库,以便使用 .NET SDK。 这极大地简化了开发人员的贡献过程,尤其是如果他们不使用 Windows 时。 此外,Jakob Majocha 还根据代码库的变化帮助新参与者清理文档。
Python
根据客户反馈,Visual Studio 2019 包含管理 Python 环境的全面体验:
JavaScript/TypeScript
团队资源管理器和 Azure DevOps
我们改进了 Azure DevOps 中的 Git 工作项体验。
分配工作项和 #mention 改进
突出显示热路径
CPU 使用情况工具中的突出显示热路径工具
.NET 和 ASP.NET 工具
language=regex
的注释时,可以识别正则表达式字符串。 此版本中包含的语言功能包括分类、大括号匹配、突出显示引用和诊断。正则表达式分析器支持
性能探查器中的 CPU 使用情况工具
Snapshot Debugger 目标选择 UI
容器工具
.NET Core 工具
.NET Core 3.0
如果安装了 SDK 预览版,则可使用此版本创建面向 .NET Core 3.0 的 ASP.NET Core、控制台和类库项目。
如果使用的 Visual Studio RC,则还需要转到“工具”>“选项”>“项目和解决方案”> .NET Core,再勾选“使用 .NET Core SDK 预览版”复选框。 如果在使用 Visual Studio 预览版,则无需执行此操作。 有关此设置及其行为的详细信息,可参阅面向 Visual Studio 2017 版本 15.9 的 .NET Core 工具更新。
此外,可使用“dotnet new”命令为 .NET Core 3.0 创建 Windows 窗体或 WPF 项目。 然后,可在 Visual Studio 2019 中打开这些项目。
新增功能
从此版本开始,.NET SDK 样式项目的项目文件将作为 Visual Studio 中的一类文件类型。 现支持以下操作:
ctrl + T
) 按名称查找项目文件此外,在控制台应用中,.NET SDK 样式的项目现将通过 F5
和 ctrl + F5
应用新集成的控制台体验。 这会使从 Visual Studio 启动控制台应用程序的体验一致化:
F5
,当应用执行完毕后,控制台窗口不会自动关闭。 无需再将 Console.Read()
调用添加到控制台应用中。ctrl + F5
,将在应用的后续运行中重复使用控制台窗口。 不再需要关闭控制台窗口的负载。在新的控制台窗口打开时,按一个键即可使其自动关闭,也可以选择“工具”>“选项”>“调试停止时自动关闭控制台”下的选项将其关闭。
现在已将许可证表达式和许可证文件的支持添加到项目属性页中。 这与在 NuGet 中弃用 licenseUrl
的更改一致。
性能改进
功能奇偶一致性与非 .NET Core 项目相同
可在 16.016.0 预览版 216.0 预览版 3 和 16.0 预览版 4 里程碑中找到问题和拉取请求的完整列表。
.NET 效率
.NET 重构和代码修复程序:
“拉取成员”对话框
$@"
替换 @$"
#nullable enable|disable
按读/写对引用进行分类。
为 csharp_prefer_braces 添加 Editorconfig when_multiline 选项。
.NET Compiler Platform SDK(又名 Roslyn)提供了新的分类颜色。 将逐步推出新的默认颜色(类似于 Visual Studio Code 颜色)。可以在“工具”>“选项”>“环境”>“字体和颜色”中调整这些颜色,也可以在“环境”>“预览功能”中,通过取消选中“使用增强颜色”复选框来关闭这些颜色。 我们十分欢迎你提供有关此更改对你的工作流所产生的影响的反馈。
新的 Roslyn 分类颜色
ASP.NET 项目中的 JavaScript 调试
使用“浏览方式...”添加带有自定义参数的 Google Chrome
注意:默认情况下,除非提供数据目录的路径作为参数,否则 Visual Studio 将使用不同于常规 Chrome 实例的数据目录启动 Chrome。 因此,如果在使用此 Chrome 实例时需要任何扩展,则需要先安装这些扩展。
ASP.NET 和 Azure Functions 工具
性能向导
在 Visual Studio 2019 中,性能向导中提供的分析体验已移至性能探查器。 可以在性能探查器的检测工具中找到用于采样和检测的 CPU 使用工具。 通过此更改,不再需要性能向导,已从 Visual Studio 2019 中将其删除。 此外,VS 性能命令行工具中的采样选项已被删除,即将推出的预览版中将发布替换命令行工具。
测试工具
Visual Studio Kubernetes 工具
Visual Studio Kubernetes 工具以前作为 Visual Studio 2017 的单独扩展提供,现已集成到 Visual Studio 2019 的 Azure 开发工作负荷中。
将 Kubernetes 支持添加到新项目中
要将 Kubernetes 支持添加到新项目中,请打开 Visual Studio 并选择“创建新项目”选项。 在“创建新项目”窗口中,搜索 Kubernetes 并选择“适用于 Kubernetes 的容器应用程序”项目模板。
创建适用于 Kubernetes 的容器应用程序
单击“下一步”,然后输入项目名称、位置和解决方案名称。 然后单击“创建” 。 选择要用于该项目的 ASP.NET Core 应用程序模板,然后单击“确定”。 Visual Studio 将自动创建 Dockerfile 和 Helm 图表,可用于生成新的应用程序并将其部署到 Kubernetes 群集。 可根据需要修改这些项目。
将 Kubernetes 支持添加到现有项目
此外,还可以向现有 ASP.NET Core 应用程序添加针对 Kubernetes 的支持。 为此,请在 Visual Studio 2019 中打开项目。 在解决方案资源管理器中,右键单击项目,指向“添加”,然后单击“容器业务流程协调程序支持”。
添加容器业务流程协调程序支持
在“添加容器业务流程协调程序支持”对话框中,选择“Kubernetes/Helm”并单击“确定”。 Visual Studio 将自动创建 Dockerfile 和 Helm 图表(在名为 charts 的文件夹中),可用于生成应用程序并将其部署到 Kubernetes 群集。 如果已存在这些项目中的任何一个项目,不会将其覆盖。 可根据需要修改这些项目。
创建可公开访问的终结点
向新项目或现有项目添加 Kubernetes 支持时,Visual Studio 会询问是否要为应用程序创建可公开访问的终结点。
可公开访问的终结点提示
如果单击“是”,Visual Studio 将为应用程序配置 Helm 图表,以便在将应用程序部署到 Kubernetes 群集时创建 Kubernetes Ingress 对象。 通过修改 Helm 图表可随时更改此选项。
在 Azure Kubernetes 服务中调试应用程序
将 Kubernetes 支持添加到新项目或现有项目后,可使用 Azure Dev Spaces 功能在活动的 Azure Kubernetes 服务 (AKS) 群集中轻松生成、运行和调试应用程序。 这非常有助于在实际 Kubernetes 群集的上下文中测试项目或调试属于超大型应用程序的服务,而不必在本地复制整个应用程序。 Azure Dev Spaces 还包含可以使开发团队共享 AKS 群集的功能。 有关 Azure Dev Spaces 的详细信息,请参阅 Azure Dev Spaces 文档。 要开始使用此服务,请确保在 Visual Studio 中选择 Azure Dev Spaces 作为调试启动目标。
选择 Azure Dev Spaces 作为调试启动目标
首次在 Dev Spaces 中启动项目之前,请配置要使用的 Azure 订阅和 AKS 群集。 此外,请选择要运行该项目的空间。
配置 Azure Dev Spaces
通常情况下,团队在默认空间运行整个应用程序的最新稳定版本。 然后,在默认空间的子空间运行正在处理的服务版本。 现在没有必要在子空间运行其他服务;Dev Spaces 会自动将来自服务的调用路由到在默认空间运行的服务的稳定版本。 有关如何进行设置的详细信息,请参阅 Azure Dev Spaces 文档中的团队开发教程。 选择正确的订阅、群集和空间后,单击“确定”才能继续进行 Dev Spaces 配置。 如果所选的群集还没有关联的 Dev Spaces 控制器,请在以下对话框中单击“确定”,自动创建一个。
启用 Dev Spaces 对话框
控制器的创建需要 2 分钟左右。 单击 Visual Studio 窗口左下角的“后台任务”按钮可查看其状态。
通过“后台任务”按钮显示的 Azure Dev Spaces 控制器创建状态
准备好 Dev Spaces 控制器后,按 F5 或单击工具栏上的 Azure Dev Spaces 调试按钮即可在 AKS 中调试项目。
Azure Dev Spaces 调试按钮
Dev Spaces 会将代码同步到 Azure、生成包含这些代码的容器映像,然后使用项目中定义的 Helm 图表将其部署到 AKS 群集。 Visual Studio 将打开与群集中运行的服务建立的远程调试连接,这样便可以像调试本地运行的服务一样与其进行交互。
使用 Xamarin 进行移动开发
此版本改进了工作负载大小以及 Android 生成性能和可靠性,并提高了 Xamarin.Android 和 Xamarin.Forms 的生产力。
“文件”>“新建项目”
对性能进行了改进,旨在缩短新建 Xamarin 项目所需的时间,便于更快地开始生成应用。 现在还将模板使用的 NuGet 包加入工作负荷安装项中,以缩短包还原时间(尤其是在低带宽或脱机情况下)。 在某些情况下,这些改进可使新 Xamarin 项目完全加载和还原的时间减少 50% 左右。
在 Visual Studio 15.9 版(左)和 Visual Studio 2019(右)中创建新的 Xamarin 项目
生成进度指示器
现可在生成项目时查看更详细的生成进度信息。 在生成期间单击左下角的“后台任务”图标,将显示正在运行的当前生成目标。 这有助于确定生成(目标需要很长时间才能完成的情况)是否仍在运行。
Xamarin 生成进度指示器
Xamarin.Forms 预览器的基本预览模式
不再需要为 Xamarin.Forms XAML 预览器生成项目以显示代码的预览! 如果 XAML 文件中有自定义控件,则可能需要生成项目以预览这些控件,或者将这些控件选择加入设计时渲染。
Xamarin.Forms 预览器设备下拉列表
你现在可以在不同的 Android 和 iOS 设备之间切换,以使用新设备下拉菜单预览 Xamarin.Forms XAML。
Xamarin.Forms 设备下拉列表
Xamarin.Forms 属性面板
现在可以在属性面板中编辑 Xamarin.Forms 控件、单元格和布局的最常用属性,并查看 XAML 中立即反映的这些更改。
Xamarin.Forms 属性面板
Xamarin.Forms Shell 模板
我们更新了 Xamarin.Forms 模板以使用最新的 Xamarin.Forms 版本,并为 Xamarin.Forms Shell 应用添加了新的模板选项。 Shell 旨在简化应用,同时提高开发人员的工作效率,专注于渲染速度和内存占用率。 此模板提供适用于 Android 和 iOS 的引导 Shell 应用。
Android 生成性能和可靠性
在 Visual Studio 2017 版本 15.9 和 Visual Studio for Mac 7.7 中,我们进行了初始生成性能和生成准确性改进。 在 Visual Studio 2019 和 Visual Studio for Mac 7.8 中,我们加快了生成和部署速度。
Android 生成速度现在比拿一杯咖啡的速度还快
.csproj
中添加 MSBuild 标志:
True
Android Emulator 改进
在 Visual Studio 2019 中,创建 Android 仿真器图像更加轻松。 我们还继续与 Windows 团队合作,参与 Windows 10 版本 1809 的 2018 年 10 月更新,以提高在 Hyper-V 上运行时 Android 仿真器的性能。
使用 Xamarin.Android 中的生成改进缩短生成时间
我们发布了一组初始生成性能改进。 到目前为止,与之前的版本相比,Xamarin.Android 9.1.1+ 提供显著的生成性能改进。 查看 Xamarin.Android 15.9 和16.0 生成性能比较,了解详细信息。
适用于 Xamarin.Android 的增强快速部署
到目前为止,在未对应用中打包的任何资产、资源、共享的本机库或继承自 Java.Lang.Object
的用户定义的类进行任何更改的情况下,快速部署会跳过重新生成或重新部署 Android 包(.apk 文件)的步骤,从而缩短了增量部署时间。 增强的快速部署扩展了快速部署支持,现可应用于共享的本机库和继承自 Java.Lang.Object
的类。 使用上述增强功能的快速部署功能,只需在少数情况下(例如,当 AndroidManifest.xml 文件因添加新的 Android.App.Application
或 Activity
子类而发生更改时)生成新的 .apk 文件。 当前预览版默认不启用这些增强功能。 要启用它们,请在 .csproj 文件中将 $(AndroidFastDeploymentType)
MSBuild 属性设置为 Assemblies:Dexes
:
复制
Assemblies:Dexes
Xamarin.Android 中的新一代 Dex Compiler (d8) 和 Code Shrinker (r8) 支持
Xamarin.Android 现支持最新的 Android dex 编译器 (d8) 和 Code Shrinker (r8)。 要启用这些功能,请在 .csproj 文件中,分别将 $(AndroidDexTool)
和 $(AndroidLinkTool)
MSBuild 属性设置为 d8
和 r8
复制
d8
复制
r8
有关 d8 和 r8 的详细信息,请参阅文档。
Xamarin.Android Designer 增强功能
我们对拆分视图中的交互提供了大量有助于提升工作效率的增强功能强。
操作中的快速信息
改进了 Xamarin.Android Designer,同时还提供对约束布局的初始支持
我们已开始努力改进 Android Designer 的启动速度。 作为此项工作的一部分,我们还改进了设计器在加载时提供的消息传递功能。
除了这些改进之外,Android Designer 现在本身支持 Android Pie (9.0) 并为 ConstraintLayout
属性提供自动完成功能。
使用 Xamarin.Android Designer 获得更出色的 XML IntelliSense 和注释优化
使用 IntelliSense 将小组件添加到布局时,现提供完整代码片段,以便从一开始就提供所需的属性。 我们为 Android XML 布局添加了智能注释和取消注释功能。
使用“转到定义”功能来提高工作效率,并在 Android 资源文件和 AndroidManifest.xml 中使用 XML IntelliSense
现可在资源 URL 上通过“Ctrl +单击”,导航到定义它们的文件或行。
除了布局(颜色、字符串、可绘制资源、Android 清单等)之外,现支持对其他 Android XML 文件应用 IntelliSense/自动完成功能。
通用 Windows 平台
project.json
定义 NuGet 依赖项的 UWP 测试项目。 必须升级项目才能使用新的 PackageReference
格式。jsproj
的文件)。 有关详细信息,请参与有关创建在 Windows 上运行良好的渐进式 Web 应用 (PWA) 的文档。Office 工具模板更新
在 Visual Studio 2019 中,我们对 Office、SharePoint 和 VSTO 模板进行了一些更改。
团队资源管理器和 Azure DevOps
我们发布以开发人员为中心的简化型新体验,用于将团队资源管理器连接到 Azure DevOps 项目。
根据分配给你的工作项、你正在关注的工作项、你在讨论中提到的工作项以及基于你的活动的工作项筛选和透视你的视图,从而关注相关工作项。
从工作项创建本地分支,该工作项可自动将工作项与对该本地分支进行的更改关联。 这是默认体验。 如果要切换到旧版体验,可以在 Visual Studio 中设置工作项体验。 请注意,此新体验仅适用于 Git 存储库。TFVC 存储库的新体验将在以下更新中提供。
Azure DevOps 工作项中心
在挂起的更改提交消息中执行 #mentions 时搜索工作项。 有关更多详细信息,请参阅使用“工作项”查看和添加工作项页。
Azure DevOps #mentions
由于在 Azure DevOps 中的采用率较低,已从 Visual Studio 2019 的 Team Foundation Server Office 集成 2019 插件中删除对 Microsoft Project 的支持。 现在需要将工作项导出到 Excel 并手动将它们粘贴到项目中。
已从 Visual Studio 2019 的 Team Foundation Server Office 集成 2019 插件中删除对 PowerPoint 的支持。 但是,用户仍然可以在 PowerPoint 中创建情节提要,并将它们手动链接到 Azure DevOps 中的工作项。
Application Insights 和 HockeyApp
最近更新时间:2019 年 4 月 26 日