Visual Studio Icon Visual Studio 2017 15.8 版发行说明Visual Studio 2017 version 15.8 Release Notes

| 开发者社区 | 系统要求 | 兼容性 | 可分发代码 | 许可条款 | 博客 | 已知问题 || Developer Community | System Requirements | Compatibility | Distributable Code | License Terms | Blogs | Known Issues |


如果正在从一个非英语的语言版本访问此页,并想要查看最新内容,请访问此“发行说明”页(英文版)。If you are accessing this page from a non-English language version, and want to see the most up-to-date content, please visit this Release Notes page in English. 可以更改此页面的语言,具体方法是单击页脚中的地球图标,然后选择所需语言。You can change the language of this page by clicking the globe icon in the page footer and selecting your desired language.

单击按钮即可下载最新版 Visual Studio 2017。Click a button to download the latest version of Visual Studio 2017. 有关如何安装和更新 Visual Studio 2017 的说明,请参阅将 Visual Studio 2017 更新到最新版本For instructions on installing and updating Visual Studio 2017, see Update Visual Studio 2017 to the most recent release. 另请参阅如何脱机安装的说明。Also, see instructions on how to install offline.

请访问 页面,下载其他 Visual Studio 2017 产品。Visit the page to download other Visual Studio 2017 products.

15.8 版中的新增功能What's New in 15.8

可从 Visual Studio 博客获取来自 Visual Studio 工程团队的官方产品见解。The Visual Studio Blog is the official source of product insight from the Visual Studio Engineering Team. 有关 Visual Studio 15.8 版发布的详细信息,可参阅以下文章:You can find in-depth information about the Visual Studio version 15.8 releases in the following posts:

Visual Studio 2017 15.8 版发布Visual Studio 2017 version 15.8 Releases


Visual Studio 2017 15.8 版安全公告通知Visual Studio 2017 version 15.8 Security Advisory Notices

15.8 版中的主要新增功能摘要Summary of Notable New Features in 15.8

15.8 版中解决的首要问题Top Issues Fixed in 15.8

15.8 版中解决了客户报告的下列问题:These are the customer-reported issues addressed in 15.8:

查看 Visual Studio 2017 15.8 版中已解决的所有客户所报问题。See all customer-reported issues fixed in Visual Studio 2017 version 15.8.

The Developer Community Portal

15.8 版中的最近更新详情Details of What's New in 15.8

Release Notes Icon Visual Studio 2017 15.8.0 版Visual Studio 2017 version 15.8.0

发布日期:2018 年 8 月 14 日released on August 14, 2018

15.8 版中的新增功能New Features in 15.8


现可选择在开始安装之前下载所有安装文件。You now have the option to download all installation files before starting your installation.

  • 要使用这一新选项,请在安装程序中选择“全部下载后再安装”选项(图 1)。To use this new option, select the "Download all, then install" option in the installer (Figure 1). 如果 Internet 连接速度较慢,建议使用此选项。We suggest this option if you have a slower internet connection.
  • 默认选项仍为“下载时安装”,它可并行下载和安装。The default option remains "Install while downloading", which downloads and installs in parallel.
Download Otion
(图 1)下载选项(Figure 1) Download Option


此版本包含以下性能改进:This release contains the following performance improvements:

  • 由于无需再重新加载解决方案,因此可更快地对大型解决方案执行 C#、VB 和 C++ 项目的分支切换。Branch switching for C#, VB, and C++ projects is much faster for large solutions since solution reload is no longer required.
  • 缩短在大型解决方案中卸载和重载一小组 C# 和 VB 项目的时间 - 从数分钟缩短到数秒钟。We reduced the time to unload and reload a small set of C# and VB projects in large solutions from minutes to several seconds.
  • 添加了一个选项,用于禁止重新打开已在上一会话中打开的文档,因为重新打开某些类型的文件或设计器会延迟解决方案加载。 We added an option to disable reopening documents that were open in the previous session, as reopening certain types of files or designers can delay solution load.
    • 通过“工具”>“选项”>“项目”>“解决方案”>“常规”切换此选项。Toggle this option in Tools > Options > Projects > Solutions > General.

测试性能Test Performance

显著提升了在运行包含多个测试项目的大型解决方案期间的性能。We significantly improved performance when running a few tests in a large solution with multiple test projects. 在我们的实验室中,超过 10,000 个 MSTest 的解决方案执行单个测试的速度提高了 82%!In our labs, a solution with over 10,000 MSTests executed a single test up to 82% faster!

Visual Basic 性能改进Visual Basic Performance Improvement

Visual Basic 现显著提升了使用 CInt(Fix(number)) 模式将非整数类型转换为整数时的性能。Visual Basic now provides a significant performance improvement when using the pattern CInt(Fix(number)) to convert from non-integer types to integers.

性能分析Performance Profiling

此版本在以下方面增强了性能分析功能:This release contains the following performance profiling enhancements:

  • 增添了暂停状态下启动分析的功能:We added the capability to start profiling in a paused state:

    • 性能探查器 (ALT-F2) 中的 CPU 使用情况工具现可在暂停状态下启动(图 2)。The CPU Usage tool in the Performance Profiler (ALT-F2) can now be started in a paused state (Figure 2). 在等待值得进行 CPU 使用情况调查的方案时,这非常有用。This can be useful while waiting for a scenario worthy of a CPU Usage investigation. 如果在启动时禁用 CPU 使用情况收集功能,则性能探查器将不会收集任何 CPU 使用情况示例堆栈数据,除非专门启用此类数据。If CPU usage collection is disabled at startup, the Performance Profiler will not collect any CPU usage sample stack data until it is specifically enabled. 这样会减少收集和分析数据的数量,从而使性能调查更加高效。This results in a smaller amount of data to collect and analyze, thus making your performance investigations more efficient.

    • 要在禁用 CPU 使用情况示例收集时启动会话,请单击性能探查器启动页上“CPU 使用情况”旁的齿轮图标。To start a session with CPU Usage sample collection disabled, click the gear icon next to CPU Usage on the Performance Profiler launch page. 在“CPU 使用情况”属性页上,取消选中“启用 CPU 分析 (采样)”然后单击“确定”,保存设置。On the CPU Usage property page, uncheck Enable CPU Profiling (Sampling) and click OK to save the settings.

      CPU Usage Tool settings page
      (图 2)CPU 使用情况工具设置(Figure 2) CPU Usage Tool Settings
    • 启动目标应用程序后(单击性能探查器启动页面上的“开始”),会出现 CPU 利用率图(图 3),可在其中控制 CPU 分析。Once you start the target application (click Start on the Performance Profiler launch page), you will see the CPU utilization graph (Figure 3) which allows you to control CPU profiling. 要启用 CPU 使用情况示例堆栈数据收集功能,请在视图中间选择“启用 CPU 分析”,或单击 CPU 使用率图下方的“记录 CPU 配置文件”。To enable CPU usage sample stack data collection, select Enable CPU profiling in the middle of the view, or click Record CPU Profile just below the CPU utilization graph. 可单击“记录 CPU 配置文件”根据需要多次启用/禁用示例数据收集。You can click Record CPU Profile to enable/disable sample data collection as many times as you like. CPU 使用率图的颜色出现相应变化,表示在该时间点是否启用/禁用示例收集。The CPU utilization graph color changes to indicate whether sample collection is enabled/disabled at that point in time.

      CPU Usage Tool monitoring view
      (图 3)CPU 使用情况图(Figure 3) CPU Usage Utilization Graph
  • 添加了 .NET 对象分配跟踪工具:We added a .NET Object Allocation Tracking tool:

    • 向性能探查器提供的工具系列增添了 .NET 对象分配跟踪工具。The .NET Object Allocation Tracking Tool joins the family of tools available from the Performance Profiler. 如果为性能探查器会话调用此工具,将为目标应用程序中发生的每个 .NET 对象分配启动堆栈跟踪的集合。Invoking this tool for a performance profiler session initiates the collection of a stack trace for every .NET object allocation that occurs in the target application. 此堆栈数据和对象类型及大小信息一同进行分析,以显示应用程序的内存活动详情。This stack data is analyzed along with object type and size information to reveal details of the memory activity of your application. 可以快速确定代码中的分配模式并识别异常。You can quickly determine the allocation patterns in your code and identify anomalies. 此外,对于垃圾回收 (GC) 事件,用户可轻松确定已收集和保留了哪些对象,并快速识别占用应用程序大部分内存的对象类型。In addition, for Garbage Collection (GC) events, you can easily determine which objects were collected and retained and quickly identify object types that dominate the memory usage of the application.
    • 这对 API 编写器来说尤其有用,有助于最大程度减少分配。This is especially useful for API writers to help minimize allocations. 许多应用程序都会超出诊断数据收集中涉及的缓冲区限制,但仍可很好地诊断执行 API 关键方案的小型测试应用程序。Many applications will overrun the buffer limits involved in the diagnostics data collection, but small test applications exercising an API's key scenarios can be diagnosed quite well. 测试应用程序执行过程中,性能探查器会显示实时对象(计数)的折线图和对象增量(百分比变化)的条形图。While your test application is executing, the Performance Profiler displays a line graph of Live Objects (count), as well as an Object Delta (% change) bar graph.
    • 要使用 .NET 对象分配跟踪工具,请调出性能探查器启动页(图 4),选择要分析的目标(默认目标是解决方案中的启动项目),勾选“可用工具”下的“.NET 对象分配跟踪”,然后单击“开始”。To use the .NET Object Allocation Tracking Tool, display the Performance Profiler launch page (Figure 4), select a target to profile (the default target is the startup project in the solution), check .NET Object Allocation Tracking under Available Tools, then click Start.
    Performance Profiler launch page
    (图 4)性能探查器启动页(Figure 4) Performance Profiler Launch Page

性能分析(CPU 使用情况)Performance Profiling (CPU Usage)

