Visual Studio 2015 Update 3

Last Update: 2017/9/1

發行日期︰2016 年 6 月 27 日

今天,我們很高興宣佈發行 Visual Studio 2015 Update 3。 Update 2 中回報的其中一項首要問題是有關高記憶體耗用量。 我們已在 Update 3 RC 中解決這個問題、連繫回報這個問題的客戶,並且收到關於修正的正面確認。 在 Update 3 中,您會看到許多此類的修正,旨在因應客戶對效能和穩定性的意見反應。 若這些版本資訊不是您所要查看的版本資訊,您已閱讀完最新版本的版本資訊。

使用 Visual Studio 中的意見反應選項,將您的意見反應傳送給我們。 您也可以在 Visual Studio 2015 UserVoice 網站上提交建議。

下載

您可以從 My.VisualStudio.com下載 Visual Studio 2015。 My.VisualStudio.com 需要免費的 Dev Essentials 訂用帳戶,或 Visual Studio 訂閱

如需其他資訊,請參閱如何安裝特定版本的 Visual Studio

新功能

其他變更

Apache Cordova 工具

Visual Studio 2015 Update 3 包含 Apache Cordova 工具 Update 10 (包含下列改進)。 如需此版本的詳細資訊,請參閱 Tools for Apache Cordova Update 9Update 10 版本資訊。 如需 Microsoft 工具的最新消息,請瀏覽我們在 GitHub 上的開發人員部落格

  • 我們已加入對 Cordova 6.1.1 (新專案的預設版本) 的支援。
  • 我們已淘汰 Cordova 4.x 中所使用的 Cordova 外掛程式登錄,這表示現在至少需要 Cordova 5.x 或更新版本,才能加入外掛程式。
  • 已更新核心外掛程式清單,現在包含適用於企業案例 (例如 Intune、Azure Engagement、安全性和 SQLite 本機儲存體) 的外掛程式。
  • 您現在可以依 npm 套件名稱或識別碼,從組態設計工具加入外掛程式。

plugin-byid

  • 您也可以從組態設計工具加入需要參數的外掛程式。

plugin-parameters

開發人員分析工具

我們已在開發人員分析工具 7.0.2 版加入下列改進︰

  • Application Insights Trends,這個工具會找出您應用程式遙測中的趨勢。
  • 新功能 CodeLens 中的例外狀況遙測。
  • 生產環境遙測資訊已加入診斷工具中的例外狀況。
  • 支援將 Application Insights 從 Visual Studio 加入 ASP.NET Core RC2 專案。
  • 適用於 ASP.NET 5 RC1 和 ASP.NET Core RC2 專案的診斷工具事件
  • 選取詳細資料篩選、時間範圍和事件時,自動重新整理 Application Insights 搜尋。
  • 從搜尋中的要求移至程式碼。
  • 改進 HockeyApp 登入體驗。

如需詳細資訊,請參閱 Microsoft Azure 文件中的技術版本資訊

偵錯和診斷

Update 3 已針對 OneCore 裝置 (包括 HoloLens 和 IOT) 上執行的應用程式加入診斷工具支援。

C++ [編輯後繼續] 改進:

  • 啟用 FASTLINK 時的效能和可靠性更高。
  • 成功地將程式碼變更套用至靜態程式庫,不再產生過時程式碼。
  • 重新編譯期間類型變更的誤判不會再出現 C4656 警告。
  • 支援跨多個編譯單位加入具有相同名稱的新類型。

XAML UI 偵錯改進:

  • 每當應用程式中的焦點變更,即時視覺化樹狀結構中的新 [Track Focus (追蹤焦點)] 功能,會使即時視覺化樹狀結構中的選取項目更新為目前的焦點項目。

Visual Studio IDE

訂閱和產品金鑰

我們已透過線上識別或產品金鑰將 IDE 解除鎖定,以解決使用訂閱的客戶對 Update 3 所提出的意見反應,方法如下︰

  • 您不再需要前往 https://my.visualstudio.com 即可啟用您的已指派 Visual Studio 雲端訂閱,而且可以在指派訂閱時立即開始使用 Visual Studio IDE。
  • 我們已改進套用產品金鑰時的錯誤處理方式。
  • 所有使用者帳戶和授權作業現在使用 HTTPS 來保護。
  • 我們改進了 [帳戶設定] 對話方塊中用於啟用訂閱及輸入產品金鑰的協助工具。
  • 新功能 不再需要每 ~8 天進行重新驗證,即可讓個人化帳戶保持作用以及同步處理漫遊設定。

