Visual Studio 2017 新功能(上)
開發(fā):快速導(dǎo)航、編寫并修復(fù)代碼
新的安裝體驗?- 降低了最小內(nèi)存需求量以實現(xiàn)更快、更定制化的安裝,并且支持脫機安裝。
Visual Studio IDE?- 大幅改進了 Visual Studio 2017,包括減少啟動和解決方案加載時間、改進登錄和標識、改進代碼導(dǎo)航以及增添打開文件視圖和鏈接的服務(wù),實現(xiàn)了應(yīng)用和任意本地服務(wù)或云端服務(wù)之間的連接。
Visual C++?- 版本 2015 和 2017 之間沒有重大更改。 更佳的 C++14 一致性級別、CMake 支持、生成吞吐量和編輯器效率。
C# 和 Visual Basic?- 擴展對新的 C# 7.0 和 Visual Basic 15 語言功能的支持,引入新的重構(gòu)以便能夠通過一個操作來整理源代碼。
F#?- 支持 F# 4.1 語言功能、對 F# 編譯器和 FSharp.Core 的改進,以及基于 Roslyn 工作區(qū)的新編輯器。
JavaScript 和 TypeScript?– TypeScript 2.1 可用于 Visual Studio 中的所有 TypeScript 項目。 提供新的 JavaScript 語言服務(wù),并默認啟用。
調(diào)試:輕松調(diào)試、探查和診斷
調(diào)試和診斷?- 對異常幫助器進行了大改造,且可以通過“運行時單擊”更快地導(dǎo)航代碼。 此外,“診斷工具”窗口中增添了應(yīng)用程序事件摘要,并對 CPU 工具實施了多項改進。
測試:使用全面的測試工具編寫高質(zhì)量代碼
實時單元測試?- 在編輯器中實現(xiàn)單元測試結(jié)果和代碼覆蓋率的實時可視化。
測試工具?- 使用測試資源管理器將自動化與測試用例工作項關(guān)聯(lián)。
協(xié)作:使用版本控制、具備敏捷性且高效協(xié)作
團隊資源管理器中的新增 Git 功能并增強了連接體驗?- 在 Visual Studio 2017 中可使用 Git 完成更多工作,并可輕松找到要連接到的項目和存儲庫。
擴展:構(gòu)建自己的擴展,根據(jù)自身喜好進行自定義
Visual Studio 擴展?- 通過構(gòu)建自己的擴展來按照自身喜好對 Visual Studio 進行自定義。
項目和項模板的可發(fā)現(xiàn)性?- 突破性地改進了 Visual Studio 使用項目和項模板的方式,提升了模板發(fā)現(xiàn)的性能。
增強的工具
.NET Core 和 ASP.NET Core?- 這包含新的基于 MSBuild 的 .NET Core 工具的 1.0 最終版本。 使用 Visual Studio 2017 可創(chuàng)建 .NET Standard 庫、.NET Core 應(yīng)用/庫和使用新 csproj 格式的 ASP.NET web 項目。
通用 Windows 應(yīng)用開發(fā)工具?- 更新包括新版本的 .NET Native 工具鏈、.NET Core NuGet 框架、新的效率工具以及對 Windows 10“創(chuàng)意者更新”SDK 的支持。
Xamarin?- Xamarin 4.3 添加了對 tvOS 的支持,同時改進了 iOS 資產(chǎn)目錄支持和 XML 編輯體驗。
Visual Studio Tools for Apache Cordova?- 基于瀏覽器的新模擬器可實現(xiàn)快速編碼并即時查看結(jié)果。
針對 Visual Studio 的 Node.js 工具?- 更新側(cè)重于穩(wěn)定性、性能和總體產(chǎn)品質(zhì)量。
Visual Studio Tools for Unity?- 現(xiàn)可通過新的 Visual Studio 安裝程序中的“使用 Unity 的游戲開發(fā)”工作負載安裝 Visual Studio Tools for Unity 3。
Redgate 開發(fā)人員工具 Core Edition?- 為了將 DevOps 功能擴展到 SQL 數(shù)據(jù)庫開發(fā),Visual Studio 現(xiàn)在包含 Redgate 開發(fā)人員工具 Core Edition,其中包括 Redgate ReadyRoll、SQL 搜索和 SQL Prompt。
NuGet?- NuGet 現(xiàn)在支持將包依賴項信息作為包引用直接存儲在項目文件中,同時保持包引用的可傳遞優(yōu)勢。
用于 XAML 應(yīng)用的工具?- 現(xiàn)在可以通過 XAML 運行時工具欄跟蹤焦點。 通過 XAML“編輯并繼續(xù)”功能、XAML 編輯器改進和性能優(yōu)化,提升了 XAML 的工作效率。
Data Tools 和 SQL Server?- SQL Server Data Tools 的最新更新實現(xiàn)了對 Azure SQL 數(shù)據(jù)庫和 SQL Server 2016 的最新功能的支持。
開發(fā)人員分析工具?- Visual Studio 2017 包括開發(fā)人員分析工具 v8.6,對 Visual Studio 中的 Application Insights 和 HockeyApp 功能做出了許多改進。
Visual Studio 的 Office 開發(fā)人員工具?- 包含了附帶最新功能和更新的 Office 開發(fā)人員工具。
體系結(jié)構(gòu)依賴關(guān)系的實時驗證?- 依賴關(guān)系驗證關(guān)系圖(又稱層關(guān)系圖)的實時通知。
其他
開發(fā)人員命令提示符?- 重構(gòu)了腳本以支持新的安裝體驗。
用于 .NET 的 Azure SDK?- 現(xiàn)可通過新的 Visual Studio 安裝程序獲取。
增強的 Visual Studio 反饋工作流?- 報告問題協(xié)作性更佳。 搜索、跟進和投票,獲取所有反饋的最新更新。
新增功能介紹
安裝體驗
我們很高興推出新款全新設(shè)計的安裝程序:
減少 Visual Studio 的最小內(nèi)存占用量。
安裝速度更快、系統(tǒng)影響更小和完全卸載。
方便你更輕松地選擇并僅安裝所需功能。
首次安裝 Visual Studio 2017 時,會獲得新體驗:
最小的安裝僅為數(shù)百兆字節(jié),但仍然支持針對超過&20; 種語言的基本代碼編輯(包括源代碼管理)。 大部分用戶會想安裝更多功能。 可添加一個或多個代表常見框架、語言和平臺的“工作負載”,涵蓋從 .NET 桌面開發(fā)到使用 Unity 的游戲開發(fā)等一切事務(wù)。
如何更新 Visual Studio
若要更新 Visual Studio,請運行 Visual Studio 安裝程序并單擊“更新”按鈕。
對新的安裝程序提出反饋
可使用標題欄右上角處新安裝程序客戶端的“報告問題”和“提供建議”命令來報告問題或給出好評。 我們想知道你在安裝、卸載或修改安裝時是否遇到錯誤,是否遇到異常安裝時間(例如掛起)或意外錯誤消息。
創(chuàng)建用于脫機安裝和新命令行安裝支持的布局
系統(tǒng)管理員和其他用戶現(xiàn)在可以創(chuàng)建 Visual Studio 的脫機布局,其中包含了安裝產(chǎn)品所需的所有內(nèi)容,無需訪問 Internet。 此布局可以是完整的產(chǎn)品、工作負荷和/或組件的一個子集,以及一個或多個產(chǎn)品區(qū)域設(shè)置。 請注意,創(chuàng)建脫機布局需要 Internet 訪問。 有關(guān)詳細信息,請參閱?Create an offline installation of Visual Studio 2017(創(chuàng)建 Visual Studio 2017 的脫機安裝)。
安裝別名
Visual Studio Enterprise 和 Community(以及其他產(chǎn)品)現(xiàn)在可以并行安裝在同一臺計算機上。 若要使標識這些安裝更加容易,可以指定短名稱或“別名”。 例如,如果要安裝 Visual Studio Enterprise,然后安裝 Visual Studio Community,這兩個程序在開始菜單上的顯示是一樣的。 可以為第二個程序提供別名,如“community”,開始菜單項中將顯示諸如“Visual Studio 2017 (community)”和“Visual Studio 2017 (community) 開發(fā)人員命令提示”這樣的名稱。
Visual Studio IDE
IDE 改進
已對 Visual Studio 進行優(yōu)化以減少啟動時間和解決方案加載時間。 首次啟動 Visual Studio 提速 50%。
Visual Studio 現(xiàn)可監(jiān)視影響啟動、解決方案加載或編輯的擴展性能。 通過 IDE 中的通知欄,將收到有關(guān)執(zhí)行效果不佳的擴展的警報。 借助新的性能中心(也可通過“幫助”>“管理 Visual Studio 性能”使用),可查看影響性能的擴展,還可發(fā)現(xiàn)影響啟動性能的工具窗口并更改其啟動加載行為。
可在新的 Visual Studio 安裝程序中選擇 Visual Studio 適用的 GitHub 擴展。
已將“重載所有項目”替換為“重載解決方案”,以在切換 VS 外部分支時獲得更佳性能。 使用 Git 命令行切換分支時,請在切換分支后選擇“重載解決方案”以最大程度地提升性能。
增強了用于 .NET Core 和 ASP.NET Core 項目的文件通配功能。 請參閱項目文件通配,以獲取更多詳細信息。
即將自動轉(zhuǎn)到克隆后的存儲庫的文件夾視圖。 可查看文件或使用新解決方案選擇列表在解決方案資源管理器中打開解決方案。
引入了新的外部服務(wù)主機,它將替代 VSHub。 此新的服務(wù)主機是一個外部進程,將在任務(wù)管理器中顯示為 ServiceHub.Host.CLR.*.exe 和 ServiceHub.Host.Node.x86.exe。 此主機將最終消除與 VSHub 一起引入的 localhost http 流量,前者應(yīng)可解決用戶報告的產(chǎn)生干擾的 Fiddler 問題。
預(yù)發(fā)布許可證到期消息更明確地說明了當前的許可證狀態(tài)。
現(xiàn)在,屏幕閱讀器可以更輕松地訪問“帳戶設(shè)置”對話框。
現(xiàn)在,通過從 Visual Studio 安裝程序中安裝幫助查看器組件,可使用脫機幫助。
現(xiàn)在可以使用 Visual Studio 安裝程序的“語言包”選項卡隨時添加和刪除多個用戶界面語言。 可以使用“工具”>“選項”>“國際設(shè)置”,在那些已安裝的用戶界面語言之間選擇當前的用戶界面語言。
通過版本控制狀態(tài)欄,你可以更輕松地將本地存儲庫發(fā)布到 SCC 主機,并跟蹤未提交和未推送的工作。
登錄和標識改進
推出了一種新的標識服務(wù),可用于跨 Microsoft 開發(fā)人員工具共享用戶帳戶。 在 Visual Studio 中,此共享包括團隊資源管理器、Azure Tools 和 Windows 應(yīng)用商店發(fā)布等功能。?
現(xiàn)在,這些功能的登錄體驗共有且一致。
除了改進 Visual Studio,我們還在服務(wù)端部署了部分改進功能,讓用戶可安全保持登錄狀態(tài),消除了每 12 小時便強制登錄的要求。 這解決了最常報告的登錄問題。?深入了解如何減少 Visual Studio 提示。
起始頁
重新設(shè)計的起始頁擁有新的“打開”和“創(chuàng)建”功能:
從 VSTS 獲取遠程存儲庫或使用我們更加醒目的 MRU,以輕松地打開本地項目和解決方案。
起始頁 MRU 會顯示在其他計算機上克隆的存儲庫,因此可在當前計算機上輕松克隆這些庫。
通過可搜索的模板和最近使用的模板列表,直接從起始頁新建項目。 最近使用的模板也會在具有個性化帳戶的 Visual Studio 實例間漫游。
通過起始頁上的“從 VSTS 簽出”選項,快速啟動 VSTS 體驗的新克隆。
可刪除的“入門”部分。
“新聞”部分現(xiàn)可折疊:
更新了新聞源中新添加的項上的徽章。
在新聞源處于折疊狀態(tài)時,如果出現(xiàn)新項,則對新聞源擴展器設(shè)置徽章。
優(yōu)化了視覺設(shè)計,由此解決了反饋的有關(guān)屏幕較小時元素截斷的問題,同時提升了空間利用率。
下方顯示了新的起始頁。
改進了代碼導(dǎo)航
Visual Studio 2017 中的代碼導(dǎo)航功能有了顯著改進:
轉(zhuǎn)到全部。 (Ctrl + , 或 Ctrl + T)可快速查找并轉(zhuǎn)到代碼中的文件、類型、方法和其他元素。 通過它可找到任何類型的項,甚至在大型基本代碼中亦可如此。?此外,若知道要查找的項類型,便可輕松進行篩選。 在 C# 和 Visual Basic 中,我們還添加了模糊匹配,因此即使某個類型名稱拼寫錯誤,也仍然可獲得結(jié)果。?還優(yōu)化了“轉(zhuǎn)到行”(Ctrl + G)體驗。 “轉(zhuǎn)到”系列命令位于“編輯”菜單的頂部。
“查找所有引用”(Shift+F12) 已大幅改進(當前針對 C#、Visual Basic 和 C++),可實現(xiàn)高級分組、篩選、分類、在引用結(jié)果中搜索以及結(jié)果著色(針對 C# 和 VB),讓用戶清晰了解引用并自信地找到所需的代碼行。 鼠標懸停在引用項上時,會顯示一個工具提示,其中顯示源代碼中該引用的上下文(針對 C# 和 VB)。 通過切換工具欄中的“保存結(jié)果”按鈕,“查找所有引用”的下一個調(diào)用將在新窗口中填充引用結(jié)果。 通過此操作,可將當前結(jié)果保留在現(xiàn)有窗口中。
結(jié)構(gòu)參考線現(xiàn)在編輯器中繪制,以便可輕松可視化正在處理的代碼的結(jié)構(gòu)。 鼠標懸停時,會顯示一個工具提示,其中包含當前代碼塊(相對于其上級塊)的上下文。 結(jié)構(gòu)參考線當前支持 C#、Visual Basic 和 XAML 文件,以及通過 TextMate 語法支持的任何文件。 可通過取消選中“文本編輯器” > “常規(guī)”類別下的“顯示結(jié)構(gòu)參考線”復(fù)選框,在“工具”>“選項”對話框中禁用此功能。
通過 .editorconfig 支持編碼約定
Visual Studio 編輯器現(xiàn)支持?EditorConfig,它允許開發(fā)人員定義編碼樣式約定并使其在不同編輯器和 IDE 之間保持一致。 請參閱文檔獲取更多詳細信息,請參閱?.NET 文檔獲取有關(guān)如何使用 .editorconfig 文件管理 .NET 代碼樣式的信息。 請參閱已知問題,了解此版本中有關(guān) EditorConfig 支持的限制。
打開文件夾
“打開文件夾”是使用不含項目和解決方案的基本代碼的簡便方法。 通過“文件”>“打開”>“文件夾”打開文件夾視圖,然后選擇要導(dǎo)航的文件夾。
可使用解決方案資源管理器打開和編輯文件。 許多常用語言具有語法突出顯示和符號導(dǎo)航(GoTo)支持。 此外,某些語言可直接由文件夾獲得高級 IntelliSense 和調(diào)試支持:
C++ (CMake)。
Node.js - JavaScript/TypeScript。
C# 和 VB。
可使用 F5 和解決方案資源管理器中的文件上下文菜單實現(xiàn)生成或調(diào)試操作。 要獲得最佳體驗,請確保安裝所使用語言的工作負荷。
文件夾視圖也支持以下操作:
使用 GoTo (Ctrl+,) 在文件夾中的代碼中進行搜索。
將解決方案資源管理器文件夾視圖的范圍設(shè)置為子文件夾。
在資源管理器中或解決方案資源管理器的命令提示符下打開文件夾。
利用解決方案選擇下拉列表,在打開的文件夾/存儲庫的解決方案之間輕松切換。
使用 launch.vs.json 配置調(diào)試和啟動設(shè)置。 右鍵單擊可調(diào)試的文件并選擇“調(diào)試和啟動設(shè)置”。
使用 tasks.vs.json 配置任務(wù)和自定義生成。 右鍵單擊任何文件,并選擇“配置任務(wù)設(shè)置”。
Launch.vs.json 和 tasks.vs.json 在 JSON 編輯器中具有 IntelliSense。
大幅提升了打開文件夾和在文件夾視圖與解決方案視圖之間切換時的效果。
輕量級解決方案加載
輕量級解決方案加載可讓大型解決方案的加載速度更快。 它可大幅節(jié)省大型解決方案的加載時間和內(nèi)存使用量。?
此功能并非默認啟用,可按解決方案逐一啟用,也可在 IDE 中全局啟用。 若要全局啟用,可導(dǎo)航到“工具”>“選項”,選擇“項目和解決方案”下的“常規(guī)”,或通過使用“快速啟動”搜索“輕量級解決方案加載”。?
可在解決方案屬性窗格中,為單個解決方案開啟和關(guān)閉該功能。
輕量級解決方案加載最適合包含 C# 項目或包含混用 C# 和 C++ 的項目的大型解決方案。 如果檢測到正在使用大型解決方案,系統(tǒng)可能會提示啟用此功能。?有關(guān)此功能的更多詳細信息,可訪問?Visual Studio 博客。
大幅改進了完整解決方案生成的性能,現(xiàn)在與常規(guī)的解決方案加載擁有同等性能。
語法著色、自動完成、代碼段和對更多語言的“導(dǎo)航到”搜索支持
基于在 Visual Studio 2015 更新中添加的支持,Visual Studio 2017 現(xiàn)支持對更多語言進行語法著色和自動完成。 此外,這些語言中的其中一些語言也支持通過“導(dǎo)航到”(Ctrl+) 和/或代碼段導(dǎo)航。
以下所示的語言文件支持新“Visual Studio 核心編輯器”中的這些功能(即使并未安裝顯式支持有問題的語言的工作負載)。 如果安裝了提供語言支持的工作負載(例如 .NET 桌面應(yīng)用程序開發(fā)工作負載、使用 C++ 的 Windows 桌面應(yīng)用開發(fā)工作負載等),會提供更廣泛的語言支持,包括 IntelliSense 和其他高級語言功能(例如燈泡)。
按支持級別列出的語言文件類型:
僅支持語法著色和自動完成:
Bat、Clojure、CoffeeScript、CSS、Docker、F#、Groovy、INI、Jade、Javadoc、JSON、LESS、LUA、Make、Markdown ++、Objective-C、Perl、PowerShell、Python、Rust、ShaderLab、SQL、Visual Basic .NET、YAML。
支持代碼段(除了語法著色和自動完成以外):
CMake、C++、C#、Go、Groovy、HTML、Java、Javadoc、JavaScript、Lua、Perl、PHP、R、Ruby、Shellscript、Swift、XML。
支持導(dǎo)航到(除了語法著色和自動完成以外):
C++、C#、Go、Java、JavaScript、PHP、TypeScript、Visual Basic。
項目概述頁入門
針對新創(chuàng)建的項目,我們引入了全新的入門體驗。 我們已將當前的入門頁替換為新應(yīng)用配置設(shè)計器中的“概述”選項卡,此頁面?zhèn)戎赜谀軌蜃屇憧焖偃腴T并開始運行的操作!
在 ASP.NET 4.x ASP.NET Core 項目中啟用。
在 Cordova 項目中啟用。
使用連接的服務(wù)連接到服務(wù)
在以前的版本中,此功能被命名為“服務(wù)功能”。 我們已將該名稱更改為“連接的服務(wù)”。
連接的服務(wù)即 Visual Studio 2017 中新式的“添加連接的服務(wù)”功能或“添加服務(wù)引用”功能。 連接的服務(wù)功能可使應(yīng)用與服務(wù)間的連接更輕松。?
解決方案資源管理器中提供了一個用于 Web 和移動項目類型的名為“連接的服務(wù)”的新節(jié)點。 雙擊此節(jié)點會在 Visual Studio 中打開一個新的整頁選項卡,可在其中發(fā)現(xiàn)可連接到的熱門 Microsoft 服務(wù)。
在“連接的服務(wù)”頁上選擇一個服務(wù)將調(diào)用“連接的服務(wù)向?qū)А?#xff0c;該向?qū)渲庙椖俊⑾螺d必要的 NuGet 數(shù)據(jù)包,從而幫助快速輕松地根據(jù)服務(wù)需要進行編碼。
產(chǎn)品隨附的工具和功能
通過 Visual Studio 2017 可輕松獲取其他工作負載和組件,而無需離開 IDE。 利用“快速啟動”可查找并啟動任何工作負荷或單個組件的 Visual Studio 安裝程序。
如果找不到正在尋找的模板,也可以從“新建項目”對話框中打開 Visual Studio 安裝程序。
Visual C++
Visual Studio 2017 向 Visual C++ 環(huán)境引入了許多更新和修補程序。 感謝你報告 bug! 我們修復(fù)了編譯器和工具中的 250 多個 bug 和已報告問題,其中很多是客戶通過?Microsoft Connect?提交的。?
我們在此版本中著手了 STL 的性能改進。 現(xiàn)在默認使用全新的基于 SQLite 的數(shù)據(jù)庫引擎。 這將提高數(shù)據(jù)庫操作(如“轉(zhuǎn)到定義”和“查找所有引用”)的速度,并將極大地縮短初始解決方案分析時間。?
現(xiàn)提供原始 C++ 工作流的更細化的安裝體驗。 我們添加了可選組件,使你能夠僅安裝所需工具。 Visual Studio 中的 CMake 支持已準備好展現(xiàn)它的強大功能! 直接將 CMake 項目加載到 VS 中并立即開始編寫代碼。
改進了“打開文件夾”C++ 體驗,因此可以直接將源代碼編入 VS 中,而無需創(chuàng)建任何 VS 解決方案和項目。 “導(dǎo)航到”現(xiàn)稱為“轉(zhuǎn)到”,這個涵蓋性術(shù)語針對一組新的導(dǎo)航篩選器。 這使用戶可更輕松地找到正確結(jié)果,尤其在較大代碼庫中。
C++ 代碼分析
用于強制執(zhí)行?C++ 核心準則?的 C++ 核心檢查器現(xiàn)已通過 Visual Studio 分發(fā)。 只需在項目“屬性”頁的“代碼分析擴展”對話框中啟動檢查器,即會在運行代碼分析時包含擴展。
C++ 編譯器
我們更新了 C++ 編譯器和標準庫,不僅增強了對 C++11 和 C++14 功能的支持,還引入了對預(yù)期推出的某些 C++17 標準功能的初步支持。?
編譯器支持通用 constexpr 和聚合的 NSDMI,具有 C++14 標準版中的全部新增功能。 請注意,編譯器仍缺少 C++11 和 C++98 標準版中的一些功能。 Visual Studio 2017 允許結(jié)合使用 /sdl 和 /await。 刪除了協(xié)同程序的 /RTC 限制。
此版本在優(yōu)化和代碼生成方面做出了若干改進。 顯著改進包括:
改進了循環(huán)的代碼生成:支持常量整數(shù)除法的自動矢量化,優(yōu)化了 memset 模式的識別。
提高了代碼安全性:改進了緩沖區(qū)溢出編輯器診斷的顯示,/guard:cf 現(xiàn)可保護生成轉(zhuǎn)移表的切換語句。
/Debug:fastlink 選項得到改進,相較 Visual Studio 2015,大組件上的鏈接速度提升了 30%。
使用協(xié)同例程時,實驗關(guān)鍵字 "yield"(在 /await 開關(guān)下可用)已被刪除。 應(yīng)更新你的代碼,以改為使用 "co_yield”。?有關(guān)詳細信息,請參閱?Visual C++ 團隊博客。
C++ 庫
[STL] basic_string 的性能改進。
[STL] 增添了 <any>、<string_view>、apply()、make_from_tuple()。
[STL] std::vector 已經(jīng)過全面檢修,以提高正確性和性能。
[STL] 現(xiàn)在 STL 會避免取消引用 null 復(fù)雜精致指針。
[STL] 增添了 <optional>、<variant>、shared_ptr::weak_type 和 <cstdalign>。
[STL] 在 min/max/minmax(initializer_list) 和 min_element/max_element/minmax_element() 中啟用了 C++14 constexpr。
[STL] 將 std::string/std::wstring 的移動構(gòu)造函數(shù)的性能提升了超過 3 倍。
[STL] 有關(guān) STL 改進的完整列表,請參閱:Visual C++ 團隊博客。
[ATL] 還進行了另一組名稱查找一致性修復(fù)。
[ATL] 現(xiàn)有的移動構(gòu)造函數(shù)和移動賦值運算符現(xiàn)已正確地標記為非引發(fā)。
[ATL] 取消禁止有關(guān) atlstr.h 中本地靜態(tài)變量的線程安全初始化的有效警告 C4640。
[ATL] 在[使用 ATL 和生成 DLL] 時,本地靜態(tài)變量的線程安全初始化在 XP 工具集中自動關(guān)閉。 這種情況不會再出現(xiàn)。 如果需要關(guān)閉線程安全初始化,則可以在項目設(shè)置中添加 /Zc:threadSafeInit-。
[AMP] 審核了庫并修復(fù)了拼寫錯誤。
[VCRuntime] 控制流防護符號新增了標頭“cfguard.h”。
C++ IDE
現(xiàn)針對 C++ 本機項目和 C++ /CLI 項目有了更佳的配置更改性能,后者的性能增加更為明顯。 第一次激活解決方案配置時,現(xiàn)在的速度會更快,且此解決方案配置的所有后續(xù)激活幾乎可瞬時完成。
現(xiàn)在默認使用全新的基于 SQLite 的數(shù)據(jù)庫引擎。 這將提高數(shù)據(jù)庫操作(如“轉(zhuǎn)到定義”和“查找所有引用”)的速度,并將極大地縮短初始解決方案分析時間。 設(shè)置已移至“工具”>“選項”>“文本編輯器”>“C/C++”>“高級”下(之前位于...“C/C++”>“實驗”下)。
我們改進了不使用預(yù)編譯標頭的項目和文件的 IntelliSense 性能 - 為當前文件中的標頭創(chuàng)建自動預(yù)編譯標頭。
其他更新包括:
還為錯誤列表中的 IntelliSense 錯誤添加了錯誤篩選和幫助。 單擊錯誤列現(xiàn)在允許進行篩選。 此外,單擊特定錯誤或按 F1 將啟動錯誤消息的聯(lián)機搜索。
增添了按類型篩選“成員列表”項的功能。
添了新的實驗性預(yù)測 IntelliSense 功能,此功能可根據(jù)上下文篩選成員列表中的所示內(nèi)容。
在新的“查找所有引用”UI 中,可了解是否要從 C++ 代碼結(jié)果中的變量進行讀取或向其寫入。
已將“點到箭頭”IntelliSense 功能從實驗級提升為高級,且現(xiàn)在為默認啟用。 編輯器功能“展開作用域”和“展開優(yōu)先級”也已從實驗級提升為高級。
實驗性的重構(gòu)功能“更改簽名”和“提取函數(shù)”現(xiàn)默認可用。
我們啟用了用于 C++ 項目的新實驗性功能“快速項目加載”。 下次打開 C++ 項目時,加載速度將更快,而再下一次的加載速度甚至還會更快!
改進了“打開文件夾”體驗。 通過“打開文件夾”加載源,可編輯、生成和調(diào)試非 MSBuild C++ 項目。?
通過以下 json 文件自定義體驗:
使用 CppProperties.json 可自定義 IntelliSense 和瀏覽體驗。
使用 Tasks.vs.json 可自定義生成步驟。
使用 Launch.vs.json 可自定義調(diào)試體驗。
無需在根文件夾中創(chuàng)建 CppProperties.json 文件,C++ IntelliSense 便可正常工作。 此外,我們增添了一個新的下拉列表,允許用戶在分別由 CMake 和 CppProperties.json 文件提供的配置之間輕松切換。 “打開文件夾”中的 CMake 支持:在使用“打開文件夾”打開 CMake 項目時會自動配置用于 C++ 編輯、生成和調(diào)試的環(huán)境。
通過 CMakeLists.txt 文件所在的同一文件夾中的 CMakeSettings.json 文件提供進一步的配置支持。
CMake 支持:
有關(guān) CMake 支持的概述,請參閱:Visual C++ 團隊博客。
通過 10 分鐘時長的?CMake 視頻了解 CMake 支持。
有關(guān)使用 C++ 進行 Linux 開發(fā)的信息,請觀看?Linux 視頻。
C++ 安裝工作負荷
使用 C++ 的 Windows 桌面開發(fā):
現(xiàn)提供原始 C++ 工作流的更細化的安裝體驗。 我們添加了可選組件,使你能夠僅安裝所需工具。 請注意,在安裝程序用戶界面中列出的組件的安裝大小的指示并不準確,而且它低估了整個大小。
若要在 C++ 桌面工作負載中成功創(chuàng)建 Win32 項目,則必須安裝工具集和 Windows SDK。 安裝推薦(選中)的組件“VC++ 2017 v141 工具集(x86、x64)”和“Windows 10 SDK (10.0.14393)”可以確保正常運行。 如果未安裝所需工具,將無法成功創(chuàng)建項目,且向?qū)炱稹?/p>
使用 C++ 的 Linux 開發(fā):
熱門擴展“用于 Linux 開發(fā)的 Visual C++”現(xiàn)已納入 Visual Studio。 此安裝提供開發(fā)和調(diào)試運行在 Linux 環(huán)境中的 C++ 應(yīng)用程序所需的一切信息。
使用 C++ 的游戲開發(fā):
以 DirectX 或 Cocos2d 為后盾,利用 C++ 的強大功能構(gòu)建專業(yè)游戲。
使用 C++ 的移動開發(fā)(Android 和 iOS):
現(xiàn)可利用 Visual Studio 創(chuàng)建和調(diào)試面向 Android 和 iOS 的移動應(yīng)用。
通用 Windows 平臺開發(fā):
C++ 是通用 Windows 平臺開發(fā)工作負荷的可選組件。 當前必須手動完成 C++ 項目的升級。 如果在 Visual Studio 2017 中打開面向 v140 的 UWP 項目,且如果沒有安裝 Visual Studio 2015,則需要在項目屬性頁中選擇 v141 平臺工具集。
Clang/C2 平臺工具集
Visual Studio 2017 附帶的 Clang/C2 工具集現(xiàn)在支持 /bigobj 開關(guān),這對生成大項目來說至關(guān)重要。 它還在編譯器的前端和后端進行了多項重要的 bug 修復(fù)。
C# 和 Visual Basi
語言擴展
此版本引入了對 C# 7.0 和 Visual Basic 15 語言功能的支持,包括:
對于 C#:
類似任務(wù)的異步方法返回類型:這可從異步方法中返回任何類似任務(wù)的類型。 以前,這些返回類型限制為?Task<T>?和?Task。
值元組?引入使用元祖臨時對一組類型化的值分組的語言支持。 若要了解詳細信息,請查看 GitHub 上的?設(shè)計說明。
嵌套的本地函數(shù)?對語言進行了擴展,以支持在塊范圍內(nèi)聲明函數(shù)。
模式匹配擴展?通過函數(shù)式語言帶來了代數(shù)數(shù)據(jù)類型和模式匹配的許多優(yōu)勢。
引用返回?使函數(shù)可以按引用返回值。
對于 Visual Basic:
值元組?引入使用元組臨時對一組類型化的值分組時的語言支持:Dim point As (x As Integer, y As Integer) = GetOffset()。
ByRef 返回消耗可擴展語言,支持使用具有 ByRef 返回的庫中的函數(shù)和屬性。
二進制文本和數(shù)字組分隔符允許二進制數(shù)的本機表示形式。 這對位掩碼和標志枚舉非常方便:&B1001_0011。
有關(guān)詳細信息,請關(guān)注我們在?CSharpLang GitHub?和?VBLang GitHub?上的語言設(shè)計,以詳細了解這些設(shè)計及其他建議的語言擴展。
快速操作和重構(gòu)
Visual Studio 提供許多重構(gòu),幫助提高工作效率并使代碼更易讀。 下面列出了部分重構(gòu):
使用初始值設(shè)定項簡化對象初始化:
利用新的 C#7 功能以內(nèi)聯(lián)方式移動?out?變量聲明:
利用新的 C#7 功能,使用 null 合并運算符簡化 null 檢查和引發(fā)表達式:
將類型移動到匹配文件:通過?Ctrl+.?單擊一下,提取某文件中的類型并將其置于帶匹配名稱的另一文件。
同步文件和類型名稱:如果文件和類型名稱不同步,可使用?Ctrl+.。
將?String.Format?轉(zhuǎn)換為字符串插值:借助此“快速操作”利用?C# 6 語言功能。
將缺少的大小寫添加到 C# 開關(guān)或 Visual Basic Select。
將屬性轉(zhuǎn)換為方法,反之亦然。
添加包引用:可對無法識別的類型自動檢索和安裝 NuGet 包(以及添加 using/Import)。 若要啟用此功能,請轉(zhuǎn)到“工具”>“選項”>“文本編輯器”>“[C# / Basic]”>“高級”>“建議對引用程序集中的類型使用 using”/“建議對 NuGet 包中的類型使用 using”。
根據(jù)需要同步異步方法。
支持對拼寫錯誤的類型執(zhí)行“模糊”匹配。
編碼約定配置和強制
以 Visual Studio 對?EditorConfig?的支持為基礎(chǔ),我們與社區(qū)協(xié)作,將 .NET 代碼樣式設(shè)置添加到了文件格式。?
這意味著你可以配置團隊的代碼樣式約定、將其簽入源控件,并在開發(fā)人員鍵入時讓沖突實時顯示在編輯器中。 可以在 Roslyn 存儲庫的?.editorconfig?中或此文檔中查看所有代碼樣式選項。?
可通過“工具”>“選項”>“文本編輯器”>“[C#/Basic]”>“代碼樣式”繼續(xù)配置特定于計算機的代碼樣式設(shè)置,并且這些規(guī)則會在 EditorConfig 存在且與之沖突時被覆蓋。
我們還添加/更新了樣式分析器,以幫助你自定義和強制執(zhí)行團隊的編碼約定,包括:
命名樣式規(guī)則。
使用“var”或顯式類型。
對訪問成員 使用“this.” 或“Me.”。
使用表達式主體或塊。
對 'cast' 和 'null' 檢查使用模式匹配。
使用顯式元組名稱。
通過引發(fā)表達式、條件委托、合并表達式和 null 傳播簡化 null 檢查。
需要大括號。
注意:其中部分代碼樣式規(guī)則在編輯器中默認配置為“建議”。
IntelliSense 改進
此版本還改進了 IntelliSense,可幫助在處理較大解決方案或不熟悉的代碼庫時提高工作效率。?
我們?yōu)?IntelliSense 添加了圖標任務(wù)欄,可供你按類型(如方法、屬性、類等)篩選成員列表。 每個篩選器切換都具有關(guān)聯(lián)的鍵盤快捷方式,可以通過將鼠標懸停在該圖標上來發(fā)現(xiàn)。?
若要啟用此功能,請轉(zhuǎn)到“工具”>“選項”>“文本編輯器”>“[C# / Basic]”>“IntelliSense”,選中篩選選項并突出顯示。
其他編輯器改進
你現(xiàn)在可以通過定位游標中間字符串并按?Enter?鍵,將一個長字符串拆分為多個串聯(lián)字符串。
我們投入了大量工作來提高存在用于計算診斷和 CodeLens 信息的后臺操作時的 IDE 響應(yīng)。
F#?
?對 F# 4.1 語言功能的支持:
與 C# 7/VB 15 元組互操作的結(jié)構(gòu)元組。
支持使用 C# 7 ref 返回的 Byref 返回。
使用?[<Struct>]?屬性的結(jié)構(gòu)記錄支持(由?Will Smith?完成)。
帶?[<Struct>]?屬性的結(jié)構(gòu)可區(qū)分聯(lián)合支持。
新的?Result<'TSuccess, 'TFailure>?類型,帶有 FSharp.Core 中的支持函數(shù)(由?Oskar Gewalli?完成)。
fixed?關(guān)鍵字,其支持在堆棧上本地固定指針類型。
數(shù)值文本中的下劃線(由?Avi Avni?完成)。
調(diào)用方信息屬性參數(shù)(由?Lincoln Atkinson?和?Avi Avni?共同完成)。
同一文件中通過?namespace rec?和?module rec?的相互引用類型和模塊。
模塊上與類型共享同一名稱的隱式“Module”后綴。
對 F# 編譯器和 FSharp.Core 進行了許多改進,大部分都是由 F# 社區(qū)完成:
改進了錯誤消息(由?Steffen Forkmann、Isaac Abraham、Libo ZengGauthier Segay?和?Rick Minerich?等完成)。
F# 編譯器中的性能改進(由 Microsoft、Gusty、Steffen Forkmann?和?Libo Zeng?等完成)。
FSharp.Core 中的性能改進(由 Microsoft、Jack Mott、Steffen Forkmann、Libo Zeng、Paul Westcott、Zp Bappi、Victor Baybekov?等完成)。
F# 和 C# 之間的互操作改進(由 Microsoft 和?Eirik Tsarpalis?完成)。
大幅改進了靜態(tài)解析的類型參數(shù)。
支持生成可移植的 PDB。
基于 Roslyn 工作區(qū)的新編輯器具有許多新的 IDE 功能,由優(yōu)秀的 F# 社區(qū)完成:
IntelliSense 篩選器和標志符號改進(由?Vasily Kirichenko?完成)。
多種 IntelliSense 改進(由?Vasily Kirichenko?完成)。
對新的“轉(zhuǎn)到”功能的支持(由?Vasily Kirichenko?完成)。
查找所有引用支持(由?Vasily Kirichenko?完成)。
重新啟用了多個 F# 項目支持(由?Ahn Dung Phan?完成)。
Roslyn 上的 QuickInfo(輸入懸停)支持(由?Vasily Kirichenko?完成)。
編輯器中的模塊和命名空間著色(由?Vasily Kirichenko?完成)。
重新啟用和改進的導(dǎo)航欄支持(由?Vasily Kirichenko?完成)。
標記的語義突出顯示(由?Vasily Kirichenko?完成)。
對新結(jié)構(gòu)化參考線的支持(由?Vasily Kirichenko?和?Jared Hester?完成)。
重新啟用的 F1 幫助服務(wù)(由?Robert Jeppesen?完成)。
QuickInfo 和簽名幫助中的著色(由?Vladimir Matveev?完成)。
代碼縮進改進(由?Ahn Dung Phan?完成)。
IDE 中的錯誤報告改進(由?Ahn Dung Phan?完成)。
內(nèi)聯(lián)重命名(臨時禁用)(由?Vasily Kirichenko?完成)。
“轉(zhuǎn)到定義”的改進(由?Vasily Kirichenko?和?Ahn Dung Phan?完成)。
斷點解析改進(由?Vasily Kirichenko?和?Steffen Forkmann?完成)。
關(guān)于EditorBrowsable(EditorBrowsableState.Never)?屬性(由?Vasily Kirichenko?完成)。
XML 文檔生成(由?Ahn Dung Phan?完成)。
刪除尾隨分號分析器和 codefix(由?Vasily Kirichenko?完成)。
用于記錄標簽和聯(lián)合大小寫分析器以及 codefix 的大寫標識符(由?Steffen Forkmann?完成)。
實現(xiàn)接口分析器和 Codefix(由?Ahn Dung Phan?完成)。
未知標識符 Codefix 的替換(由?Steffen Forkmann?完成)。
使用下劃線分析器和 Codefix 替換未使用的值或為其添加前綴(由?Vasily Kirichenko?完成)。
添加?new?關(guān)鍵字分析器和 Codefix(由?Vasily Kirichenko?完成)。
添加?open?語句分析器和 Codefix(由?Vasily Kirichenko?完成)。
簡化名稱分析器和 Codefix(由?Vasily Kirichenko?完成)。
灰顯未使用的值(由?Vasily Kirichenko?完成)。
此外,社區(qū)還提供了以下內(nèi)容:
解決方案加載性能改進(由?Saul Rennison?完成)。
基礎(chǔ)結(jié)構(gòu)改進(由?Jack Pappas、Enrico Sada、Saul Rennison、Alfonso Garcia-Caro?和?Zip Bappi?完成)。
著色 FSI(由?Saul Rennison?完成)。
F# 項目系統(tǒng)修復(fù)(由?Saul Rennison?完成)。
對?.NET CLI 中的 F#?的支持也是由?Enrico Sada?構(gòu)建的。
最后,我們要特別感謝整個 F# 社區(qū)為 VS 2017 中 F# 工具版本進行內(nèi)部測試、歸檔 bug、促進討論以及實現(xiàn) bug 修復(fù)和功能所作出的努力。
沒有 F# 社區(qū),就不會有 VS 2017 的成功。?
JavaScript 和 TypeScript
?TypeScript 2.1
TypeScript 2.1 適用于 Visual Studio 中的所有 TypeScript 項目。 TypeScript 2.1 提供下層 async/await、更好的類型推理、本地對象擴展及更多功能! 若要詳細了解此版本,請查看?發(fā)布博客文章或完整更改日志。
JavaScript 語言服務(wù)
提供新的 JavaScript 語言服務(wù),并默認啟用。 新服務(wù)提供更強大的 IntelliSense,并增添了對 JSDoc 注釋批注、ES6 和常見 JS 模塊格式的 IntelliSense 支持。 此外,它還支持 JSX 語法和 ES2016 的功能,如生成器、模塊和修飾器。?有關(guān)詳細信息,請參閱此博客文章或 GitHub 上的?JavaScript IntelliSense 文檔。
性能改進
改進性能是此版本的一個重點所在。 除對提高內(nèi)存和響應(yīng)作出一些優(yōu)化外,整個 JavaScript/TypeScript 語言服務(wù)也已移到?devenv.exe?之外的附屬進程,從而降低較大 VS 項目的內(nèi)存占用。?
如此一來,在處理較大的 JavaScript 項目時,Visual Studio 進程的內(nèi)存消耗更低,內(nèi)存崩潰的可能性更小。 若要閱讀有關(guān)這些改進的詳細信息,請參閱此博客文章。
內(nèi)容還沒有整理完哦~明天給大家繼續(xù)推送下半部分,大家有興趣的,可以點擊“閱讀原文”
原文地址:https://www.visualstudio.com/zh-cn/news/releasenotes/vs2017-relnotes
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
內(nèi)容轉(zhuǎn)載自公眾號
微軟中國MSDN 了解更多總結(jié)
以上是生活随笔為你收集整理的Visual Studio 2017 新功能(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 2017正式
- 下一篇: 微软发招,苹果发飙,React Nati