此版本对性能探查器的 CPU 使用情况工具做出了以下改进(可通过 ALT-F2 获得):This release contains the following improvements to the CPU Usage tool of the Performance Profiler (available through ALT-F2):

  • 默认情况下,“调用树”视图现按逻辑调用堆栈显示异步执行。The Call Tree view now displays asynchronous execution by logical call stack by default. 可通过取消选中 CPU 使用情况主视图的“筛选器”下拉列表中的“拼结异步代码”选项来关闭此行为。You can turn off this behavior by unchecking the option Stitch Async Code in the Filter dropdown of the CPU Usage main view.
  • 添加了“模块/函数”视图,该视图按模块 (dll) 和模块内的函数显示性能信息。We added a Modules/Functions view that displays performance information by module (dll) and by function within a module. 在 CPU 使用情况主视图中选择函数时,可从上下文菜单中显示“模块/函数”视图,也可以从“调用树”或“调用方/被调用方”视图的“查看”下拉列表中显示“模块/函数”视图。One can display the Modules/Functions view from the context menu available when selecting a function in the CPU Usage main view, or from the View dropdown in the Call Tree or Caller/Callee views.
  • 实例指示已添加到 CPU 使用情况工具主视图中的 CPU 使用情况图中。Instance indication has been added to the CPU Usage graph in the CPU Usage tool's main view. 双击任意 CPU 使用情况视图中列出的函数,即可在函数执行时(例如,在堆栈上)查看实例。You can view the instances when a function is executing (for instance, on the stack) by double-clicking a function listed in any of the CPU Usage views.


此版本在以下方面提升了生产力:This release contains the following productivity enhancements:

  • 可使用格式文档(Ctrl + K、D 或 Ctrl + E、D)执行其他代码清理进行 C# 开发。You can perform additional code cleanup with Format Document (Ctrl + K, D or Ctrl + E, D) for C# development. 通过转到“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”>“格式”>“常规”来配置清理。Configure cleanup by going to Tools > Options > Text Editor > C# > Code Style > Formatting > General.
  • 增添了更多使用 Ctrl + .We added more refactorings and quick actions using Ctrl + . 或 Alt + Enter 的重构和快速操作:or Alt + Enter:
    • “倒转 If”可让 if-else 语句中的逻辑反转。Invert If enables you to invert your logic in if-else statements. 将光标置于 if 关键字,以触发此重构。Place your cursor in the if keyword to trigger this refactoring.
    • 通过从方法调用站点添加参数,可向方法调用站点添加参数并触发“快速操作和重构”,从而向方法添加参数。Add parameter from method callsite allows you to add a parameter to a method by adding an argument to a method callsite and triggering Quick Actions and Refactorings.
    • 删除不必要的括号时会一并删除对编译不重要的二元运算符两侧的括号。Remove unnecessary parentheses removes parentheses around binary operators that are not essential for compilation. 可通过“工具”>“选项”>“文本编辑器”>“C#”>“代码样式”>“常规”或以下 .editorconfig 来配置此样式规则:You can configure this style rule through Tools > Options > Text Editor > C# > Code Style > General or .editorconfig:
      • dotnet_style_parentheses_in_arithmetic_binary_operators
      • dotnet_style_parentheses_in_relational_binary_operators
      • dotnet_style_parentheses_in_other_binary_operators
      • dotnet_style_parentheses_in_other_operators
    • 此外,还可通过“工具”>“选项”>“...”或以下 .editorconfig 将“在分配中使用三元条件并返回语句”配置为样式规则:Use ternary conditionals in assignments and return statements can also be configured as a style rule in Tools > Options > ... or through .editorconfig:
      • dotnet_style_prefer_conditional_expression_over_assignment
      • dotnet_style_prefer_conditional_expression_over_return
  • 在“转到所有”窗口中添加了新的命令和改进功能:We added new commands and improvements to the Go to All window:
    • 通过“转到封闭块”(Ctrl + Alt + 向上键),可快速导航到封闭代码块的开头。Go to Enclosing Block (Ctrl + Alt + UpArrow) allows you to quickly navigate up to the beginning of the enclosing code block.
    • 通过“转到下一个/上一个问题”(Alt + PgUp/PgDn),可跳到下一个/上一个问题(错误、波形曲线和灯泡)。Go to Next/Previous Issue (Alt + PgUp/PgDn) allows you to skip to the next/previous issue (error, squiggle, lightbulb).
    • “转到成员”(Ctrl + T、M)现默认适用于文件。Go to Member (Ctrl + T, M) is now scoped to the file by default. 可通过将作用域切换到当前文档 (Ctrl + Alt + C),使默认值更改回解决方案。You can change the default back to solution by toggling the Scope to Current Document (Ctrl + Alt + C).
  • 借助对多个插入点的支持,现可在文件中的多个任意位置创建插入点并选择内容。You can now create insertion points and selections at multiple, arbitrary locations in a file with multiple caret support. 这样,你可以同时在多个位置添加、编辑或删除文本。This allows you to add, edit, or delete text in multiple places simultaneously.
    • 通过“Ctrl + Alt + 单击鼠标左键”插入点。Insert carets with Ctrl + Alt + LeftMouseClick.
    • 使用 Shift + Alt + Ins 在与当前所选内容匹配的下一个位置添加所选内容和插入点。Add a selection and caret at next location that matches current selection with Shift + Alt + Ins.
    • 有关操作的完整列表,请参阅“编辑”>“多个插入点”。See Edit > Multiple Carets for full list of actions.
  • 使用 Alt + ` 访问上下文导航菜单。Access a contextual navigation menu with Alt + `.
  • 让键绑定与 Visual Studio Code 和 ReSharper (Visual Studio) 这两个新的键盘配置文件保持一致:。Keep your keybindings consistent with two new keyboard profiles: Visual Studio Code and ReSharper (Visual Studio). 可以依次单击“工具”>“选项”>“环境”>“键盘”,并在顶部下拉菜单下找到这些方案。You can find these schemes under Tools > Options > Environment > Keyboard and the top drop-down menu.


此版本在以下方面增强了调试功能:This release contains the following debugging enhancements:

  • 如果安装有多个 Visual Studio 2017 实例,在调试时现在可选择要将扩展部署到的实例(图 5)。When you have more than one instance of Visual Studio 2017 installed, you can now select which instance to deploy your extension to when debugging (Figure 5). 例如,通过这种方式,可以在 Visual Studio 版本通道中进行开发,而在预览通道中进行调试。That way you can, for example, develop in the Visual Studio release channel while debugging in the preview channel.

    Select your debug instance
    (图 5)选择调试实例(Figure 5) Select Debug Instance
  • 现在可以直接从发布摘要页附加 Snapshot Debugger(图 6)。You can now attach the Snapshot Debugger directly from the Publish summary page (Figure 6).

    Attach Snapshot Debugger from Publish Summary page
    (图 6)从发布摘要附加 Snapshot Debugger(Figure 6) Attach Snapshot Debugger from Publish Summary
  • 我们现在支持在使用堆调试小型转储时通过“任务”窗口查看“托管任务”。We now support viewing Managed Tasks through the Tasks window while debugging minidumps with heap.

适用于通用 Windows 平台开发的工具Tools for Universal Windows Platform Developers

在 Windows 10 Fall Creators Update(内部版本 16299)或更高版本的目标平台版本中,我们对面向通用 Windows 平台的项目的 XAML 设计器进行了许多重要改进。We made many important improvements to the XAML designer for projects targeting the Universal Windows Platform with a target platform version of the Windows 10 Fall Creators Update (build 16299) or later. 这些改进包括:These improvements include:

  • 现可在属性检查器中编辑集合。You can now edit collections in the Property Inspector.
  • 设计器现在允许对模板和样式进行编辑,包括这些实体的定义在其他文档中定义时。The designer now allows Templates and Styles to be edited, including when the definitions for those entities are defined in other documents.
  • 类型 IconElement(如 AppBarButton 中的图标)的属性现在在属性检查器中有一个自定义编辑器,使设置这些属性变得更容易。Properties of type IconElement (such as Icon in an AppBarButton) now have a custom editor in the Property Inspector making these properties easier to set.
  • 设计器、编辑器和“编辑并继续”现都应适用于 x:DefaultBindMode。The designer, editor, and Edit and Continue should all now work correctly with x:DefaultBindMode.
  • Blend 中的视觉状态管理器体验现在支持 AdaptiveTrigger。The Visual State Manager experience in Blend now supports AdaptiveTrigger.

用于 Visual Studio 的 F# 4.5 和 F# 工具 F# 4.5 and F# Tools for Visual Studio

此版本中我们引入了 F# 语言版本 4.5。We introduced the F# language version 4.5 with this release. 这也与新的 FSharp.Core 4.5.x 系列(F# 核心库)保持一致。This also corresponds with the new 4.5.x family of FSharp.Core (the F# core library). 可以在 F# RFC 存储库中阅读每个更改的说明。You can read the specs for each of these changes in the F# RFC repository. 此版本中还有对用于 Visual Studio 的 F# 工具的诸多改进。There are also many improvements to F# tools for Visual Studio with this release.

F# 4.5F# 4.5

下面是 F# 语言版本 4.5 中的一些亮点:Here are the some of the highlights with the F# language version 4.5:

Span<'T> 支持Span<'T> support

我们实现了 Span<'T> 和相关功能,因此在 F# 中可通过 SpanMemoryref 之类的构造来有效使用和生成 API。We implemented Span<'T> and related features so that effective consumption and production of APIs using Span, Memory, and ref-like constructs are possible with F#. 功能包括:The features for this include:

  • 新的 voidptr 类型。New voidptr type.
  • FSharp.Core 中新的 NativePtr.ofVoidPtrNativePtr.toVoidPtr 函数。New NativePtr.ofVoidPtr and NativePtr.toVoidPtr functions in FSharp.Core.
  • 新类型 inref<'T>outref<'T>,分别是只读的 byref 和只写的 byref。New types inref<'T> and outref<'T>, which are read-only byrefs and write-only byrefs, respectively. 此值对应于 C# 中的 in refout refThis correspond to in ref and out ref in C#.
  • 能够生成 ByRefLike 结构(如 SpanReadOnlySpan)。The ability to produce ByRefLike structs (such as Span and ReadOnlySpan).
  • 能够生成 IsReadOnly 结构。The ability to produce IsReadOnly structs.
  • 隐式取消引用方法中的 byref 返回值和 inref 返回值。Implicit dereference of byref- and inref-returns from methods.
  • 能够在 byref/inref/outref 上生成扩展成员。The ability to produce extension members on byref/inref/outref.