適用於通用 Windows app 的工具

Visual Studio 2015 Update 3 針對適用於通用 Windows App 的工具隨附數個增強功能。 其中一項重要的改進可讓您在建立封裝以提交至 Windows 市集時,使用 AAD 儲存體帳戶的 Azure Active Directory 認證進行登入。 一旦專案已與 Windows 市集產生關聯,您就不再需要登入並建立封裝以提交至市集。

適用於通用 Windows App 的 .NET Native

.NET Native 1.4 是次要服務版本,可提升效能、解決數個客戶回報的 Bug,以及改善大型應用程式的版本組建編譯時間。 使用 .NET Native 1.4 的 XAML 應用程式和 Unity 遊戲會有更好的執行階段效能。 這些改進是藉由加快反射和原生 API 呼叫所達成。

架構工具

我們已解決客戶關於提升效能和可靠性的意見反應。

特定領域的圖形設計工具 (包括 EDMX 和 DBML)

在 Windows 10 上,如果您在顯示螢幕小鍵盤時開啟或嘗試編輯大型 EDMX 或 DBML 圖表,則 Visual Studio 不再無回應。

Code Map

  • 如果解決方案包含安裝程式專案 (.vdproj),則在您嘗試「產生解決方案的 Code Map」時,Visual Studio 不再無回應。
  • 如果您從程式碼編輯器執行 Code Map 命令,並在 Code Map 視窗一出現即予以關閉,則 Visual Studio 不再無回應。

圖層驗證

  • 如果建置中解決方案的模型專案包含分層圖,則使用 [驗證] 動作可能會導致建置完成後無法再使用 CPU 核心。
  • 您現在可以在分層圖的父模型專案參考 PCL 程式庫 (例如 ODP.Net) 時驗證分層圖。

適用於 Visual Studio 的 Node.js 工具

_新功能_適用於 Visual Studio 的 Node.js 工具 1.2 RC 現在可供下載。 我們希望此版本提供大幅改進的穩定性和效能,包含降低舊版本中所見的記憶體不足當機。

其他重點包含:

  • 更快速且更佳的 ES6 IntelliSense
  • 更可靠的偵錯
  • 改進的單元測試經驗 (包含磁帶支援)
  • 多個專案類型中的 .npm 命令

如需完整資訊和下載,請參閱 Node.js 工具 1.2 RC 版本頁面

Web Developer Tools

針對 ASP.NET Web 應用程式專案,取消核取 [啟用編輯後繼續] 核取方塊時,您每次停止偵錯時都不會再停止 IIS Express 處理序。

Visual C++

Update 3 已包含增強功能 (例如 C++ 編譯器的新檢查和警告訊息) 以及 C# 和 Visual Basic 程式碼的支援和效能改進。

C++ 編譯器

  • 我們現在會檢查已刪除之 trivial 複製/移動建構函式的存取權。 若未進行檢查,我們可能會不正確地呼叫預設的複製建構函式 (其中的實作可能語式錯誤),並可能導致在執行階段產生錯誤的程式碼。
  • Std::is_convertible 現在會在複製建構函式已刪除或為私用時,正確地偵測類別類型的自我指派。
  • 我們在完成取代使用屬性之 ATL 支援 (自 Visual Studio 2008 起) 的最後一個階段,新增了取代警告至編譯器。 在 Visual Studio 2015 Update 3 中,使用了使用屬性的 ATL 程式碼會產生預設開啟的層級 1 警告。 C4467
  • 使用 PCH 檔案時,編譯器中 -Yc 和 -Yu 編譯之間不相符的 -I Include 目錄,現在會產生新的警告。 C4599
  • 使用 PCH 檔案時,原始程式檔中 -Yc 和 -Yu 編譯之間不相符的 #include 目錄,現在會產生警告。 C4598

如需這些變更可能如何影響現有程式碼的詳細資訊,請參閱 MSDN 上的 Visual C++ 移植和升級指南

