Visual Studio IconVisual Studio 2017 15.8 版本資訊


開發人員社群 | 系統需求 | 相容性 | 可散發程式碼 | 授權條款 | 部落格 | 已知問題



注意

這不是 Visual Studio 的最新版本。 若要下載最新版本,請參閱 Visual Studio 的網站。


支援時間範圍

此版本現在已不支援。 如需 Visual Studio 支援的詳細資訊,請參閱 Visual Studio 2017 的支援原則

請參閱最新版的版本資訊,或造訪 Visual Studio 網站以下載最新支援的 Visual Studio 2017 版本。

Visual Studio 部落格

Visual Studio 部落格是 Visual Studio 工程小組提供產品見解的官方來源。 您可以在下列文章中找到有關 Visual Studio 2017 15.8 版的深入資訊:

Visual Studio 2017 15.8 版

重要

Visual Studio 2017 15.8 版資訊安全諮詢注意事項

15.8 中值得注意的新功能摘要

15.8 中修正的常見問題

這些是 15.8 中已解決的客戶回報問題:

查看 Visual Studio 2017 15.8 版中已修正的所有客戶回報問題。

The Developer Community Portal


15.8 新功能的詳細資料

Release Notes IconVisual Studio 2017 15.8.0 版

於 2018 年 8 月 14 日發行

15.8 的新功能

安裝

您現在可以選擇在開始安裝之前下載所有安裝檔案。

  • 若要使用這個新選項,請選取安裝程式中的 [全部下載後安裝] 選項 (圖 1)。 如果您有慢速的網際網路連線,則建議使用此選項。
  • 預設選項會保留 [在下載時安裝],以平行下載和安裝。
Download Otion
(圖 1) 下載選項

效能

此版本包含下列效能改善:

  • 因為不再需要方案重新載入,所以對於大型方案,C#、VB 和 C++ 專案的分支切換較為快速。
  • 在大型方案中卸載並重新載入一小部分 C# 和 VB 專案的時間已從數分鐘減少為數秒。
  • 我們已新增選項來停用重新開啟在前一個工作階段中開啟的文件,因為重新開啟特定類型的檔案或設計工具可能會延遲方案載入。
    • 在 [工具] > [選項] > [專案] > [方案] > [一般] 中,切換此選項。

測試效能

我們已大幅改善在具有多個測試專案之大型方案中執行一些測試時的效能。 在我們的實驗室中,具有超過 10,000 個 MSTest 的方案,執行單一測試時的速度最多可以快 82%!

Visual Basic 效能改善

Visual Basic 現在提供使用 CInt(Fix(number)) 模式將非整數類型轉換成整數時的大幅效能改善。

效能分析

此版本包含下列效能分析加強:

  • 我們已新增從暫停狀態啟動分析的功能:

    • 效能分析工具中的 CPU 使用量工具 (ALT-F2) 現在可從暫停狀態啟動 (圖 2)。 這在等候值得 CPU 使用量調查的案例時,可能很實用。 如果啟動時已停用 CPU 使用量收集,除非具體啟用,否則效能分析工具不會收集任何 CPU 使用量範例堆疊資料。 這會導致收集和分析更少的產生資料量,因此讓效能調查更具效率。

    • 若要啟動已停用 CPU 使用量範例收集的工作階段,請按一下效能分析工具啟動頁面上 [CPU 使用量] 旁的齒輪圖示。 在 [CPU 使用量] 屬性頁面上,取消核取 [啟用 CPU 分析 (取樣)],然後按一下 [確定] 儲存設定。

      CPU Usage Tool settings page
      (圖 2) CPU 使用量工具設定
    • 在您啟動目標應用程式 (按一下效能分析工具啟動頁面上的 [啟動]) 之後,將會看到 CPU 使用率圖形 (圖 3),可讓您控制 CPU 分析。 若要啟用 CPU 使用量範例堆疊資料收集,請選取位於檢視中間的 [啟用 CPU 分析],或按一下 CPU 使用率圖形正下方的 [記錄 CPU 設定檔]。 您可以按一下 [記錄 CPU 設定檔],啟用/停用所需次數的範例資料收集。 CPU 使用率圖形色彩變更,指出是否在該時間點啟用/停用範例收集。

      CPU Usage Tool monitoring view
      (圖 3) CPU 使用量的使用率圖形
  • 我們已新增 .NET 物件配置追蹤工具:

    • .NET 物件配置追蹤工具加入可從效能分析工具取得的工具系列。 針對效能分析工具工作階段叫用此工具,會起始收集在目標應用程式中發生之每個 .NET 物件配置的堆疊追蹤。 會分析此堆疊資料以及物件類型和大小資訊,以顯示您應用程式的記憶體活動詳細資料。 您可以快速決定程式碼中的配置模式,並找出異常狀況。 此外,針對記憶體回收 (GC) 事件,您可以輕鬆地判斷收集和保留的物件,並快速識別可支配應用程式記憶體使用量的物件類型。
    • 這特別適用於 API 寫入器,以協助最小化配置。 許多應用程式會過度執行診斷資料收集中所含的緩衝區限制,但可能會極佳地處理運用 API 金鑰案例的小型測試應用程式。 當您的測試應用程式正在執行時,效能分析工具會顯示「即時物件 (計數)」折線圖和「物件差異 (變更 %)」橫條圖。
    • 若要使用 .NET 物件配置追蹤工具,請顯示效能分析工具啟動頁面 (圖 4),選取要分析的目標 (預設目標為方案中的啟始專案),核取 [可用的工具] 下的 [.NET 物件配置追蹤],然後按一下 [啟動]
    Performance Profiler launch page
    (圖 4) [效能分析工具] 啟動頁面

效能分析 (CPU 使用量)

此版本包含效能分析工具之 CPU 使用量工具的下列改善 (可透過 ALT-F2 取得):

  • [呼叫樹狀結構] 檢視現在預設會依邏輯呼叫堆疊來顯示非同步執行。 您可以取消選取 [CPU 使用方式] 主要檢視之 [篩選] 下拉式清單中的 [拼接非同步程式碼] 選項,來關閉此行為。
  • 我們已新增 [模組/函式] 檢視,其依模組 (dll) 以及依模組內的函式顯示效能資訊。 其中一個可以從下列位置顯示 [模組/函式] 檢視:從 [CPU 使用量] 主要檢視中選取函式時可用的操作功能表,或 [呼叫樹狀結構] 或 [呼叫者/被呼叫者] 檢視中的 [檢視] 下拉式清單。
  • 已將執行個體表示新增至 CPU 使用量工具主要檢視中的 CPU 使用量圖形。 按兩下任何 [CPU 使用量] 檢視中所列的函式,即可於函式正在執行時檢視執行個體 (例如,在堆疊上)。