此功能集修复了 F# 4.1中 byref 返回值初始设计的一个 bug - 即返回 byref 的函数、方法和属性未隐式取消引用返回值。This feature set fixes a bug in the initial design of byref-returns in F# 4.1, where functions, methods, and properties returning byref's were not implicitly dereferencing the return value. 我们进行此更改,使该功能与 C# 处理 ref 返回值的方式保持一致。We make this change to bring the feature in-line with how C# handles ref-returns. 当类型批注指示现在使用 ref 返回值的隐式取消引用时,将使用错误消息。An error message is used when a type annotation indicates that an implicit dereference of a ref- return is now used.

此外,此功能集还修复了 F# 编译器中的一个 bug - 可以进行“不良结构替换”,也就是说,调用 F# 结构上的方法时可以使用其他结构替换调用的实际结构。Additionally, this feature set also fixes a bug in the F# compiler where "Evil struct replacement" was possible; i.e., calling a method on an F# struct could replace the actual struct that was called with a different one. 现将结构上的 this 参数视为 inref<MyStruct>,其中包含一条错误:如果你希望修改该结构则该错误建议添加可变字段。The this parameter on a struct is now considered an inref<MyStruct>, with an error that suggests you add a mutable field if you wish to modify the struct.

可在此功能集的 RFC 中详细了解 spanref 之类的构造。You can learn more about span and ref-like constructs in the RFC for this feature set.

计算表达式中的 Match!Match! in computation expressions

F# 4.5 引入了 match!,一个用在计算表达式中的新关键字(由 John Wostenberg 独立提供)。F# 4.5 introduces match!, a new keyword for use within computation expressions, contributed entirely by John Wostenberg. 此语法糖等同于在结果中 let! 后跟 matchThis syntactic sugar is equivalent to a let! followed by a match on the result. 可在 match! 的 RFC 中了解详细信息。You can learn more in the RFC for match!.

放宽了使用 yield 时序列、列表和数组表达式中的向上转换要求Relaxing the need to upcast with yield in sequence, list, and array expressions

F# 4.5 现在放宽了某些限制:使用 yield 时需要向上转换来将子类型转换为超类型。F# 4.5 now relaxes some cases where an upcast when using yield was required to convert a subtype into a supertype. 自 F# 3.1 起如果不使用 yield 这些表达式中已无此限制,因此此项改进使得与现有行为更加一致。This restriction was already not necessary for these expressions since F# 3.1 when not using yield, so this makes things more consistent with existing behavior. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.

列表和数组括号上允许缩进Permitting indentation on list and array brackets

F# 4.5 现在放松了列表和数组括号的缩进规则,此前如果列表和数组括号位于自己的行上,则需将其向前缩进一个作用域。F# 4.5 now relaxes the indentation rule for list and array brackets that required them to be indented one scope forward when on their own line. 这项要求一直以来都非常令人困惑,尤其是对 F# 初学者。This previous requirement has always been quite confusing, especially for beginners to F#. 此外,F# 序列表达式无此要求。Additionally, it is not required for F# sequence expressions. 现在,数组表达和列表表达式与序列表达式一样,不再受此要求限制。This now brings array and list expressions to the same consistent state as sequence expressions. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.

枚举用例以公共形式发出Enum cases emitted as public

现在 F# 4.5 在所有情况下以公共形式发出枚举用例,以与 C# 发出枚举用例的方式保持一致。F# 4.5 now emits enumeration cases as public under all circumstances, to align with how C# emits enumeration cases. 这也更便于分析工具分析来自 F# 代码的日志,其中发出的是值而不是标签名称。This also makes it easier for profiling tools to analyze logs from F# code, where the value rather than the label name was emitted. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.

F# 编译器改进F# Compiler Improvements

F# 4.5 中不仅包括之前提到的语言功能改进,也包括对 F# 编译器的改进。Improvements to the F# compiler in addition to the previously-mentioned language features are in F# 4.5. 这些方法包括:These include:

  • 我们删除了 F# 编译器中高达 2.2% 的分配(各种情况下),改进了编译器性能。We improved compiler performance work by removing up to 2.2% of all allocations in the F# compiler (under various scenarios).
  • 我们修复了一个会在基于机构的枚举使用 yield! 时,导致 AccessViolatioNException 的 bug。We fixed a bug that results in an AccessViolatioNException when using yield! with struct-based enumerables.
  • 现可再次从 FSharpFunc 中继承。It is now possible to inherit from FSharpFunc again.
  • 对于 F# for .NET Core 的调试版本默认禁用尾调用。Tail calls are disabled by default for debug builds of F# for .NET Core. 它们在发布版本中启用,因此与桌面版 F# 编译器匹配。They are enabled for release, thus matching the desktop F# compiler.
  • 修复了 F# 引用规范化,允许你控制写入输出文件的可传递程序集引用。F# reference normalization has been fixed to allow you to control transitive assembly references written to an output file. 你便可执行 .NET Core 上程序集重定向的等效操作。This allows you to perform the equivalent of assembly redirection on .NET Core.
  • 我们修复了一个 bug,其中忽略了在内联函数上尝试使用动态调用时使用的错误消息。We fixed a bug where the error message used when attempting to use dynamic invocation on inline functions was ignored. 错误消息现将传送。The error message now propagates.
  • F# 现在尊重你可在项目文件中设置的 WarningsNotAsErrors 标志。F# now respects the WarningsNotAsErrors flag that you can set in project files.
  • 对于模式匹配分支不返回相同类型的错误消息条件,Isaac Abraham 已进行了更新,使其更为友好。When branches of a pattern match do not return the same error message type condition, has been updated to be friendlier by Isaac Abraham.
  • Steffen Forkmann 修复了编译缺少重载方法实现的接口实现时出现的内部错误 bug。An internal error bug when a compiling interface implementation that lacks an overloaded method implementation has been fixed by Steffen Forkmann.
  • Gauthier Segay 删除了编译器文法阶段中一些没必要的数组复制。Some unnecessary array copying in the lexing phase of the compiler has been removed by Gauthier Segay.
  • F# 枚举上不完整的模式匹配现在生成详细的警告,给出未涵盖的用例示例(由 John Wostenberg 提供)。Incomplete pattern matches on F# enumerations now produces a detailed warning that gives an example of a case not covered, contributed by John Wostenberg.
  • `#nowarn "2003" 现在受到尊重(由 Matthias Diitrich 提供)。`#nowarn "2003" is now respected, contributed by Matthias Diitrich.
  • Steffen Forkmann 修复了在 F# 重载解析中使用 C# 扩展方法可能失败这一 bug。A bug where consuming C# extensions methods could fail in F# overload resolution has been fixed by Steffen Forkmann.
  • Steffen Forkmann 修复了内部 QueueList 数据结构 bug。An internal QueueList data structure bug was fixed by Steffen Forkmann.
  • Steffen ForkmannEugene Auduchinokncave 还提供了各种小的优化并进行了代码清除工作。Various smaller optimizations and code cleanup efforts were contributed by Steffen Forkmann, Eugene Auduchinok, and ncave.

F# 核心库 4.5.xF# Core Library 4.5.x

现在推出了对 F# 核心库的下列补充内容:The following additions to the F# Core Library are now available:

  • 完成了大量工作来改进 async { } 计算表达式的堆栈跟踪。Significant work has been done to improve stack traces for async { } computation expressions. 现在应能够在堆栈跟踪中查看用户代码和用户行号。You should now be able to see user code and user line numbers in stack traces. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.
  • 提供类型 System.FuncSystem.Action 重载的 FuncConvert.FromFuncFuncConvert.FromAction API,帮助 C# 中的互操作。FuncConvert.FromFunc and FuncConvert.FromAction APIs that type System.Func and System.Action overloads, to help in interoperation with C#. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.
  • 提供了新类型 ValueOption,它是旨在为活动模式带来更好性能的系列未来功能中的首个功能。ValueOption is a new type available, which is the first in a set of future features ultimately aimed at better performance for Active Patterns. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.
  • TryGetValue 现在是 F# Map 类型上的新成员。TryGetValue is now a new member on the F# Map type. 可在此功能的 RFC 中了解详细信息。You can learn more in the RFC for this feature.
  • 我们解决了首次调用 MailboxProcessor.TryReceive 时 CPU 使用率较高的问题。We fixed High CPU usage upon the first invocation of MailboxProcessor.TryReceive.
  • bool 比较现在使用快速泛型比较(由 Vasily Kirichenko 提供)。Comparison for bool now uses fast generic comparison, contributed by Vasily Kirichenko.
  • Array.allPairs 的摘要文本已更新为正确(由 Patrick McDonald 提供)The summary text for Array.allPairs has been updated to be correct, contributed by Patrick McDonald

F# 工具改进F# Tooling Improvements