C++ 程式庫

  • 我們已恢復終結 Update 2 中回復之 trivial 物件範圍時的偵錯模式效能,例如在向量中
  • 我們已實作提案 P0185 Adding [nothrow-]swappable traits (P0185 新增 [nothrow-]swappable 特性) 之 C++17 工作文件中的 swappable 特性。 根據 C++17 功能,只有在使用 /std:c++latest 編譯時,才能檢視特性 (is_swappableis_swappable_withis_nothrow_swappableis_nothrow_swappable_with),以及啟用 std::swap 上的條件約束。
  • 我們已從 vcruntime140.dll、處理序啟動期間引發的靜態程式庫及 dllmain 中移除 ETW 事件呼叫。
  • 新功能 我們已移除 STL 容器所使用之一般機器中的符號名稱長度 (例如 std::vector),減少 C4503 警告的可能性。 例如,下列類型不再產生警告︰concurrency::concurrent_unordered_map<wstring、vector<pair<uint64_t、vector<uint8_t>>>>。

  • ATL/MFC/AMP/PPL:與兩階段查閱相關的許多一致性修正,如下所示:

    • _com_ptr_t現在有移動建構函式和移動指派運算子。
    • MFC︰修正 HMENU 值的處理方式,該方式偶爾會導致無法在 64 位元應用程式中正確顯示功能表。

    • ATL/MFC:不再發出下列警告:

    • 函式覆寫/隱藏︰C4263、C4264、C4266
    • 不相符的例外狀況規格:C4986
    • /analyze:C6386

    • ATL:AtlThrow 的所有變化現在會以 __declspec(noreturn) 適當地標記。 這可防止發出錯誤的 SAL 警告。

    • ATL︰修正/改進幾個 SAL 註釋。

    • /std:c++latest會啟用下列新功能︰P0025R1 "clamp()"、P0185R1 "is_swappable, is_nothrow_swappable" 以及 P0272R1 "Non-const basic_string::data()."。

    • /std:c++latest 也會控制下列舊功能的移除︰N4190「移除 auto_ptr、random_shuffle() 和舊內容」、P0004R1「移除取代的 Iostreams 別名」、LWG 2385「function::assign 配置器引數不具意義」和各種非標準功能 (std::tr1 命名空間、某些僅限 TR1 的機制和 std::identity 建構)。

    • 修正 x86 上 atomic<int64_t>/atomic<uint64_t> 中無訊息錯誤 codegen。

    • STL 現在除非絕對必要,否則會避免使用安全執行緒 Magic 靜態變數,因而改進 codegen。

    • Tuple 的完美轉送建構函式現在會避免取代複製建構函式,以修正某些情況下的編譯器錯誤。

  • 協同程式:

    • 取代下列項目:__yield_value & __await 關鍵字。 請改用 co_await / co_yield
    • 新增取代通知至:coroutine_handle 類別的 to_addressfrom_promise 成員。 使用 coroutine_handle::address() 取代 coroutine_handle::to_address()
    • 使用 coroutine_handle::from_promise(Promise &P) 取代 coroutine_handle::from_promise(Promise *P)
  • 我們已改進下列項目的效能:std::equalstd::lexicographical_compare,方法是更積極地分派給 memcmp 和 memchr,讓某些情況下的效能大幅提升。 例如︰64 位元平台上的 equal(char,char,char, char)。

    • 藉由減少迭代器偵錯機制中的簿記函式呼叫次數,大幅提升偵錯組建效能
    • string::push_back 的發行組建效能已進一步提升 40%(與 Update 2 相較下),因此更大幅提升偵錯組建效能 (此處的大幅效能提升是指 Update 2 隨附以外增加的效能)。
    • 所有標準演算法之間的偵錯組建效能,已藉由排除幾種類型的空白範本中繼程式設計支援呼叫 (例如 _Iter_cat) 獲得提升,而使用述詞的所有演算法之間的偵錯組建效能,則藉由減少述詞複本數獲得提升。
    • std::mismatch_ITERATOR_DEBUG_LEVEL1 和 2 下,盡可能在反覆項目之前,檢查第二個範圍的範圍。
  • 我們已對其餘演算法套用 _SCL_INSECURE_DEPRECATE 訊息的改良診斷 (在 Update 2 中,只有少數的演算法適用於新的取代機制)。 這也會改善偵錯標準演算法時的偵錯體驗,因為不再有任何 _ITERATOR_DEBUG_LEVEL 前置處理器互動會宣告多份標準演算法。 我們也已修正下列問題︰

    • 我們已修正由於非標準 _ITERATOR_DEBUG_ARRAY_OVERLOADS 和雙重範圍演算法之間的互動,而無法編譯某些函式 (例如 mismatch(iter, iter, T[]) 的問題。
  • 我們已修正 STL 中預設關閉警告 C4242 的違規問題。
  • 我們已修正 std::pop_heap 中可能的整數溢位錯誤。
  • 我們已修正 /clr:pure 下可能的停止回應問題,這是因為保留地區設定鎖定時呼叫了 CLR 插入的 LoadLibrary。

C++/CLI 偵錯

  • 新功能 C++/CLI 運算式評估工具現在支援先前只有純原生應用程式才支援的偵錯工具功能 (例如 Natvis)。 現在,在混合 Managed/原生應用程式中,如果變數視窗中列出物件 (或在資料提示內),其擴充方式就像在類型視覺化檢視所定義的純原生應用程式中一樣。

plugin-byid

Clang/C2 平台工具組

我們已將 Clang 3.8 版整合到 Clang/C2,並提供 64 位元裝載工具組。

C++ MDD

我們已啟用對最新版 Android NDK R11C 的支援,並能夠將目前專案升級為以最新的 NDK 為目標。

TypeScript

新功能 Visual Studio 2015 Update 3 包含 TypeScript 1.8.34。 我們已修正一些使用 AngularJS 之大型 TypeScript 專案的記憶體不足錯誤

C# 和 Visual Basic

新功能 我們已投資在減少記憶體使用量以及改進程式碼診斷的效能。 這會減少舊版本中所見的許多記憶體損毀。 我們提升了在整個方案上執行程式碼診斷的效能。 如需深入了解程式碼診斷效能的提升,請參閱 MSDN 上的 How to: Enable and Disable Full Solution Analysis for Managed Code (如何:啟用和停用 Managed 程式碼的完整解決方案分析) 頁面。

其他改進還包括︰

  • 將參考加入 NuGet 套件作為快速修正的選項︰

plugin-byid

您可以從 [工具] > [選項] > [文字編輯器] > [C#] > [進階] 的 [Using 指示詞] 下啟用此選項:

plugin-byid

  • 我們已改進對目標為 .NET 平台標準之可攜式類別庫的支援。
  • 我們已提升 C# [前往實作] 和 [尋找所有參考] 的效能。 您可以選取物件並按一下滑鼠右鍵,然後從功能表中選取並試用這些功能。
  • 當您將「全部修正」動作套用至文件/專案/方案時,現在會顯示進度列。
  • 新功能 已提升在大型解決方案中重新載入 C# 和 VB 專案時的效能。 如需詳細資訊和提示,請參閱:Performance considerations for large solutions (大型方案的效能考量)。

Team Explorer

新功能 Team Explorer 中已修正數個 Bug:

  • 無法檢視已從 Git 儲存機制刪除的檔案內容。
  • 檢視分支的歷程記錄時,應該會在焦點是最新認可時停用 Go to Child (移至子系) 圖示。
  • 使用 Git.exe 變更分支時,Visual Studio 可能會損毀或進入不明狀態。
  • 檢視 Git 儲存機制中分支的歷程記錄時,歷程記錄圖中的反白顯示部分發生故障。
  • 在 Team Explorer 中建立分支時,用於 [建立分支] 的 Alt+B 快速鍵會與 [建置] 功能表衝突。
  • 在高記憶體使用量情況下,嘗試解除封裝大小超過可用記憶體的物件時,Git 會發出錯誤:「找不到物件 - 沒有相符的鬆散物件 ()」,而非記憶體不足錯誤。
  • 錯誤訊息中的拼字錯誤「...若要開啟此解決方案 ...」。
  • 檢視分支的歷程記錄,並以滑鼠右鍵按一下歷程記錄的第一個認可時,會停用 [揀選]。
  • 從 Team Explorer 分支頁面操作功能表中建立提取要求時,請使用目前分支,而不是選取的分支。

Xamarin for Visual Studio

新功能 Visual Studio 2015 Update 3 現在包含 Xamarin 4.1。 除了許多 Bug 修正之外,這個版本也加入 tvOS 支援、改進 iOS Assets Catalog 支援、改進 XML 編輯經驗,以及在建立 iOS 應用程式時加入 SSL/TLS 和 HttpClient 實作的選取器。 如需詳細資訊,請參閱 Xamarin 版本資訊

已知問題

如需此版本已知問題的完整說明,請參閱下列 MSDN 文章:Visual Studio Update 3 已知問題