生產力

此版本包含下列生產力加強:

  • 針對 C# 開發,您可以使用 [格式化文件] (Ctrl + K, DCtrl + E, D) 執行額外程式碼清除。 設定清除,方法是移至 [工具]>[選項]>[文字編輯器]>[C#]>[程式碼樣式]>[格式化]>[一般]
  • 我們已使用 Ctrl + .Alt + Enter 來新增其他重構和快速動作:
    • 「反轉 If」可讓您在 if-else 陳述式中反轉邏輯。 將游標置於 if 關鍵字來觸發這項重構功能。
    • 「從方法呼叫站台新增參數」可讓您將參數新增至方法,方法是將引數新增至方法呼叫站台,並觸發「快速動作與重構」
    • 「移除不必要的括弧」會移除編譯不需要之二元運算子的括弧。 您可以透過 [工具]> [選項]> [文字編輯器]> [C#]> [程式碼樣式]> [一般] 或 .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:
      • dotnet_style_prefer_conditional_expression_over_assignment
      • dotnet_style_prefer_conditional_expression_over_return
  • 我們已將命令和改善新增至 [移至全部] 視窗:
    • [Go to Enclosing Block] \(移至封閉區塊\) (Ctrl + Alt + UpArrow) 可讓您快速往上巡覽至封閉程式碼區塊的開頭。
    • [前往上一個/下一個問題] (Alt + PgUp/PgDn) 可讓您跳到下一個/上一個問題 (錯誤、波浪線、燈泡)。
    • [Go to Member] \(移至成員\) (Ctrl + T, M) 的範圍現在預設為檔案。 將 [範圍] 切換為 [目前文件],即可將預設值變更回方案 (Ctrl + Alt + C)。
  • 您現在可以在具有多個插入號支援之檔案中的多個任意位置,建立插入點和選取範圍。 這可讓您同時新增、編輯或刪除多個位置中的文字。
    • 使用 Ctrl + Alt + 按一下滑鼠左鍵來插入插入號。
    • 使用 Shift + Alt + Ins,在符合目前選取範圍的下一個位置,新增選取範圍和插入號。
    • 如需完整動作清單,請參閱 [編輯] > [多個插入號]
  • 使用 Alt + ` 存取與內容相關的導覽功能表。
  • 保持兩個新鍵盤設定檔的一致按鍵繫結關係:Visual Studio Code 和 ReSharper (Visual Studio)。 您可以在 [工具] > [選項] > [環境] > [鍵盤] 和頂端下拉式功能表下找到這些結構描述。

偵錯

此版本包含下列偵錯加強:

  • 當您安裝數個 Visual Studio 2017 執行個體時,現在可以選取要在偵錯時部署您延伸模組的執行個體 (圖 5)。 例如,您可以透過此方法在 Visual Studio 版本通道中進行開發,同時在預覽通道中進行偵錯。

    Select your debug instance
    (圖 5) 選取偵錯執行個體
  • 您現在可以直接從 [發行摘要] 頁面連接快照偵錯工具 (圖 6)

    Attach Snapshot Debugger from Publish Summary page
    (圖 6) 從 [發行摘要] 連接快照偵錯工具
  • 我們現在支援透過 [工具] 視窗檢視受控工作,同時針對具有堆積的小型傾印進行偵錯。

通用 Windows 平台開發人員工具

如果專案的目標設為目標平台版本為 Windows 10 Fall Creators Update (組建 16299) 或更新版本的通用 Windows 平台,則我們已對這類專案的 XAML 設計工具進行許多重要改善。 這些改善功能包括︰

  • 您現在可以在屬性偵測器中編輯集合。
  • 設計工具現在允許編輯範本和樣式,包括其他文件中定義這些實體的定義時。
  • IconElement 類型屬性 (例如 AppBarButton 中的 Icon) 現在於屬性偵測器中有自訂編輯器,可更輕鬆地設定這些屬性。
  • 設計工具、編輯器和 [編輯後繼續] 現在應該全部都可以正確地與 x:DefaultBindMode 搭配運作。
  • Blend 中的 Visual State Manager 體驗現在支援 AdaptiveTrigger。

適用於 Visual Studio 的 F# 4.5 和 F# 工具

我們已在此版本中引進 F# 語言版本 4.5。 這也對應於新 4.5.x 系列的 FSharp.Core (F# 核心程式庫)。 您可以閱讀 F# RFC 存放庫中所有這些變更的規格。 在此版本中,也會對適用於 Visual Studio 的 F# 工具進行許多改善。

F# 4.5

以下是 F# 語言版本 4.5 的一些重點:

Span<'T> 支援

我們已實作 Span<'T> 和相關功能;因此,利用 F#,即可使用 SpanMemoryref 這類建構來有效地使用和生產 API。 這個項目的功能包含:

  • 新的 voidptr 類型。
  • FSharp.Core 中的新 NativePtr.ofVoidPtrNativePtr.toVoidPtr 函式。
  • 分別是新類型 inref<'T>outref<'T> (即唯讀 byref 和唯寫 byref)。 這對應至 C# 中的 in refout ref
  • 可以產生 ByRefLike 結構 (例如 SpanReadOnlySpan)。
  • 可以產生 IsReadOnly 結構。
  • 從方法隱含取值 byref-return 和 inref-return。
  • 可以在 byref/inref/outref 上產生擴充成員。

此功能集修正 F# 4.1 中 byref-return 初始設計的 Bug,其中傳回 byref 的函式、方法和屬性未隱含地對傳回值取值 (Dereference)。 我們進行這項變更,以帶來 C# 如何處理 ref-return 的內嵌功能。 類型註釋指出現在使用 ref-return 的隱含取值 (Dereference) 時,會使用錯誤訊息。

此外,此功能集也會修正 F# 編譯器中可以執行「惡意結構取代」的 Bug;亦即,對 F# 結構呼叫方法可以將所呼叫的實際結構取代為不同的結構。 結構上的 this 參數現在視為 inref<MyStruct>,並具有錯誤,建議您在想要修改結構時新增可變動欄位。

您可以深入了解此功能集之 RFC 中的 spanref 這類建構。

計算運算式中的 Match!

F# 4.5 引進 match!,這個新的關鍵字用於計算運算式內,由 John Wostenberg 完全參與。 此語法捷徑相當於結果上的 let! 後面接著 match。 您可以深入了解 match! 的 RFC

在序列、清單和陣列運算式中放寬使用 yield 向上轉型的需要

F# 4.5 現在會放寬需要有使用 yield 的向上轉型才能將子類型轉換成超級類型的一些情況。 從 F# 3.1 開始,「未」使用 yield 時,這些運算式已不需要此限制,因此這會讓各事項與現有行為更為一致。 您可以深入了解此功能的 RFC

允許清單和陣列括弧上的縮排

F# 4.5 現在需要放寬清單和陣列括弧的縮排規則,以在其各自的行時往前縮排一個範圍。 這個先前的需求一直都相當令人困擾,特別是 F# 初學者。 此外,F# 序列運算式則不需要。 現在,這可讓陣列和清單運算式具有與序列運算式相同的一致狀態。 您可以深入了解此功能的 RFC

發出為公用的列舉案例

F# 4.5 現在於所有情況下都會將列舉案例發出為公用,以與 C# 如何發出列舉案例一致。 這可讓分析工具更容易透過 F# 程式碼分析日誌,其中會發出標籤名稱以外的值。 您可以深入了解此功能的 RFC

F# 編譯器改善

F# 編譯器改善和先前提及的語言功能都在 F# 4.5 中。 包括:

  • 我們已透過在 F# 編譯器中最多移除所有配置的 2.2% (在各種情節下),來改善編譯器效能工作。
  • 我們已修正搭配使用 yield! 與結構可列舉值時導致 AccessViolatioNException 的 Bug。
  • 現在可以再次繼承自 FSharpFunc
  • 預設會停用 .NET Core 之 F# 偵錯組建的 Tail 呼叫。 已啟用它們的發行功能,因此符合桌面 F# 編譯器。
  • 已修正 F# 參考正規化,可讓您控制寫入至輸出檔案的可轉移組件參考。 這可讓您對 .NET Core 執行對等的組件重新導向。
  • 我們已修正 Bug,其中忽略內嵌函式上嘗試使用動態引動過程時所使用的錯誤訊息。 現在會傳播錯誤訊息。
  • F# 現在會遵守您可在專案檔中設定的 WarningsNotAsErrors 旗標。
  • Isaac Abraham 已更新模式比對之分支未傳回相同錯誤訊息類型條件,使其更容易使用。
  • Steffen Forkmann 已修正編譯缺少多載方法實作之介面實作時發生的內部錯誤 Bug。
  • Gauthier Segay 已移除編譯器的 Lexing 階段中的一些不必要陣列複製。
  • F# 列舉上的不完整模式比對,現在會產生可提供未涵蓋之大小寫範例的詳細警告,由 John Wostenberg 所參與。
  • 現在會遵守 `#nowarn "2003",由 Matthias Diitrich 所參與。
  • Steffen Forkmann 已修正在 F# 多載解析中使用 C# 擴充方法可能會失敗的 Bug。
  • Steffen Forkmann 已修正內部 QueueList 資料結構 Bug。
  • Steffen ForkmannEugene Auduchinokncave 參與各種較小的最佳化和程式碼清除工作。

F# 核心程式庫 4.5.x

現在提供 F# 核心程式庫的下列新增項目:

  • 已完成大量工作來改善 async { } 計算運算式的堆疊追蹤。 您現在應該可以看到堆疊追蹤中的使用者程式碼和使用者行號。 您可以深入了解此功能的 RFC
  • System.FuncSystem.Action 類型所多載的 FuncConvert.FromFuncFuncConvert.FromAction API,協助與 C# 的交互操作。 您可以深入了解此功能的 RFC
  • ValueOption 是可用的新類型,這是最後目標為現用模式具有較佳效能之一組未來功能的第一個項目。 您可以深入了解此功能的 RFC
  • TryGetValue 現在是 F# 對應類型的新成員。 您可以深入了解此功能的 RFC
  • 我們已修正第一次呼叫 MailboxProcessor.TryReceive 時的高 CPU 使用量。
  • bool 的比較現在會使用快速泛形比較,由 Vasily Kirichenko 所參與。
  • Array.allPairs 的摘要文字已更新為正確,由 Patrick McDonald 所參與

F# 工具改進

此版本包含 F# 工具中的大幅改善 (例如效能提升) 以及一些新的編輯器功能。 一如往常,包含 F# 開放原始碼社群的大量貢獻。 重點如下:

  • 我們已改善所有形式之 .NET SDK 樣式專案的 IntelliSense 效能 (包含使用多目標的專案)。
  • Vasily KirichenkoSteffen ForkmannGauthier Segay 參與分析及改善極大型檔案之 IntelliSense 效能的社群導向工作。 極大型檔案 (10k+ 行程式碼) 中的 IntelliSense 現在的速度大約會快兩倍。
  • 過期 FSharp.Core 的警告 (所安裝的套件除外) 不再存在於 .NET SDK 樣式專案中。
  • 在 IntelliSense 的 . 後面顯示成員之 XML 文件的描述工具提示,不再於 10 秒後逾時。
  • 已修正您無法在物件建構函式引數中設定中斷點的 Bug。
  • 已修正已重新命名符號在為泛型參數時重複的 Bug。
  • 適用於 .NET Framework 的範本 (傳統 F# 範本) 現在使用 NuGet 套件中的 FSharp.Core,以與 .NET SDK F# 範本一致。
  • ()[]{}[||][<>] 成對大括弧現在提供自動、交易式大括弧完成。 我們與 Gibran Rosa 共同作業來執行這項工作。
  • 您現在可以使用 Ctrl + 按一下或 F# 符號來移至定義。 在 [工具] > [選項] 視窗中,也會遵守此手勢的設定。
  • IntelliSense 效能 UI 已修改成允許設定各種 IDE 功能的過時類型檢查資訊。 每個選項的說明現在都會出現在設定的工具提示中。
  • 大括弧比對醒目提示現在會正確地醒目提示大括弧,而這是與 Vasily Kirichenko 共同作業一起完成。
  • [移至定義] 現在會在遞迴定義類型時正確地巡覽,由 Vasily Kirichenko 所參與。
  • Vasily Kirichenko 已修正檔案頂端空白時無法開啟自動匯入之命名空間的 Bug。
  • Vasily Kirichenko 已修正所含點之顏色錯誤的 printf 規範的 Bug。
  • Vasily Kirichenko 已修正將遞迴模組內所有 Open 都視為未使用的 Bug。
  • Vasily Kirichenko 已大幅改善「未使用的 Open」分析器的效能。
  • 自動完成屬性現在只會建議實際為屬性的選項,由 Vasily Kirichenko 所參與。
  • 現在會在建構函式呼叫站台產生類型提供者靜態參數的簽章說明工具提示,由 Vasily Kirichenko 參與。
  • Vasily Kirichenko 已修正用作測量單位的實值類型顏色編寫為參考類型的 Bug。
  • Vasily Kirichenko 已修正有些檔案的語意顏色標示可能會在捲動時消失的 Bug。
  • 現在有實驗性 CodeLens 實作,由 Victor Peter Rouven Müller 所參與。 您可以在 [選項] > [文字編輯器] > [F#] > [Code Lens] 中開啟此功能。
  • Sebastian Urban 已修正 F# 編譯器服務將不正確地省略 XML 文件中模組名稱的 Bug。
  • Eugene Auduchinok 已將搭配使用 DictionaryContainsKey 的程式碼以及後續 Item 呼叫變更成使用 TryGetValue
  • Jakob Majoka 也已參與使用不同工具提示 API 的程序。

基礎結構、封裝和開放原始碼改善

我們已對基礎結構、封裝與開放原始碼參與體驗進行下列加強:

  • 隨著 Visual Studio 散發的 F# 編譯器不再安裝為 F# 編譯器 SDK 位置中的 Singleton。 它現在與 Visual Studio 完全並存,這表示並存安裝 Visual Studio 最後會具有實際並存 F# 工具和語言體驗。
  • 現在會簽署 FSharp.Core NuGet 套件。
  • F# 工具和編譯器中已新增 ETW 記錄。
  • FSharp.Core 中的極大型 control.fs/control.fsi 檔案已分割為 async.fs/async.fsievent.fs/event.fsieventmodule.fs/eventmodule.fsimailbox.fs/mailbox.fsiobservable.fs/observable.fsi
  • 我們已新增 .NET SDK 樣式版本的專案效能壓力測試成品。
  • 我們已從程式碼基底移除 Newtonsoft.Json,而且您現在至少有一個為 OSS 參與者下載的套件。
  • 我們現在會使用 System.Collections.Immutable 和 System.Reflection.Metadata 的最新版本。

C++ 合規性和工具組改善

此版本包含下列 C++ 合規性和工具組改善:

  • 新的實驗性權杖前置處理器,符合使用 /experimental:preprocessor 參數所啟用的 C++11 標準 (包含 C99 前置處理器功能)。 這是使用 _MSVC_TRADITIONAL 巨集所控制,而此巨集在使用傳統前置處理器時定義為 1,在使用新的實驗性標準合規前置處理器時則定義為 0。
  • Visual Studio 開發人員命令提示字元支援啟用 Visual C++ Spectre 變異 1 降低執行階段 (-vcvars_spectre_libs = spectre)。 Visual C++ 小組部落格提供 Spectre 降低的詳細資訊
  • SSA 最佳化工具的兩項新增著重於新式 C++ 程式碼產生:備援存放區項目刪除以及備援分支摺疊。
  • 連結器中的最佳化記憶體對應 I/O 效能,以減少連結時間。

C++ 跨平台開發

在此版本中,我們已新增和改善 C++ 跨平台開發,並在其中新增下列項目:

  • 已新增 [新增]> [新增項目] 範本,遵循 [工具]> [選項] 中針對 ClangFormat 所指定的程式碼慣例來產生 .clang 格式檔案。 如果選取 Visual Studio 慣例,則產生的檔案會嘗試從 [工具] > [選項] 比對使用者的目前 Visual Studio 格式設定。
  • 已將寄送的 clang-format.exe 版本更新至 6.0.0。
  • 範本,可簡化新增 CppProperties.json 的組態。
  • 已新增範本來簡化新增組態至 CMakeSettings.json(圖 7)
Configuration templates for CMake
(圖 7) CMake 的設定範本

C++ 生產力

我們已進行下列 C++ 生產力加強和改善:

  • 巨集的 C++ 快速諮詢工具提示現在會顯示它們擴充的內容,而不只是其定義。 這特別適用於參考其他巨集的複雜巨集,因為它會釐清前置處理器所取代的巨集識別碼。
  • 已新增快速修正燈泡,轉換基本巨集為 constexpr 作為將程式碼現代化的新工具。
  • 適用於範本的 IntelliSense 提供範本引數的詳細資料,以在範本主體內完整利用 IntelliSense (圖 8)
Template IntelliSense
(圖 8) 範本 IntelliSense
  • 我們致力於重新整理程式碼分析體驗。 您現在可以在 [工具]> [選項]> [文字編輯器]> [C++]> [實驗]> [程式碼分析] 下啟用新的進行中功能。 當檔案已開啟或已儲存時,程式碼分析可以在背景中執行,而結果會顯示在錯誤清單中,並在編輯器中顯示為綠色波浪線 (圖 9)
In-editor code analysis
(圖 9) 編輯器中的程式碼分析

C++ 偵錯改善

我們已進行下列偵錯改善:

  • Just My Code 現在可讓您逐步執行系統或第三方 C++ 程式庫中的程式碼,以及摺疊呼叫堆疊視窗中的這些呼叫。 如果使用 /JMC 編譯您的程式碼,並在 .natjmc 檔案中指定非使用者程式庫路徑,則您可以控制任何 C++ 程式庫的這個行為。 如果系統程式庫呼叫使用者程式碼,則在您逐步執行時,偵錯工具會略過所有系統程式碼,並在第一行的使用者程式碼回撥處停止 (圖 10)
Just My Code
(圖 10) Just My Code
  • 資料中斷點現在可以設定在 [監看式]、[快速監看式]、[自動變數] 和 [區域變數] 視窗內,讓您只要短按幾下就可以在記憶體中所儲存的值變更時中斷。
  • 來源連結可讓您在編譯期間將可執行檔或程式庫原始程式碼的資訊內嵌至 PDB。
  • 偵錯時,主控台視窗現在預設會在程式終止執行時保持開啟狀態 (類似於執行程式,而不使用偵錯工具)。 在 [工具] > [選項] > [偵錯] > [一般] 中,可以將此行為切換回自動關閉主控台。

JavaScript 和 TypeScript 改善

TypeScript 3.0

Visual Studio 2017 15.8 版現在預設包含 TypeScript 3.0。 如需此版本的詳細資料,請參閱 TypeScript 3.0 版本公告

改善的 Vue.js 支援

已改善對 Vue.js 程式庫的支援,特別是對 .vue 檔的支援 (也稱為「單一檔案元件」)。 這會增強在 .vue 檔內編輯指令碼區段的功能,包括支援透過指令碼項目的 lang="ts" 屬性在 TypeScript 中撰寫的指令碼區塊 (注意:您必須透過使用 WebPack 或類似項目的建置流程,將 .vue 檔轉換成執行階段所需的 HTML 和 JS 檔。如需詳細資料,請參閱 Single File Components (單一檔案元件) 頁面)。

如果已安裝 Node.js 工作負載,[新增專案] 對話方塊的 [JavaScript / Node.js] 或 [TypeScript / Node.js] 下,現在會有 [基本的 Vue.js Web 應用程式] 範本。 以下示範如何編輯 .vue 檔之指令碼區段內的 TypeScript 程式碼 (圖 11)

Editing a .vue file
(圖 11) 編輯 .vue 檔

ESLint 改善

我們已在此版中重新實作 ESLint 支援。 ESLint 具有下列改善和增強功能:

  • Visual Studio 現在可以在您編輯時使用 lint 標記 JavaScript 檔案,而不只是使用 lint 標記已儲存的檔案。
  • 您可以報告專案中所有 JS 檔的結果,而不只是開啟檔案;如果您的專案中有不想要使用 lint 標記的部分,現在可以使用 .eslintignore 檔指定應該忽略的目錄和檔案。
  • ESLint 已更新為預設會使用 ESLint 4,但如果您的專案具有 ESLint 的本機安裝,則會改用該版本。

您可以在 Visual Studio 中全域停用 ESLint,方法是在 **[工具] > [選項] > [文字編輯器] > [Javascript/Typescript] > [進行 Lint 檢查]** 中,取消核取 [啟用 ESLint] 設定 (圖 12)

ESLint Options
(圖 12) ESLint 選項

Node.js 的開啟資料夾改善

安裝「Node.js 工作負載」時,在「開啟資料夾」案例中使用 JavaScript 和 TypeScript 有多項改善。 例如,管理 NPM 套件、建置 TypeScript、使用 Node.exe 啟動和偵錯、執行 NPM 指令碼,以及執行單元測試。

如需詳細資訊,請參閱不使用方案或專案在 Visual Studio 中開發 JavaScript 和 TypeScript 程式碼

編輯器效能改善

在舊版中,所有 JavaScript 和 TypeScript 語言服務作業都是由單一 Node.js 處理序提供服務。 如果傳送影響使用者鍵入的命令 (例如自動化新行之後的格式) 時,處理序中已有可能長時間的操作 (例如分析程式碼的錯誤),這可能會造成編輯器延遲。 為了減輕這個問題,現在可以針對影響編輯最大的操作使用個別處理序。 此處理序對系統資源的負擔明顯比現有的語言服務處理序更輕。 不過,如果您想要停用新的處理序,請在 [工具] > [選項] > [文字編輯器] > [JavaScript/TypeScript] > [語言服務] 中,核取 [Disable dedicated syntax process] \(停用專用語法處理序\) 方塊。

Visual Studio Web Tools

程式庫管理員是包含在 Visual Studio 2017 中的新功能。 它可協助您管理 Web 專案中的用戶端程式庫。

容器工具 (部分機器翻譯)

我們已新增 ASP.NET Core Web 專案的單一專案 Docker 容器體驗。 這可補充現有 Docker Compose 容器工具,並提供更簡單且更容易的方式直接從 Visual Studio 建立、偵錯和建置 Docker 容器。

建立專案時,您可以新增 Docker 支援 (圖 13)

Enable Docker Support
(圖 13) 啟用 Docker 支援

或者,您可以透過 [方案總管] 中專案的操作功能表來啟用現有專案的 Docker 支援 (圖 14)。 這樣做之後,Visual Studio 會在專案中建立單一 Dockerfile。 您可以選擇 Windows 或 Linux。

Add Docker Support
(圖 14) 新增 Docker 支援

Visual Studio 也會新增 Docker 的偵錯工具啟動設定檔 (圖 15),以對專案偵錯,同時在容器內執行。

Docker Launch Profile
(圖 15) Docker 啟動設定檔

如果您的方案具有多個 Docker 專案,則根據預設,當您選擇啟動方案時只會執行一個容器。 如果您想要同時執行多個容器,則可以使用滑鼠右鍵按一下 [方案總管] 中的方案,並依序選取 [設定啟始專案] 和 [多個啟始專案],然後針對您想要執行的所有專案將 [動作] 下拉式清單設定為 [啟動] 或 [啟動但不偵錯]

以您想要的方式執行容器化專案之後,在準備好推送至 Azure Container Registry 或 DockerHub 時,可以使用滑鼠右鍵按一下專案,然後選取 [Build Docker Image] \(建置 Docker 映像\) 以在本機建置映像。

您也可以透過新的 [Container Orchestrator Support] \(容器協調器支援\) 選項,將現有 Docker Compose 功能新增至 ASP.NET Core Web 專案 (圖 16)。 在 [方案總管] 中以滑鼠右鍵按一下 ASP.NET Core Web 專案,選取 [新增] > [Container Orchestrator Support] \(容器協調器支援\),然後從下拉式功能表中選取 [Docker Compose]

Add Container Orchestrator Support
(圖 16) 新增協調器支援

發行改善

此版本包含下列發行改善:

  • 將 Docker 容器發行至容器登錄時,您現在可以自訂映像的標籤。 您可以手動新增標籤 (預設為 "latest"),或使用自動產生的標籤來確定每個標籤都是唯一的。
  • 建立新的 Azure App Service 時,您也可以設定 Application Insights 自動收集遙測。 如果您選擇的區域也具有 Application Insights,則預設為已啟用。 如果您選擇的區域尚未包含 Application Insights,則可以手動從下拉式清單中為 Application Insights 資源指定不同的區域。
  • 發行 Azure Functions 專案時,您可以選擇使用新的 Run-From-Zip 功能發行。

Visual Studio Tools for Xamarin

此版本包含下列 Xamarin 更新:

  • 我們已新增 Xcode 9.4 支援。
  • 現在當您建立新的 Xamarin.Forms 專案時,預設程式碼共用選項會是 .NET Standard。 共用專案選項仍然可用。
  • 我們新增了 Android 累加建置功能改進。 Xamarin.Android 使用中繼輸出目錄中產生的檔案來達成比完整建置更快的累加建置。 如果您先前已變更專案的目標 Framework,這會使檔案無效,下次執行就會是完整建置。 在這個版本中,我們現在將檔案保留在個別 Framework 的資料夾中,這樣您就可以在不同的目標 Framework 之間切換,而且仍可獲得累加建置的好處。 清除專案可讓您回收保留的檔案所使用的磁碟空間。
  • 我們在 Visual Studio 2017 中新增了 Xamarin.Mac 繫結專案的最低支援。 這讓 Visual Studio 能夠依支援來載入及辨識 Xamarin.Mac 繫結專案。 您也可以建置 Xamarin.Mac 繫結專案。 但建置流程會在本機執行,而不使用原生 Mac 工具鏈,因此產生的 IL 組件無法用於在應用程式中執行或偵錯。

Hyper-V Android 模擬器支援

這個版本新增在 Windows 10 2018 年 4 月更新執行時,與 Hyper-V 相容的 Google Android 模擬器支援 (圖 17)。 這讓您能夠與其他以 Hyper-V 為基礎的技術 (包括 Hyper-V 虛擬機器、Docker 工具、HoloLens 模擬器等) 並存使用 Google 的 Android 模擬器。 使用 Hyper-V 的行動應用程式開發人員,現在能夠使用快速的 Android 模擬器,其一律支援最新的 Android API、使用現成可用的 Google Play Services,並支援 Android 模擬器的所有功能,包括相機、地理位置及 Quick Boot。

Screenshot of both the Google Android emulator and HoloLens emulator running at the same time.
(圖 17) Google Android 模擬器與 HoloLens 模擬器

Xamarin.Android Designer

我們為 Xamarin.Android 進行了設計工具體驗的大幅改進。 重點包括:

  • 推出分割檢視編輯器,可讓您同時建立、編輯及預覽版面配置 (圖 18)
Screenshot of the Xamarin.Android split-view editor.
(圖 18) Xamarin.Android 分割檢視編輯器
  • 改進 IntelliSense 體驗及自訂控制項的可靠性。
  • 系統提供的值具備範例資料支援。

Xamarin.Forms Previewer

在使用 Xamarin.Forms 3.1.0.583944 版或更新版本時,Xamarin.Forms Previewer 現在會有工具箱支援。 Xamarin.Forms 控制項會顯示在工具箱中,讓工具組的新手使用者更容易找到。 您也可以在 XAML 程式碼編輯器拖放控制項,以將控制項新增到頁面。 Xamarin.Forms Previewer 現在是 XAML 編輯器的一部分。 您可以使用編輯器窗格邊緣的展開圖示來開啟及關閉它。

Python

這個版本為 Python 開發人員新增了下列功能改進:

  • Python IntelliSense 現在使用 typeshed 定義,為無法依據靜態分析來推斷自動完成的程式庫提供更豐富的結果。
  • 這個在 15.7 預覽版中初次宣佈的實驗性偵錯工具,現在成了用於 Python 的預設偵錯引擎,為 Python 程式碼提供更快也更可靠的偵錯。
  • 我們新增了 Python 3.7 的支援,包括修正,以提供偵錯附加、分析及混合模式 (跨語言) 的偵錯功能。
  • 如需上述功能的詳細資訊,請務必查看 Visual Studio 2017 15.8 版中的 Python 部落格文章。

移轉本機 Azure 函式設定

可從發行摘要頁面取得的 [受控應用程式設定] 對話方塊,現在會顯示來自 local.settings.json 檔案的值,並可讓您將值移轉到裝載於 Azure 中的遠端 Azure Function 應用程式。

已連線的服務

您現在可以直接從 Visual Studio 2017,為具有 Azure Function 專案的解決方案設定 Azure 函式的持續傳遞。

測試清單編輯器功能改進

測試清單編輯器現在會在選取了階層檢視的其中一個群組時,顯示提供更多資訊的測試狀態摘要窗格 (測試清單編輯器的下層窗格)。 窗格現在會顯示該群組中,失敗、通過或未執行的測試數。

新的擴充性功能

語言伺服器通訊協定

Visual Studio 現在具備語言伺服器通訊協定的原生支援。 延伸模組作者可以建立延伸模組,使其與現有的語言伺服器通訊,以將額外語言支援新增到 Visual Studio。 延伸模組使用者可以安裝這些延伸模組,以開始在 Visual Studio 內使用最愛的語言,像是 Rust

AsyncPackage 範本

延伸模組作者現在可以使用項目範本來建立 AsyncPackages,讓延伸模組發揮最高效能。 閱讀更多 AsyncPackages 的相關資訊。

延伸模組套件

使用延伸模組套件,輕鬆地共用您最愛的延伸模組組合,或設定包含所有延伸模組的新 Visual Studio 安裝。 延伸模組套件可讓您建立一份延伸模組清單、將其封裝在一個延伸模組中,還可用來快速地大量安裝這些延伸模組。

命令列延伸模組發佈

使用命令列,將您的延伸模組發佈到 Visual Studio Marketplace。

.NET Core SDK 2.1.400

Visual Studio 2017 15.8 版包含 .NET Core SDK 2.1.400。 新的 SDK 功能包括:

  • 新增 NUnit 範本
  • 新增已簽署的全域工具支援
  • 改進說明文字,使其更為清楚

解決了 32 個 .NET Core CLI 的問題。
解決了 20 個 .NET Core SDK 的問題。

原始程式碼控制

針對 .NET Core 專案,現在不必重新載入方案,透過檔案總管直接新增至專案的檔案就會在 [方案總管] 中顯示正確的 Git 和 TFS 追蹤圖示。

.NET 測試配接器延伸模組

.NET 測試配接器有下列重大變更和淘汰項目:

  • 重大變更:所有測試專案的 csproj 中都必須包含 .NET 測試配接器 NuGet 參考。 如果未包含在其中,若測試配接器延伸模組的探索在建置之後開始,或使用者嘗試執行選取的測試,專案上就會顯示這個測試輸出:
    • 測試專案 {<測試專案的完整路徑>} 未參考任何 .NET NuGet 配接器。 這個專案的測試探索或執行會無法執行。 建議您在解決方案中的各個測試專案參考 NuGet 測試配接器。
  • .NET 測試架構已在 NuGet 套件中發行其配接器,並即將從 Visual Studio 延伸模組中移出。 透過延伸模組提供的 .NET 測試配接器已淘汰,但仍提供支援。 這表示在 [工具] > [選項] > [測試] 中會有兩個新選項。
    • 第一個選項可讓 Visual Studio 只使用在測試組件資料夾中找到的測試配接器 (由測試配接器 NuGet 參考填入),或 runsettings 檔案中指定的配接器。
    • 第二個選項可讓 Visual Studio「退回」原先行為,為不具測試配接器 NuGet 參考的專案搜尋測試配接器延伸模組。 根據預設,兩種選項都會選取,這樣就不會有任何預設行為在這個版本中變更。
  • 注意:這項變更不會影響非 .NET 測試配接器。

ASP.NET .NET Framework 祕密的支援

針對以 .NET Framework 4.7.1 或更高版本為目標的 ASP.NET .NET Framework 專案,您現在可以在 usersecrets.xml 中開啟及儲存原始程式碼中不想要的祕密,方法是以滑鼠右鍵按一下專案,然後選取 [受控使用者祕密]。

改善 ASP.NET .NET Framework 效能

如果所參考的 .NET 編譯器套件在 ASP.NET .NET Framework 專案中已過時,Visual Studio 會在您開啟專案時提示您升級套件,以改善建置效能

.NET Framework 4.7.2

Visual Studio 2017 版本 15.8 現在會提供 .NET Framework 4.7.2 開發工具給所有支援的平台,包括 4.7.2 執行階段。 .NET Framework 4.7.2 提供多項新功能和改善,並大幅修正可靠性、穩定性、安全性和效能。

您可以在這些文章中找到 .NET Framework 4.7.2 的詳細資料:

延遲套件載入

Visual Studio 現在會延遲載入已設為自動載入的非同步套件,直到 Visual Studio IDE 完全啟動且解決方案已載入為止。 這項變更不會影響同步自動載入的應用程式套件。 使用者可在工作狀態中心的狀態列左下角監控進度。 建立非同步套件的延伸模組作者應測試自己的延伸模組。 如需詳細資訊,請參閱 Improving the responsiveness of critical scenarios by updating auto load behavior for extensions (更新延伸模組的自動載入行為以提升重要情節的回應能力)。


---

Release Notes IconVisual Studio 2017 15.8 版資訊安全諮詢注意事項

Visual Studio 2017 15.8.7 版服務版本-- 發行於 2018 年 10 月 10 日

CVE-2018-8292 .NET Core 資訊洩漏弱點

當遇到 HTTP 重新導向的輸出要求不小心公開了 HTTP 驗證資訊時,安全性功能會略過存在於 .NET Core 中的弱點。 成功惡意探索到這個弱點的攻擊者,可能會使用這項資訊來進一步損害 Web 應用程式。 此安全性更新會修正 .NET Core 應用程式處理 HTTP 重新導向的方式,藉以解決此弱點。

Visual Studio 2017 15.8.4 版服務發行版本-- 發行於 2018 年 9 月 11 日

CVE-2018-8409 .NET Core 阻斷服務弱點

阻斷服務弱點存在於 .NET Core 2.1 中的 System.IO.Pipelines 不適當地處理要求時。 成功惡意探索此弱點的攻擊者可能會導致使用 System.IO.Pipelines 的應用程式面臨阻斷服務攻擊。 不需要驗證即可從遠端惡意探索此弱點。 遠端未經驗證的攻擊者可以透過向應用程式提供特製要求,來惡意探索此弱點。

CVE-2018-8409 ASP.NET Core 阻斷服務弱點

阻斷服務弱點存在於不適當地處理 Web 要求的 ASP.NET Core 2.1。 成功惡意探索此弱點的攻擊者可能會導致 ASP.NET Core Web 應用程式面臨阻斷服務攻擊。 不需要驗證即可從遠端惡意探索此弱點。 遠端未經驗證的攻擊者可以透過向 ASP.NET Core 應用程式提供特製 Web 要求,來惡意探索此弱點。

Visual Studio 2017 15.8 版 -- 於 2018 年 8 月 14 日發行

CVE-2018-0952 診斷中樞標準收集器權限提高弱點

這是存在於 Visual Studio 服務中的一個權限提高弱點。它可能會導致非系統管理使用者在寫入檔案時具有系統權限。 利用此弱點的攻擊者只透過使用者層級存取,就能將檔案寫入為系統。 此安全性更新會透過模擬目前使用者驗證對檔案位置的存取,來解決此問題。

Visual Studio 2017 15.8 版 Preview 4 -- 於 2018 年 7 月 10 日發行

CVE-2018-8172 Visual Studio 遠端程式碼執行弱點

這是一種遠端程式碼執行弱點。它可以開啟特地設計的專案或資源檔,以惡意探索使用者電腦。 此安全性更新會修正 Visual Studio 檢查檔案來源標記的方式,藉以解決此弱點。

CVE-2018-8260 .NET Framework 遠端程式碼執行弱點

這是存在於 .NET 軟體中的一個遠端程式碼執行弱點。它允許攻擊者在目前使用者的內容中執行任意程式碼,從而導致惡意探索使用者的電腦。 此安全性更新會修正 .NET 檢查檔案來源標記的方式,藉以解決此弱點。

CVE-2018-8232 .NET Microsoft 巨集組譯工具篡改弱點

Microsoft 巨集組譯工具未能正確驗證程式碼的相關篡改漏洞。 此安全性更新會確保 Microsoft 巨集組譯工具能正確驗證程式碼邏輯,藉以解決此弱點。

CVE-2018-8171 ASP.NET Core 安全性功能略過弱點

當未驗證不正確的登入嘗試次數而導致攻擊者得以無限嘗試驗證時,便是存在 ASP.NET Core 安全性功能略過弱點。 此更新會驗證不正確的登入嘗試次數,藉以解決此弱點。

Visual Studio 2017 15.8 版 Preview 3 -- 於 2018 年 6 月 26 日發行

CVE-2018-11235 Git 安全性弱點的 Microsoft 資訊安全諮詢

我們已修正 Git 社群所揭露 \(英文\) 的 Git 安全性弱點。 此弱點可能會在使用者複製惡意存放庫時,導致執行任意程式碼。

Visual Studio 2017 15.8 版 Preview 1 -- 於 2018 年 5 月 8 日發行

CVE-2018-0765 .NET Core 拒絕服務弱點的 Microsoft 資訊安全諮詢

  • Microsoft 發佈此資訊安全諮詢的目的,是提供 .NET Core 與 .NET 原生版本 2.0 中有關弱點的資訊。 此諮詢也提供了指導,讓開發人員了解如何才能正確地更新應用程式來移除此弱點。
  • Microsoft 注意到 .NET Framework 和 .NET Core 未正當處理 XML 文件時,會產生服務阻斷弱點。 成功惡意探索此弱點的攻擊者可能會使 .NET Framework、.NET Core 或 .NET 原生應用程式發生服務阻斷。
  • 本更新會修正 .NET Framework、.NET Core 和 .NET 原生應用程式處理 XML 文件的方式,進而解決該弱點。
  • 若您的應用程式為 ASP.NET Core 應用程式,則我們也建議開發人員更新至 ASP.NET Core 2.0.8。

Release Notes IconVisual Studio 2017 15.8.1 版

於 2018 年 8 月 17 日發行

15.8.1 中修正的常見問題

這些是 15.8.1 中已解決的問題:

  • 修正了 Visual Studio 在瀏覽器視窗於偵錯 Web 期間關閉時意外關閉的問題。

Release Notes IconVisual Studio 2017 15.8.2 版

於 2018 年 8 月 28 日發行

15.8.2 中修正的常見問題

這些是 15.8.2 中已解決的客戶回報問題:


Release Notes IconVisual Studio 2017 15.8.3 版

發行於 2018 年 9 月 6 日

15.8.3 中修正的常見問題

這些是 15.8.3 中已解決的客戶回報問題:


Release Notes IconVisual Studio 2017 15.8.4 版

發行於 2018 年 9 月 11 日

15.8.4 中修正的常見問題

這些是 15.8.4 中已解決的客戶回報問題:

資訊安全諮詢注意事項


Release Notes IconVisual Studio 2017 15.8.5 版

於 2018 年 9 月 20 日發行

15.8.5 新功能的摘要

  • Visual Studio Tools for Xamarin 現在支援 Xcode 10。

15.8.5 中修正的常見問題

這些是 15.8.5 中已解決的客戶回報問題:

15.8.5 新功能的詳細資料

Visual Studio Tools for Xamarin

Visual Studio Tools for Xamarin 現在支援 Xcode 10,可讓您建置 iOS 12、tvOS 12 與 watchOS 5 應用程式並進行偵錯。 請參閱如何針對 iOS 12 做準備我們的 iOS 12 簡介,以取得可用新功能的詳細資料。


Release Notes IconVisual Studio 2017 15.8.6 版

發行於 2018 年 10 月 2 日

15.8.6 新功能的摘要

15.8.6 中已修正的常見問題

這些是 15.8.6 中已解決的客戶回報問題:

15.8.6 中新功能的詳細資料

適用於通用 Windows 平台開發人員的最新 Windows 10 SDK

現在提供最新的 Windows 10 SDK (組建 17763) 作為通用 Windows 平台開發工作負載的選擇性元件。 您也可以選取 [Windows 10 SDK (10.0.17763.0)] 核取方塊,將此 SDK 新增至工作負載。


Release Notes IconVisual Studio 2017 15.8.7 版

發行於 2018 年 10 月 10 日

15.8.7 中的新功能

Azure DevOps

Visual Studio Team Services 現在成了 Azure DevOps! 您會在 Team Explorer 和整個 Visual Studio 的參考中看到這個新商標。

資訊安全諮詢注意事項

CVE-2018-8292 .NET Core 資訊洩漏弱點


Release Notes IconVisual Studio 2017 15.8.8 版本

發行於 2018 年 10 月 24 日

15.8.8 中已修正的常見問題

這些是 15.8.8 中已解決的客戶回報問題:


Release Notes IconVisual Studio 2017 15.8.9 版

發行於 2018 年 11 月 2 日

15.8.9 中修正的常見問題

這些是 15.8.9 中已解決的客戶回報問題:


已知問題

查看 Visual Studio 2017 15.8 版中所有現有的已知問題和可用的因應措施。

Visual Studio 2017 Known Issues


意見反應與建議

我們很希望聽聽您的意見! 若有任何問題,請透過安裝程式或 Visual Studio IDE 本身右上角的回報問題選項來通知我們。 Report a Problem Icon 圖示位在右上角。 您可以在 Visual Studio 開發人員社群中提出產品建議或追蹤您的問題,也可以提出問題、尋找解答及提議新功能。 您也可以透過我們的即時聊天支援取得免費的安裝協助。


部落格

善用「開發人員工具部落格」網站中的見解與建議,讓您能夠隨時取得所有新版本的最新資訊,以及涵蓋各類功能的深入探討文章。

Developer Tools Blogs


Visual Studio 2017 版本資訊歷程記錄

如需舊版 Visual Studio 2017 的詳細資訊,請參閱 Visual Studio 2017 版本資訊歷程記錄頁面。


頁首