此版本中提供 F# 工具的重大改进,例如性能改进和一些新的编辑器功能。Significant improvements in the F# tools, such as performance enhancements and some new editor features are included this release. 与往常一样,F# 开源社区提供了大量内容,作出了巨大贡献。As always, with a large number of contributions from the F# open source community. 以下是一些亮点:Here are the highlights:

  • 我们改进了所有形式的 .NET SDK 样式项目的 IntelliSense 性能,包括那些使用多目标的项目。We improved IntelliSense performance for .NET SDK-style projects of all forms, including those that use multi-targeting.
  • Vasily KirichenkoSteffen ForkmannGauthier Segay 进行了社区驱动的工作,分析和改进了非常大的文件的 IntelliSense 性能。A community-driven effort to analyze and improve IntelliSense performance for very large files was contributed by Vasily Kirichenko, Steffen Forkmann, and Gauthier Segay. 非常大的文件(10k 以上的代码行)中的 IntelliSense 现在约是原来的两倍快。IntelliSense in very large files (10k+ lines of code) is roughly twice as fast now.
  • 过时 FSharp.Core(尽管安装了包)的警告不再出现在 .NET SDK 样式项目中。The warning for an outdated FSharp.Core (despite the package being installed) is no longer present in .NET SDK-style projects.
  • IntelliSense 中 . 之后为成员显示 XML 文档的说明工具提示在 10 秒后不再超时。The description tooltip that displays XML documentation for a member after . in IntelliSense no longer times out after 10 seconds.
  • 修复了无法在对象构造函数参数中设置断点这一 bug。A bug where you could not set breakpoints in object constructor arguments has been fixed.
  • 修复了重命名符号属于泛型参数时将进行复制这一 bug。A bug where a renamed symbol would be duplicated when it is a generic parameter has been fixed.
  • .NET Framework 的模板(经典 F# 模板)现在使用来自 NuGet 包的 FSharp.Core,以便与 .NET SDK F# 模板保持一致。Templates for .NET Framework (classic F# templates) now consume FSharp.Core from a NuGet package, to align with .NET SDK F# templates.
  • 现在为 ()[]{}[||][<>] 大括号对提供自动的事务型大括号完成。Automatic, transactional brace completion is now available for (), [], {}, [||], and [<>] brace pairs. 我们与 Gibran Rosa 一起完成这项工作。We did this work in collaboration with Gibran Rosa.
  • 现在,可以通过按住 Ctrl 并单击 F# 符号来转到定义。You can now go to definition with Ctrl + Click on an F# symbol. 此笔势的设置在“工具”>“选项”窗口中也受到尊重。The settings for this gesture are also respected in the Tools > Options window.
  • 修改了 IntelliSense 性能 UI,允许为各种 IDE 功能配置过时的 typecheck 信息。The IntelliSense performance UI has been modified to allow configuration of stale typecheck information for various IDE features. 每个选项的说明现在显示在设置的工具提示中。Explanations for each option are now present in tooltips for the settings.
  • 大括号匹配突出显示现在正确地突出显示大括号(与 Vasily Kirichenko 协作完成)。Brace match highlighting now correctly highlights braces, completed in collaboration with Vasily Kirichenko.
  • 现在当类型以递归方式定义时“转到定义”正确导航(由 Vasily Kirichenko 提供)。Go to definition now navigates correctly when a type is defined recursively, contributed by Vasily Kirichenko.
  • Vasily Kirichenko 修复了文件顶部为空时未将自动导入命名空间打开这一 bug。A bug where an auto-imported namespace wasn't opened when the top of a file was empty has been fixed by Vasily Kirichenko.
  • Vasily Kirichenko 修复了将包含点的 printf 说明符错误地着色这一 bug。A bug where printf specifiers that contained dots were miscolored has been fixed by Vasily Kirichenko.
  • Vasily Kirichenko 修复了将递归模块内所有打开项视为未使用这一 bug。A bug where all opens were considered unused inside of a recursive module has been fixed by Vasily Kirichenko.
  • Vasily Kirichenko 大大提升了 Unused Opens 分析器的性能。The performance of the Unused Opens analyzer has been improved significantly by Vasily Kirichenko.
  • 属性自动完成功能现在仅建议确实是属性的选项(由 Vasily Kirichenko 提供)。Autocompletion for attributes now only suggests options that are actually attributes, contributed by Vasily Kirichenko.
  • 现在为构造函数调用站点上的类型提供程序静态参数生成签名帮助工具提示(由 Vasily Kirichenko 提供)。Signature Help tooltips are now generated for Type Provider static parameters at the constructor call site, contributed by Vasily Kirichenko.
  • Vasily Kirichenko 修复了将用作度量单位的值类型作为引用类型进行着色这一 bug。A bug where value types used as units of measure were colored as reference types has been fixed by Vasily Kirichenko.
  • Vasily Kirichenko 修复了滚动时一些文件的语义着色可能消失这一 bug。A bug where semantic colorization could disappear for some files while scrolling has been fixed by Vasily Kirichenko.
  • 现在提供了试验性的 CodeLens 实现(由 Victor Peter Rouven Müller 提供)。There is now an experimental CodeLens implementation, contributed by Victor Peter Rouven Müller. 可在“选项”>“文本编辑器”>“F#”>“代码透镜”中将其打开。You can turn it on in Options > Text Editor > F# > Code Lens.
  • Sebastian Urban 修复了 F# 编译器服务会错误地省略 XML 文档中模块名称的拼写这一 bug。A bug where the F# compiler service would incorrectly elide the module names in XML documentation has been fixed by Sebastian Urban.
  • 使用 DictionaryContainsKey 和后续 Item 调用的代码已更改为使用 TryGetValue(由 Eugene Auduchinok 提供)。Code that uses Dictionary with ContainsKey and subsequent Item calls has been changed to use TryGetValue, by Eugene Auduchinok.
  • Jakob Majoka 也参与了使用工具提示的其他 API 这一过程的创作。Jakob Majoka also contributed in the process of consuming a different API for Tooltips.

基础结构、打包和开放源代码改进Infrastructure, Packaging, and Open Source Improvements

我们对基础结构、打包和开放源供稿体验进行了以下改进:We made the following enhancements to infrastructure, packaging, and our open source contribution experience:

  • 随 Visual Studio 分发的 F# 编译器不再作为单一实例安装在 F# 编译器 SDK 位置。The F# compiler distributed with Visual Studio no longer installs as a singleton in the F# Compiler SDK location. 它现在完全与 Visual Studio 并行,这意味着,并行安装 Visual Studio 最后将导致具有真正的并行 F# 工具和语言体验。It is now fully side-by-side with Visual Studio, meaning that side-by-side installations of Visual Studio will finally have truly side-by-side F# tooling and language experiences.
  • 现对 FSharp.Core NuGet 包进行签名。The FSharp.Core NuGet package is now signed.
  • ETW 日志记录已添加到 F# 工具和编译器。ETW logging has been added to the F# tools and compiler.
  • FSharp.Core 中非常大的 control.fs/control.fsi 文件现拆分为 async.fs/async.fsievent.fs/event.fsieventmodule.fs/eventmodule.fsimailbox.fs/mailbox.fsiobservable.fs/observable.fsiThe very large control.fs/control.fsi files in FSharp.Core have been split into async.fs/async.fsi, event.fs/event.fsi, eventmodule.fs/eventmodule.fsi, mailbox.fs/mailbox.fsi, and observable.fs/observable.fsi.
  • 我们添加了 .NET SDK 样式版本的项目性能压力测试项目。We added .NET SDK-style versions of our project performance stress test artifacts.
  • 从基本代码中删除了 Newtonsoft.json,现在,你为 OSS 参与者下载的包将少一个。We removed Newtonsoft.json from our codebase, and you now have one less package downloaded for OSS contributors.
  • 我们现在使用最新版本的 System.Collections.Immutable 和 System.Reflection.Metadata。We now use the latest versions of System.Collections.Immutable and System.Reflection.Metadata.

C++ 合规性和工具集改进C++ Conformance and Toolset Improvements

此版本包含以下 C++ 符合性和工具集改进:This release contains the following C++ conformance and toolset improvements:

  • 新的基于令牌的试验性预处理器,它符合 C++ 11 项标准(包括 C99 预处理器功能),并通过 /experimental:preprocessor 开关启用。A new, experimental, token-based preprocessor that conforms to C++11 standards (including C99 preprocessor features), enabled with the /experimental:preprocessor switch. 使用宏 _MSVC_TRADITIONAL 对其进行控制,使用传统预处理器时定义为 1,使用符合标准的新试验性预处理器时定义为 0。This is controlled with macro _MSVC_TRADITIONAL, which is defined 1 when using the traditional preprocessor and 0 when using the new experimental standards conformant preprocessor.
  • Visual Studio 开发人员命令提示支持启用 Visual C++ Spectre 变体 1 缓解运行时 (-vcvars_spectre_libs = spectre)。The Visual Studio Developer Command Prompt supports enabling the Visual C++ Spectre variant 1 mitigated runtimes (-vcvars_spectre_libs = spectre). 有关 Spectre 缓解的详细信息,请参阅 Visual C++ 团队博客。More information about Spectre mitigations is available on the Visual C++ Team Blog.
  • SSA 优化器添加的两项新内容重点关注新式 C++ 代码生成:冗余存储清除和冗余分支折叠。Two new additions to the SSA Optimizer focused on modern C++ code generation: redundant store elimination and folding of redundant branches.
  • 优化的内存映射了链接器中的 I/O 性能以减少链接时间。Optimized memory mapped I/O performance in the linker to reduce link times.

C++ 跨平台开发C++ Cross-Platform Development

此版本中,我们改进了 C++ 跨平台开发,并向其添加了以下内容:We added, improved, and added the following to C++ cross-platform development for this release:

  • 添加了“添加”>“新项”模板,用于生成遵循“工具”>“选项”中为 ClangFormat 指定的编码约定的 .clang 格式文件。Added Add > New Item template for generating a .clang-format file following the coding convention specified for ClangFormat in Tools > Options. 如果选择 Visual Studio 约定,则生成的文件尝试从“工具”>“选项”中匹配用户当前的 Visual Studio 格式设置配置。If the Visual Studio convention is selected, the generated file tries to match the user's current Visual Studio formatting configuration from Tools > Options.
  • 将配送的 format.exe 版本更新到 6.0.0。Updated the shipped clang-format.exe version to 6.0.0.
  • 用于简化向 CppProperties.json 添加配置的模板。Templates to simplify adding configurations to CppProperties.json.
  • 添加了模板以简化向 CMakeSettings.json 添加配置(图 7)。Added templates to simplify adding configurations to CMakeSettings.json (Figure 7).
Configuration templates for CMake
(图 7)CMake 的配置模板(Figure 7) Configuration Templates for CMake

C++ 生产力C++ Productivity

下面是针对 C++ 生产力的增强功能和改进功能:We made the following enhancements and improvements to C++ productivity:

  • 有关宏的 C++ 快速信息工具提示现在显示它们的扩展功能,而不仅仅是其定义。C++ Quick Info tooltips on macros now show what they expand to, rather than just their definition. 如果复杂宏在其阐明预处理器使用什么代替宏标识符时引用了其他宏,这将特别有用。This is particularly useful for complex macros that reference other macros as it clarifies what the macro identifier is replaced with by the preprocessor.
  • 添加了新的快速修复灯泡,将基本宏转换为 constexpr 作为使代码变得新式的新工具。Added a new quick-fix lightbulb to convert basic macros to constexpr as a new tool to modernize code.
  • 用于模板的 IntelliSense 提供了有关模板参数的详细信息,便于在模板正文中充分利用 IntelliSense(图 8)。IntelliSense for templates provide you more details about template arguments to take full advantage of IntelliSense within your template body (Figure 8).
Template IntelliSense
(图 8)模板 IntelliSense(Figure 8) Template IntelliSense
  • 我们正在努力使代码分析体验焕然一新。We are working to refresh our code analysis experience. 现在可以在“工具”>“选项”>“文本编辑器”>“C ++”>“实验”>“代码分析”下启用正在进行的新功能。You can now enable the new, in-progress features under Tools > Options > Text Editor > C++ > Experimental > Code Analysis. 打开或保存文件时,代码分析可在后台中运行,并且结果显示在错误列表中,在编辑器中显示为绿色波形曲线(图 9)。Code analysis can run in the background when files are opened or saved, and results are displayed in the error list and as green squiggles in the editor (Figure 9).
In-editor code analysis
(图 9)编辑器内代码分析(Figure 9) In-editor Code Analysis

C++ 调试改进C++ Debugging Improvements

我们进行了以下调试改进:We made the following debugging improvements:

  • 仅我的代码功能现在允许逐步执行系统或第三方 C++ 库中的代码,以及折叠调用堆栈窗口中的那些调用。Just My Code now enables you to step-over code from system or 3rd party C++ libraries in addition to collapsing those calls in the call-stack window. 当代码使用 /JMC 进行编译且 .natjmc 文件中指定了非用户库路径时,可以为任何 C++ 库控制此行为。You can control this behavior for any C++ libraries when your code is compiled with /JMC and the non-user libraries paths are specified in a .natjmc file. 如果你在进入时系统库调入用户代码,则调试器跳过所有系统代码并在用户代码回调的第一行上停止(图 10)。If the system library calls into user-code, when you step in, the debugger skips all system code and stops on the first line of user-code callback (Figure 10).
Just My Code
(图 10)仅我的代码(Figure 10) Just My Code
  • 数据断点现在可在“监视”、“快速监视”、“自动”和“局部变量”窗口中进行设置,从而只需几次短的单击即可在存储于内存中的值发生更改时切断。Data breakpoints can now be set inside the Watch, Quickwatch, Autos, and Locals windows, allowing you to break when a value stored in memory changes in just a few, short clicks.
  • 源链接允许在编译过程将可执行的或库的原始源代码相关信息嵌入 PDB。Source Link lets you embed information about an executable or library's original source code into the PDB during compilation.
  • 调试时,如果程序终止执行,控制台窗口现将默认保持打开状态(类似于在没有调试器的情况下运行程序)。When debugging, the console window now stays open by default when the program terminates execution (similar to running the program without the debugger). 可以在“工具”>“选项”>“调试”>“常规”中将此行为切换回自动关闭控制台。This behavior can be toggled back to closing the console automatically in Tools > Options > Debugging > General.

JavaScript 和 TypeScript 改进JavaScript and TypeScript Improvements

TypeScript 3.0TypeScript 3.0

Visual Studio 2017 15.8 版现默认包含 TypeScript 3.0。Visual Studio 2017 version 15.8 now includes TypeScript 3.0 by default. 有关此版本的更多详细信息,请参阅TypeScript 3.0 发布公告For more details on this release, see the TypeScript 3.0 release announcement.

已改进的 Vue.js 支持Improved Vue.js support

对 Vue.js 库的支持已得到改进,特别是对 .vue 文件的支持,也称为“单个文件组件”。Support for the Vue.js library has been improved, and in particular support for .vue files, also known as "single file components". 改进后,在 .vue 文件中编辑脚本块时可使用增强功能,包括支持通过脚本元素上的 lang="ts" 属性在 TypeScript 中创建的脚本块。This provides enhancements when editing script blocks inside .vue files, including support for script blocks authored in TypeScript through the lang="ts" attribute on the script element. (注意:必须通过使用 WebPack 或类似包的生成过程将 .vue 文件转换为运行时所需的 HTML 和 JS 文件。(Note: A build process using WebPack or similar must be used to convert the .vue files to the HTML and JS files needed at runtime. 有关更多详细信息,请参阅单个文件组件页。)See the Single File Components page for more details).

如果安装了 Node.js 工作负载,则新建项目对话框中的“JavaScript / Node.js”或“TypeScript / Node.js”路径下将显示“Basic Vue.js Web Application”模板。If the Node.js workload is installed, there will now be "Basic Vue.js Web Application" templates under the "JavaScript / Node.js" or "TypeScript / Node.js" paths in the New Project dialog. 下面显示了在 .vue 文件中编辑脚本块内的 TypeScript 代码的示例(图 11)。The below shows an example of editing TypeScript code inside a script block in a .vue file (Figure 11).

Editing a .vue file
(图 11)编辑 .vue 文件(Figure 11) Editing .vue Files

ESLint 改进ESLint Improvements

为此版本重新实现 ESLint 支持。We reimplemented ESLint support for this release. ESLint 的改进和增强功能如下:ESLint has the following improvements and enhancements:

  • Visual Studio 现在可以 lint 正在编辑的 JavaScript 文件,而不仅仅是 lint 已保存文件。Rather than only linting saved files, Visual Studio will now lint JavaScript files as you edit, as well.
  • 可以报告项目中所有 JS 文件的结果,而不仅仅是打开文件;如果不希望验证项目的全部内容,现在可使用 .eslintignore 文件指定应忽略的目录和文件。Results can be reported for all JS files in your project, not just open files; if there are parts of your project you do not want to be linted, an .eslintignore file can now be used to specify directories and files that should be ignored.
  • ESLint 默认更新为使用 ESLint 4,但如果项目在本地已安装 ESLint,则将使用本地版本。ESLint was updated to use ESLint 4 by default, but if your project has a local installation of ESLint, it will use that version instead.

通过取消选中“工具”>“选项”>“文本编辑器”>“Javascript/Typescript”>“Linting”中的“启用 ESLint”设置,可以在 Visual Studio 中全面禁用 ESLint(图 12)。ESLint may be disabled globally in Visual Studio by unchecking the Enable ESLint setting in the **Tools > Options > Text Editor > Javascript/Typescript > Linting ** (Figure 12).

ESLint Options
(图 12) ESLint 选项(Figure 12) ESLint Options

针对 Node.js 的“打开文件夹”改进Open Folder Improvements for Node.js

安装“Node.js 工作负载”后,在“打开文件夹”方案中使用 JavaScript 和 TypeScript 时有了许多改进。There are numerous improvements working with JavaScript and TypeScript in the Open Folder scenario when the "Node.js workload" is installed. 例如,管理 NPM 包、生成 TypeScript、使用 Node.exe 进行启动和调试、执行 NPM 脚本和运行单元测试。For example, managing NPM packages, building TypeScript, launching and debugging with Node.exe, executing NPM scripts, and running unit tests.

有关详细信息,请参阅 Develop JavaScript and TypeScript code in Visual Studio without solutions or projects(在 Visual Studio 中无需解决方案或项目即可开发 JavaScript 和 TypeScript 代码)。See Develop JavaScript and TypeScript code in Visual Studio without solutions or projects} for more information.

编辑器性能改进Editor Performance Improvements

在上一版本中,所有 JavaScript 和 TypeScript 语言服务操作都由一个 Node.js 进程提供。In previous releases, all JavaScript and TypeScript language service operations were serviced by a single Node.js process. 如果正在进行的操作可能很冗长(例如分析错误代码),此时发送了影响用户输入的命令(例如在换行符后自动格式化),则可能导致编辑器延迟。This could cause editor delays if commands that impact user typing (such as automatic formatting after a newline) were sent while a potentially lengthy operation was already in process (such as analyzing code for errors). 为缓解这种情况,现将对影响编辑最大的操作使用单独进程。To mitigate this, a separate process is now used for the operations that impact editing the most. 相比现有语言服务进程,此进行对系统资源的影响小得多。This process is significantly lighter on system resources than the existing language service process. 但是,如果想要禁用新进程,请在“工具”>“选项”>“文本编辑器”>“JavaScript/TypeScript ”>“语言服务”中勾选“禁用专用语法进程”方框。However, if you wish to disable the new process, check the Disable dedicated syntax process box in Tools > Options > Text Editor > JavaScript/TypeScript > Language Service.

Visual Studio Web 工具Visual Studio Web Tools

库管理器是 Visual Studio 2017 中包含的新功能。Library Manager is a new feature included in Visual Studio 2017. 有助于在 Web 项目中管理客户端端库。It helps you manage client-side libraries in your web projects.

容器工具Container Tools

为 ASP.NET Core Web 项目添加了新的单个项目 Docker 容器体验。We added a new single project Docker container experience for ASP.NET Core web projects. 这补充了基于 Docker Compose 的现有容器工具,并提供了更简单便捷的方法直接从 Visual Studio 创建、调试和生成 Docker 容器。This supplements the existing Docker Compose-based container tooling and provides a simpler, easier way to create, debug, and build Docker containers right from Visual Studio.

创建项目时,可以添加 Docker 支持(图 13):You can add Docker support when creating the project (Figure 13):

Enable Docker Support
(图 13)启用 Docker 支持(Figure 13) Enable Docker Support

或者,可以通过解决方案资源管理器中的项目上下文菜单为现有项目启用 Docker 支持(图 14)。Or, you can enable Docker support to an existing project through the project's context menu in Solution Explorer (Figure 14). 一旦执行此操作,Visual Studio 将在项目中创建单个 Dockerfile。Once you do this, Visual Studio creates a single Dockerfile in the project. 可以选择 Windows 还是 Linux。You have the option to choose either Windows or Linux.

Add Docker Support
(图 14)添加 Docker 支持(Figure 14) Add Docker Support

Visual Studio 还为 Docker 添加了调试器启动配置文件(图 15),以便项目在容器内运行时可对其进行调试。Visual Studio also adds a debugger launch profile (Figure 15) for Docker so that the project can be debugged while running within a container.

Docker Launch Profile
(图 15)Docker 启动配置文件(Figure 15) Docker Launch Profile

如果有带多个 Docker 项目的解决方案,默认情况下,选择启动解决方案时只有一个容器运行。If you have a solution with multiple Docker projects, by default, only one container runs when you choose to start the solution. 如果想要同时运行多个容器,可在解决方案资源管理器中右键单击该解决方案,然后选择“设置启动项目”、“多个启动项目”,然后对要运行的所有项目将“操作”下拉列表设置为“启动”或“启动(不调试)”。If you wish to run multiple containers simultaneously, you can right-click on the solution in Solution Explorer and select Set Startup Projects and then Multiple startup projects, and then set the Action drop-down to Start or Start without debugging for all projects that you want to run.

容器化项目按所需方式运行后,如果准备好将项目推送到 Azure 容器注册表或 DockerHub,则可以右键单击该项目并选择“生成 Docker 映像”以本地生成映像。Once you have your containerized project running the way you want, you can right-click on the project and select Build Docker Image to build an image locally, when ready to push to Azure Container Registry or DockerHub.

此外可以通过新的“容器业务流程协调程序支持”选项将现有的基于 Compose 的 Docker 功能添加到 ASP.NET Core Web 项目中(图 16)。You can also add the existing Docker Compose-based functionality to an ASP.NET Core web project through the new Container Orchestrator Support option (Figure 16). 在解决方案资源管理器中右键单击 ASP.NET Core Web 项目,选择“添加”>“容器业务流程协调程序支持”,然后从下拉列表菜单中选择“Docker Compose”。Right-click on the ASP.NET Core web project in Solution Explorer, select Add > Container Orchestrator Support, and then select Docker Compose from the drop-down menu.

Add Container Orchestrator Support
(图 16)添加业务流程协调程序支持(Figure 16) Add Orchestration Support

发布改进Publish Improvements

此版本包含以下发布改进:This release contains the following publish improvements:

  • 将 Docker 容器发布到容器注册表时,现在可以自定义映像的标记。When publishing a Docker container to a container registry, you can now customize the tag for the image. 可以手动添加标记(默认为“最新”),或使用自动生成的标记来确保每个标记是唯一的。You can either manually add a tag (default is "latest") or use an auto-generated tag to make sure each tag is unique.
  • 创建新的 Azure 应用服务时,还可以配置 Application Insights 以自动收集遥测。When creating a new Azure App Service, you can also configure Application Insights to collect telemetry automatically. 如果选择的区域也有 Application Insights,则默认启用。If you choose a region that also has Application Insights, it is enabled by default. 如果选择的区域尚不包含 Application Insights,可以从下拉列表中为 Application Insights 资源手动指定其他区域。If you choose a region that does not yet contain Application Insights, you can manually specify a different region for your Application Insights resource from the dropdown.
  • 发布 Azure Functions 项目时,可以选择使用新的 Run-From-Zip 功能进行发布。When publishing Azure Functions projects you can choose to publish using the new Run-From-Zip feature.

Visual Studio Tools for XamarinVisual Studio Tools for Xamarin

此版本包含以下 Xamarin 更新:This release contains the following updates for Xamarin:

  • 添加了对 Xcode 9.4 的支持。We added support for Xcode 9.4.
  • 创建新的 Xamarin.Forms 项目时,默认代码共享选项现在为 .NET Standard。When you create a new Xamarin.Forms project, the default code sharing option is now .NET Standard. 共享项目选项仍然可用。The shared project option is still available.
  • 添加了 Android 增量生成的改进。We added Android incremental build improvements. Xamarin.Android 利用在中间输出目录中生成的文件实现了比完整生成更快的增量生成。Xamarin.Android uses files generated in the intermediate output directory to achieve incremental builds that are faster than full builds. 以前,如果更改了项目的目标框架,它将使文件无效并在下次运行时实现完整生成。Previously, if you changed your project's target framework it would invalidate the files and result in a full build on the next run. 在此版本中,现保留每个框架文件夹中的文件,这样你可以在不同的目标框架之间进行切换,并且仍可使用增量生成。In this release we now preserve the files in per-framework folders so you can switch between different target frameworks and still benefit from incremental builds. 通过清理项目,你可以回收保留的文件所占用的磁盘空间。Cleaning the project allows you to reclaim the disk space used by the preserved files.
  • 我们在 Visual Studio 2017 中添加了对 Xamarin.Mac 绑定项目的最低支持。We have added minimum support for Xamarin.Mac binding projects in Visual Studio 2017. 这样,Visual Studio 就可加载 Xamarin.Mac 绑定项目并将其识别为“已受支持”。This enables Visual Studio to load and recognize Xamarin.Mac binding projects as supported. 此外还可以生成 Xamarin.Mac 绑定项目。You can also build Xamarin.Mac binding projects. 不过是在本地执行生成过程而不是使用本机 Mac 工具链,因此在应用中运行或调试时,不能使用生成的 IL 程序集。However, the build process is performed locally without using the native Mac tool chain, so the generated IL assemblies cannot be used for running or debugging in apps.

Hyper-V Android 仿真器支持Hyper-V Android Emulator Support

此版本增加了在 Windows 10 的 2018 年 4 月更新上运行时支持使用与 Hyper-V 兼容的 Google Android 仿真器(图 17)。This release adds support for the Google Android emulator that is compatible with Hyper-V when running on the Windows 10 April 2018 Update (Figure 17). 这样,你可以将 Google Android Emulator 与其他基于 Hyper-V 的技术(例如 Hyper-V 虚拟机、Docker 工具和 HoloLens 模拟器等)并行使用。This enables you to use Google's Android emulator side-by-side with other Hyper-V based technologies, including Hyper-V virtual machines, Docker tooling, the HoloLens emulator, and more. 现向使用 Hyper-V 的移动应用开发人员提供一款快速运行的 Android 模拟器,该模拟器始终支持最新的 Android API、可与现有的 Google Play Services 配合使用,同时支持 Android Emulator 的各项功能(例如照相机、地理位置和快速启动)。Mobile app developers who use Hyper-V now have access to a fast Android emulator that always supports the latest Android APIs, works with Google Play Services out of the box, and supports all features of the Android emulator, including camera, geolocation, and Quick Boot.

Screenshot of both the Google Android emulator and HoloLens emulator running at the same time.
(图 17)Google Android 仿真器和 HoloLens 仿真器
(Figure 17) Google Android Emulator and HoloLens Emulator

Xamarin.Android 设计器Xamarin.Android Designer

显著改善了 Xamarin.Android 的设计器体验We made significant improvements to the designer experience for Xamarin.Android. 亮点包括:Highlights include:

  • 引入了拆分视图编辑器,可用于同时创建、编辑和预览布局(图 18)。A split-view editor was introduced which allows you to create, edit, and preview your layouts at the same time (Figure 18).
Screenshot of the Xamarin.Android split-view editor.
(图 18)Xamarin.Android 拆分视图编辑器
(Figure 18) Xamarin.Android Split-view Editor
  • 改善了 IntelliSense 体验,同时提升了自定义控件的可靠性。Improved IntelliSense experience and reliability of custom controls.
  • 支持对系统提供的值使用示例数据。Sample data support for system provided values.

Xamarin.Forms 预览器Xamarin.Forms Previewer

当使用 Xamarin.Forms 版或更高版本时,Xamarin.Forms 预览器现提供工具箱支持。The Xamarin.Forms Previewer now has toolbox support when using Xamarin.Forms version or higher. Xamarin.Forms 控件将在工具箱中显示,这让工具箱新手们能更轻松地找到它们。Xamarin.Forms controls will appear in the toolbox so they are more discoverable for those new to the toolkit. 还可将控件拖放到 XAML 代码编辑器中,从而在页面上添加控件。You can also drag and drop a control onto the XAML code editor to add the control to the page. Xamarin.Forms 预览器现在属于 XAML 编辑器。The Xamarin.Forms Previewer is now part of the XAML editor. 可通过编辑器窗格边缘上的展开图标来打开和关闭它。You can open and close it with the expand icon on the edge of the editor pane.


此版本为 Python 开发人员添加了以下改进功能:This release adds the following improvements for Python developers:

  • Python IntelliSense 现使用 typeshed 定义为无法通过静态分析推断出自动完成的库提供更丰富的结果。Python IntelliSense now uses typeshed definitions to provide richer results for libraries where auto-completions cannot be inferred by static analysis.
  • 试验性调试器在 15.7 预览版中首次推出,它现在是 Python 使用的默认调试引擎,为 Python 代码提供更快、更可靠的调试。The experimental debugger, first announced in the 15.7 preview releases, is now the default debug engine used for Python, providing faster and more reliable debugging for Python code.
  • 增添了对 Python 3.7 的支持且附带修补程序,可实现调用附加功能、分析功能和混合模式(跨语言)调用功能。We have added support for Python 3.7, including fixes to enable debug attach, profiling, and mixed-mode (cross-language) debugging features.
  • 要详细了解上述功能,请务必查看 Visual Studio 2017 15.8 版中的 Python 博客文章。For more information about the above features, be sure to check out our Python in Visual Studio 2017 version 15.8 blog post.

迁移本地 Azure 函数设置Migrate Local Azure Function Settings

发布摘要页中提供的“托管应用程序设置”对话框现可显示 local.settings.json 文件中的值,且支持你将这些值迁移到 Azure 中托管的远程 Azure 函数应用。The "Managed Application Settings" dialog available from the publish summary page now displays values from your local.settings.json file and enables you to migrate values to your remote Azure Function app hosted in Azure.

连接的服务Connected Services

对于 Azure 函数项目的解决方案,现可直接通过 Visual Studio 2017 配置 Azure Functions 的持续交付。You can now configure continuous delivery for Azure functions directly from Visual Studio 2017 for solutions with Azure Function Projects.

测试资源管理器方面的改进Test Explorer Improvement

选中层次结构视图中的某个分组时,测试资源管理器现显示更详细的测试状态摘要窗格(测试资源管理器的下窗格)。Test Explorer now displays a more informative test status summary pane (lower pane of test explorer) when one of the groupings in the hierarchy view is selected. 该窗格现显示该分组中失败、通过或未运行的测试数量。The pane now displays how many tests failed, passed, or not run in that grouping.

新的扩展性功能New Extensibility Features

语言服务器协议Language Server Protocol

Visual Studio 现提供针对语言服务器协议的本机支持。Visual Studio now has native support for the Language Server Protocol. 扩展作者可创建扩展,用于与现有语言服务器进行通信,从而向 Visual Studio 添加其他语言支持。Extension authors can create extensions that communicate with existing language servers to add additional language support to Visual Studio. 扩展用户可安装这些扩展,从而开始在 Visual Studio 中使用自己熟悉的语言(如 Rust)。Extension users can install these extensions to start using their favorite language inside Visual Studio like Rust.

AsyncPackage 模板AsyncPackage Template

扩展作者现可通过项模板创建 AsyncPackage,从而优化其扩展的性能。Extension authors can now use item templates to create AsyncPackages to optimize their extension's performance. 详细了解AsyncPackagesRead more about AsyncPackages.

扩展包Extension Packs

借助扩展包,可轻松共享自己偏好的一组扩展或设置新的带有所有扩展的 Visual Studio 安装。Easily share your favorite set of extensions or set up a new install of Visual Studio with all your extensions by using an extension pack. 利用扩展包,可创建扩展列表、将其打包在扩展中,并使用列表快速批量安装这些扩展。Extension packs allow you to create a list of extensions, package them in an extension, and use it quickly to install those extensions in bulk.

命令行扩展发布Command Line Extension Publishing

使用命令行将扩展发布到 Visual Studio Marketplace。Publish your extensions to the Visual Studio Marketplace using the command line.

.NET Core SDK 2.1.400.NET Core SDK 2.1.400

Visual Studio 2017 15.8 版包括 .NET Core SDK 2.1.400。Visual Studio 2017 version 15.8 includes .NET Core SDK 2.1.400. 新的 SDK 功能包括:New SDK features include:

  • 添加了 NUnit 模板Added NUnit templates
  • 添加了对已签名的全局工具的支持Added support for signed global tools
  • 改进了帮助文本,使其更加清晰明了Improved help text for better clarity

解决了 .NET Core CLI 上的 32 个问题。32 issues were closed on the .NET Core CLI.
解决了 .NET Core SDK 上的 20 个问题。20 issues were closed on the .NET Core SDK.

源代码管理Source Control

对于 .NET Core 项目,通过文件资源管理器直接添加到项目的文件现可在解决方案资源管理器中显示正确的 Git 和 TFS 跟踪图标,而无需重新加载解决方案。For .NET Core projects, files added directly to the project through File Explorer will now show the correct Git and TFS tracking icons in the Solution Explorer without needing to reload the solution.

.NET 测试适配器扩展.NET Test Adapter Extension

.NET 测试适配器具有以下中断性变更和弃用:The .NET Test Adapter has the following breaking change and deprecation:

  • 中断性变更:所有测试项目必须在其 csproj 中包含各自的 .NET 测试适配器 NuGet 引用。Breaking Change: All test projects must include their .NET test adapter NuGet reference in their csproj. 如果未包含,在生成之后启动测试适配器扩展的发现或用户尝试运行所选测试时,项目中将显示以下测试输出:If they do not, this test output will appear on the project if discovery by a test adapter extension is kicked off after a build or if the user tries to run the selected tests:
    • 测试项目 {} 不引用任何 .NET NuGet 适配器。Test project {} does not reference any .NET NuGet adapter. 测试发现或执行可能不适用于此项目。Test discovery or execution might not work for this project. 建议在解决方案的每个测试项目中引用 NuGet 测试适配器。It is recommended to reference NuGet test adapters in each test project in the solution.
  • .NET 测试框架已在 NuGet 包中发布其适配器,且已迁出 Visual Studio 扩展。.NET test frameworks have been releasing their adapters in NuGet packages and moving away from Visual Studio extensions. 弃用了通过扩展提供的 .NET 测试适配器支持(不过仍受支持)。The support for .NET test adapters delivered through extensions is deprecated, but still supported. 这意味着可通过“工具”>“选项”>“测试”使用两个新选项。This means that two new options are available in Tools > Options > Test.
    • 通过第一个选项,Visual Studio 只能使用它在测试程序集文件夹(由测试适配器 NuGet 引用填充)中发现的或 runsettings 文件中指定的测试适配器。The first option allows Visual Studio to only use the test adapters it finds in the test assembly folder (populated by the test adapter NuGet reference) or as specified in the runsettings file.
    • 通过第二个选项,Visual Studio 可“回退”至之前的行为,并为不具备测试适配器 NuGet 引用的项目搜索测试适配器扩展。The second option allows Visual Studio to "fallback" to the old behavior and search for test adapter extensions for projects that do not have a test adapter NuGet reference. 默认勾选这两个选项,因此在该版本中,默认行为保持不变。Both options are checked by default, so no default behavior will change in this release.
  • 请注意:非 .NET 测试适配器不受此更改的影响。Note: Non-.NET test adapters are not affected with this change.

ASP.NET .NET Framework 密码支持ASP.NET .NET Framework Secrets Support

对于面向 .NET Framework 4.7.1 或更高版本的 ASP.NET .NET Framework 项目,现可通过右键单击项目并选择“托管用户密码”,打开源代码中不需要的密码并将其存储到 usersecrets.xml 中。For ASP.NET, .NET Framework projects that target .NET Framework 4.7.1 or higher, you can now open and store secrets you do not want in your source code in usersecrets.xml by right-clicking on the project and selecting "Managed User Secrets".

.NET Framework 4.7.2.NET Framework 4.7.2

Visual Studio 2017 15.8 版现向所有受支持的平台提供 .NET Framework 4.7.2(包括 4.7.2 运行时)。Visual Studio 2017 version 15.8 now offers the .NET Framework 4.7.2 development tools to all supported platforms with the 4.7.2 runtime included. .NET Framework 4.7.2 提供多项新功能和改进功能,还有大量可靠性、稳定性、安全性和性能方面的修补程序。The .NET Framework 4.7.2 offers several new features and improvements as well as numerous reliability, stability, security, and performance fixes.

有关 .NET Framework 4.7.2 的更多详细信息,可参阅以下文章:You can find more details about the .NET Framework 4.7.2 in these articles:

延迟包加载Delay Package Load

Visual Studio 现延迟加载配置为自动加载的异步包,直到 Visual Studio IDE 完全启动且解决方案加载完毕为止。Visual Studio now delays the loading of asynchronous packages that are configured to autoload until after the Visual Studio IDE has fully started and the solution has loaded. 此项更改不影响以同步方式自动加载的包。This change does not affect synchronously autoloaded packages. 用户可查看状态栏左下角的“任务状态中心”来监视进度。Users can look at the Task Status Center in the lower left corner of the status bar to monitor progress. 创建 asyncpackage 的扩展作者应测试其扩展。Extension authors that create asyncpackages should test their extension. 有关详细信息,请参阅 Improving the responsiveness of critical scenarios by updating auto load behavior for extensions(通过更新扩展的自动加载行为来提高关键方案的响应能力)。For more information, see Improving the responsiveness of critical scenarios by updating auto load behavior for extensions.

Release Notes Icon Visual Studio 2017 15.8 版安全公告通知Visual Studio 2017 version 15.8 Security Advisory Notices

Visual Studio 2017 版本 15.8.4 服务版本 -- 发布于 2018 年 9 月 11 日Visual Studio 2017 version 15.8.4 Service Release -- released on September 11, 2018

CVE-2018-8409 .NET Core 拒绝服务漏洞CVE-2018-8409 .NET Core Denial Of Service Vulnerability

当 System.IO.Pipelines 未正确处理请求时,在 .NET Core 2.1 中将存在拒绝服务漏洞。A denial of service vulnerability exists in .NET Core 2.1 when System.IO.Pipelines improperly handles requests. 如果攻击者成功利用此漏洞,可能会导致对利用 System.IO.Pipelines 的应用程序拒绝服务。An attacker who successfully exploited this vulnerability could cause a denial of service against an application that is leveraging System.IO.Pipelines. 可以远程利用漏洞,无需进行身份验证。The vulnerability can be exploited remotely, without authentication. 远程未经过身份验证的攻击者可以通过向应用程序提供特制请求来利用此漏洞。A remote unauthenticated attacker could exploit this vulnerability by providing specially crafted requests to the application.

CVE-2018-8409 ASP.NET Core 拒绝服务漏洞CVE-2018-8409 ASP.NET Core Denial Of Service Vulnerability

未正确处理 Web 请求时,在 ASP.NET Core 2.1 中将存在拒绝服务漏洞。A denial of service vulnerability exists in ASP.NET Core 2.1 that improperly handles web requests. 如果攻击者成功利用此漏洞,可能会导致对 ASP.NET Core Web 应用程序拒绝服务。An attacker who successfully exploited this vulnerability could cause a denial of service against an ASP.NET Core web application. 可以远程利用漏洞,无需进行身份验证。The vulnerability can be exploited remotely, without authentication. 远程未经过身份验证的攻击者可以通过向 ASP.NET Core 应用程序提供特制 Web 请求来利用此漏洞。A remote unauthenticated attacker could exploit this vulnerability by providing a specially crafted web requests to the ASP.NET Core application.

Visual Studio 2017 15.8 版 - 发布于 2018 年 8 月 14 日Visual Studio 2017 version 15.8 -- released on August 14, 2018

CVE-2018-0952 诊断中心标准收集器特权提升漏洞CVE-2018-0952 Diagnostic Hub Standard Collector Elevation of Privilege Vulnerability

Visual Studio 服务中存在一个特权提升漏洞,这可能会导致非管理员用户在编写文件时获得系统特权。An elevation of privilege vulnerability exists in a visual studio service, which can lead to system privileges by a non-admin user when writing files. 攻击者利用这一点后,即使只具有用户级别的访问权限,也可将文件写为系统。An attacker who took advantage of this could write files as system while only having user level access. 此安全更新通过模拟当前用户来验证文件位置的访问权限,解决了此问题。This security update addresses this issue by impersonating the current user to validate access to the file location.

Visual Studio 2017 15.8 预览版.4 - 发布于 2018 年 7 月 10 日Visual Studio 2017 version 15.8 Preview 4 -- released on July 10, 2018

CVE-2018-8172 Visual Studio 远程代码执行漏洞CVE-2018-8172 Visual Studio Remote Code Execution Vulnerability

远程执行代码漏洞可打开特制项目或资源文件来利用用户的计算机。A remote code execution vulnerability that can lead to exploitation of a user's machine by opening a specially crafted project, or resource file. 此次安全更新通过更正 Visual Studio 检查文件源标记的方式来解决该漏洞。The security update addresses the vulnerability by correcting how Visual Studio checks the source markup of a file.

CVE-2018-8260 .NET Framework 远程代码执行漏洞CVE-2018-8260 .NET Framework Remote Code Execution Vulnerability

.NET 软件中存在远程执行代码漏洞,攻击者可利用此漏洞在当前用户的上下文中运行任意代码,以此利用用户计算机。A remote code execution vulnerability exists in .NET software that can lead to exploitation of a user's machine by allowing attackers to run arbitrary code in the context of the current user. 此次安全更新通过更正 .NET 检查文件源标记的方式来解决该漏洞。The security update addresses the vulnerability by correcting how .NET checks the source markup of a file.

CVE-2018-8232 .NET Microsoft 宏汇编程序篡改漏洞CVE-2018-8232 .NET Microsoft Macro Assembler Tampering Vulnerability

与 Microsoft 宏汇编程序相关的篡改漏洞未正确验证代码。Tampering vulnerability related to the Microsoft Macro Assembler improperly validating code. 此次安全更新通过确保 Microsoft 宏汇编程序正确验证代码逻辑来解决该漏洞。The security update addresses the vulnerability by ensuring that Microsoft Macro Assembler properly validates code logic.

CVE-2018-8171 ASP.NET Core 安全功能绕过漏洞CVE-2018-8171 ASP.NET Core Security Feature Bypass Vulnerability

未验证错误登录尝试次数时存在 ASP.NET Core 安全功能绕过漏洞,这可能导致攻击者无限次尝试进行身份验证。An ASP.NET Core Security Feature Bypass Vulnerability exists when the number of incorrect login attempts is not validated that can lead to an attacker trying infinite authentication attempts. 此次更新通过验证错误登录尝试次数来解决该漏洞。The update addresses the vulnerability by validating the number of incorrect login attempts.

Visual Studio 2017 15.8 预览版.3 - 发布于 2018 年 6 月 26 日Visual Studio 2017 version 15.8 Preview 3 -- released on June 26, 2018

CVE-2018-11235 针对 Git 安全漏洞的 Microsoft 安全公告CVE-2018-11235 Microsoft Security Advisory for Git Security Vulnerability

我们修复了 Git 中由 Git 社区披露的安全漏洞。We fixed a security vulnerability in Git that was disclosed by the Git community. 当用户克隆恶意存储库时,该漏洞可导致执行任意代码。The vulnerability can lead to arbitrary code execution when a user clones a malicious repository.

Visual Studio 2017 15.8 预览版.1 - 发布于 2018 年 5 月 08 日Visual Studio 2017 version 15.8 Preview 1 -- released on May 08, 2018

CVE-2018-0765 针对 .NET Core 拒绝服务漏洞的 Microsoft 安全公告CVE-2018-0765 Microsoft Security Advisory for .NET Core Denial of Service Vulnerability

  • Microsoft 发布此安全公告的目的在于提供有关 .NET Core 和 .NET 本地版本 2.0 中的漏洞的信息。Microsoft is releasing this security advisory to provide information about a vulnerability in .NET Core and .NET native version 2.0. 此公告还可指导开发者更新其应用程序,以消除此漏洞。This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.
  • Microsoft 了解到,.NET Framework 和 .NET Core 未正确处理 XML 文档时,会出现漏洞拒绝服务。Microsoft is aware of a denial of service vulnerability that exists when .NET Framework and .NET Core improperly process XML documents. 如果攻击者成功利用此漏洞,可能会导致对 .NET Framework、.NET Core 或 .NET 本地应用程序拒绝服务。An attacker who successfully exploited this vulnerability could cause a denial of service against a .NET Framework, .NET Core, or .NET native application.
  • 此次更新更正了 .NET Framework、.NET Core 和 .NET 本地应用程序对 XML 文档处理的操作方式,从而解决了此漏洞。The update addresses the vulnerability by correcting how .NET Framework, .NET Core, and .NET native applications handle XML document processing.
  • 如果是 ASP.NET Core 应用程序,还建议开发人员更新到 ASP.NET Core 2.0.8。If your application is an ASP.NET Core application, developers are also advised to update to ASP.NET Core 2.0.8.

Release Notes Icon Visual Studio 2017 15.8.1 版Visual Studio 2017 version 15.8.1

发布日期:2018 年 8 月 17 日released on August 17, 2018

15.8 1 版中解决的首要问题Top Issues Fixed in 15.8.1

以下问题已在 15.8.1 版中得到解决:These are the issues addressed in 15.8.1:

  • 修复了在调试 Web 项目时关闭浏览器窗口时意外关闭 Visual Studio 的问题。Fixed an issue where Visual Studio would close unexpectedly when a browser window was closed while debugging a Web project.

Release Notes Icon Visual Studio 2017 版本 15.8.2Visual Studio 2017 version 15.8.2

发布日期:2018 年 8 月 28 日released on August 28, 2018

15.8.2 版中解决的首要问题Top Issues Fixed in 15.8.2

15.8.2 版中解决了客户报告的下列问题:These are the customer-reported issues addressed in 15.8.2:

Release Notes Icon Visual Studio 2017 版本 15.8.3Visual Studio 2017 version 15.8.3

发布时间:2018 年 9 月 6 日released on September 6, 2018

15.8.3 版中解决的首要问题Top Issues Fixed in 15.8.3

15.8.3 版中解决了客户报告的下列问题:These are the customer-reported issues addressed in 15.8.3:

Release Notes Icon Visual Studio 2017 版本 15.8.4Visual Studio 2017 version 15.8.4

发布时间:2018 年 9 月 11 日released on September 11, 2018

15.8.4 版中解决的首要问题Top Issues Fixed in 15.8.4

15.8.4 版中解决了客户报告的下列问题:These are the customer-reported issues addressed in 15.8.4:

Release Notes Icon Visual Studio 2017 版本 15.8.5Visual Studio 2017 version 15.8.5 New Release icon

2018 年 9 月 20 日发布released on September 20, 2018

什么是 15.8.5 中的新增功能的摘要Summary of What's New in 15.8.5

  • 适用于 visual Studio 工具Xamarin现在支持 Xcode 10。Visual Studio Tools for Xamarin now supports Xcode 10.

在固定的 15.8.5 的首要问题Top Issues Fixed in 15.8.5

这些是 15.8.5 中已解决的客户所报问题:These are the customer-reported issues addressed in 15.8.5:

什么是 15.8.5 中的新增功能的详细信息Details of What's New in 15.8.5

Visual Studio Tools for XamarinVisual Studio Tools for Xamarin

Visual Studio Tools for Xamarin 现在支持 Xcode 10,可用于生成和调试适用于 iOS 12、 12、 tvOS 和 watchOS 5 应用程序。Visual Studio Tools for Xamarin now supports Xcode 10, which allows you to build and debug apps for iOS 12, tvOS 12, and watchOS 5. 请参阅如何做好准备适用于 iOS 12iOS 12 我们简介有关可用的新功能的详细信息。See how to get ready for iOS 12 and our introduction to iOS 12 for more details on the new features available.

已知问题Known Issues

查看 Visual Studio 2017 版本 15.8 中全部现有已知问题和可用解决办法。See all existing known issues and available workarounds in Visual Studio 2017 version 15.8.

Visual Studio 2017 Known Issues


我们期待你的宝贵意见和建议!We would love to hear from you! 如有问题,请通过安装程序或 Visual Studio IDE 右上角的“报告问题”选项告知我们。For issues, let us know through the Report a Problem option in the upper right-hand corner of either the installer or the Visual Studio IDE itself. 必须向The Feedback Icon 图标位于右上角。icon is located in the upper right-hand corner. 可以在 Visual Studio 开发者社区中跟踪问题,也可在其中提问和找到答案。You can track your issues in the Visual Studio Developer Community, where you can ask questions and find answers. 也可以通过 UserVoice 提出产品建议或通过实时聊天客户支持获取免费的安装帮助。You can also make a product suggestion through UserVoice or get free installation help through our Live Chat support.


通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。Take advantage of the insights and recommendations available in the Developer Tools Blogs site to keep you up-to-date on all new releases and include deep dive posts on a broad range of features.

Developer Tools Blogs

Visual Studio 2017 发行说明历史记录Visual Studio 2017 Release Notes History

若要详细了解以往 Visual Studio 2017 版本的相关信息,请参阅 Visual Studio 2017 发行说明历史记录页。For more information relating to past versions of Visual Studio 2017, see the Visual Studio 2017 Release Notes History page.

Top of Page