玩滑板的钥匙 · 沈阳地铁6号线英雄公园站至铁山路站区间右线“ ...· 2 月前 · |
老实的显示器 · 《把耳朵叫醒》~ 金海心 ...· 2 月前 · |
玩命的汉堡包 · IF燕云的个人空间-IF燕云个人主页-哔哩哔哩视频· 3 月前 · |
爱逃课的毛豆 · django调用存储过程 - CSDN文库· 4 月前 · |
Visual Studio 2022 17.0 版的支援於 2023 年 7 月結束,這表示此版本不會再有安全性更新。 使用 Visual Studio 2022 17.0 LTSC 通道的企業和專業訂閱者應採用最新的目前通道或 LTSC 版本。
閱讀 Visual Studio 2022 版本和支援日期。
請瀏覽 Visual Studio 網站,以存取最新版 Visual Studio 2022 產品的連結。 如需安裝和更新 Visual Studio 2022 的指示,請參閱 將 Visual Studio 2022 更新至最新版本 。 Visual Studio 系統管理員指南 包含如何跨組織部署 Visual Studio 的指引。
Visual Studio 2022 部落格 是由 Visual Studio 工程小組發行的官方產品見解。 您可以在下列文章中找到有關 Visual Studio 2022 版本的深入資訊:
2023 年 7 月 11 日發行
2023 年 6 月 13 日發行
2023 年 4 月 11 日發行
2023 年 3 月 14 日發行
2023 年 2 月 14 日發行
CVE-2022-41953 Git GUI 複製遠端程式碼執行弱點
2023 年 1 月 10 日發行
2022 年 12 月 13 日
2022 年 11 月 8 日發行
2022 年 10 月 11 日發行
2022 年 9 月 13 日發行
CVE-2022-38013 .NET 拒絕服務弱點 ASP.NET Core 3.1 和 .NET 6.0 中存在拒絕服務弱點,惡意用戶端可能會造成堆疊溢位,當攻擊者傳送模型繫結期間剖析的自訂承載時,可能會導致拒絕服務的攻擊。
2022 年 8 月 9 日發行
2022 年 7 月 12 日發行
2022 年 6 月 14 日發行
2022 年 5 月 10 日發行
CVE-2022-29117 .NET 拒絕服務弱點 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在弱點,惡意用戶端可以操作 Cookie 並造成拒絕服務。
CVE-2022-23267 .NET Core 拒絕服務弱點 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在弱點,惡意用戶端可能會透過 HttpClient 過度的記憶體配置造成拒絕服務。
CVE-2022-29145 .NET 拒絕服務弱點 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中存在弱點,其中惡意用戶端在剖析 HTML 表單時可能會導致拒絕服務。
CVE-2022-24513 權限弱點提高 當 Microsoft Visual Studio 更新程式服務不正確地剖析本機設定資料時,可能會有權限弱點提高。
2022 年 4 月 19 日發行
2022 年 4 月 12 日發行
CVE-2022-24765 權限弱點提高 Git for Windows 中可能會有權限弱點提高,其中 Git 作業在搜尋 Git 目錄時,可能會在存放庫外執行。 Git for Windows 現在已更新為 2.35.2.1 版。
CVE-2022-24767 DLL 劫持弱點 在 SYSTEM 使用者帳戶下執行解除安裝程式時,Git for Windows 安裝程式中會有潛在的 DLL 劫持弱點。 Git for Windows 現在已更新為 2.35.2.1 版。
CVE-2022-24513 權限弱點提高 當 Microsoft Visual Studio 更新程式服務不正確地剖析本機設定資料時,可能會有權限弱點提高。
2022 年 3 月 8 日發行
開發人員社群有一個 在 17.0 版中可用的修正程式完整清單 。
CVE-2020-8927 弱點 .NET 5.0 和 .NET Core 3.1 中會有遠端程式碼執行弱點,其中 Brotli 程式庫 1.0.8 版之前會有緩衝區溢位。
CVE-2022-24464 弱點 剖析特定 HTTP 表單要求類型時,.NET 6.0、.NET 5.0 和 .NET CORE 3.1 中存在拒絕服務弱點。
CVE-2022-24512 弱點 .NET 6.0、.NET 5.0 和 .NET Core 3.1 中會有遠端程式碼執行弱點,其中堆疊緩衝區溢位發生在 .NET Double Parse 常式中。
CVE-2021-3711 OpenSSL 緩衝區溢位弱點 Git for Windows 所取用的 OpenSSL 中會有潛在的緩衝區溢位弱點。 Git for Windows 現在已更新為 2.35.1.2 版,可解決此問題。
2022 年 2 月 8 日發行
CVE-2022-21986 弱點 當 Kestrel Web 服務器處理特定 HTTP/2 和 HTTP/3 要求時,.NET 5.0 和 .NET 6.0 中存在拒絕服務弱點
2022 年 1 月 13 日發行
2021 年 12 月 16 日發行
2021 年 12 月 14 日發行
為了防止可能惡意的惡意探索,使程式碼遭到誤解,Visual Studio 編輯器將不再允許雙向文字控制項字元在編輯介面上操作字元順序。 新的選項會導致這些雙向文字控制項字元與預留位置一起顯示。 雙向文字控制項字元仍會出現在程式碼中,因為此行為只會影響程式碼編輯器中轉譯的內容。
此功能可在 [工具\選項] 中控制。 在 [文字編輯器\一般] 頁面底下,有 [顯示雙向文字控制字元] 的選項,預設為核取。 核取時,所有雙向文字控制項字元都會轉譯為預留位置。 取消核取選項會還原為先前不會轉譯這些字元的行為。
如果 Unicode 字元屬於下列任一範圍,則會將其視為雙向文字控制項字元:U+061c、U+200e-U+200f、U+202a-U+202e、U+2066-U+2069。
開發人員社群有一個 在 17.0 版中可用的修正程式完整清單 。
CVE-2021-43877 .NET 弱點 ANCM 中存在權限弱點提高,當 .NET core、.NET 5 和 .NET 6 應用程式裝載於 IIS 內時,可能會允許權限提高。
CVE-2021-42574 雙向文字弱點雙向文字控制項字元可用來讓程式碼在編輯器中進行轉譯,與磁碟上所包含的字元不同。
2021 年 11 月 30 日發行
開發人員社群有一個 在 17.0 版中可用的修正程式完整清單 。
2021 年 11 月 16 日發行
開發人員社群有一個 在 17.0 版中可用的修正程式完整清單 。
2021 年 11 月 08 日發行
64 位元
Azure 雲端服務
buildPresets.targets
選項。 這可讓您在 CMake 專案中建置目標的子集。
/scanDependencies
旗標,用於輸出 CMake 專案的 C++20 模組相依性,如
P1689r4
中所述。 這是使用 CMake 建置模組型專案支援的步驟,我們正致力於在稍後版本中完成此支援。
-fsanitize=fuzzer
下支援 libfuzzer。 如需詳細資訊,請參閱
文件
。
_Check_return_
或
_Must_inspect_result_
標註的函式值,否則必須加以檢查。
gsl::not_null
的支援新增至程式碼分析。
_SILENCE_AMP_DEPRECATION_WARNINGS
。 如需詳細資料,請參閱
我們的 AMP 淘汰連結
。
VSSDK\VisualStudioIntegration\Common\Assemblies
資料夾。 如果您的組建依賴這些組件,請移轉您的專案以改用 NuGet 套件。 針對離線案例:
Git 工具
[說明] 功能表
如需詳細資料,請參閱上述連結
IntelliCode
JavaScript/TypeScript
.NET 6 SDK
<exception>
標記
UWP 延伸模組 SDK 的工具箱母體擴展
更新、LTSC 和部署
Web 工具
適用於 .NET Framework 的 WPF XAML 設計工具
.design.dll
和
Microsoft.Windows.Design.Extensibility
為基礎的模型已被取代。 如果您已經為 .NET (.NET Core) 建立
.designtools.dll
擴充功能,則相同的擴充功能適用於 .NET Framework 的新 WPF XAML 設計工具。 如需如何移轉至新擴充性模型的進一步資訊,請參閱下面的
移轉文件
。
如需詳細資訊,請按一下上述連結。
XAML 範例資料
如需詳細資訊,請按一下上述連結。
使用 .NET 的行動應用程式開發
Python 工具
C++ IntelliSense
![附加至處理序](media/17.0/17.0_P2_attach_to _process_3.png)
相依中斷點
這是新的中斷點,讓使用者僅在第一次叫用中斷點時,才能設定要啟用的中斷點。 偵錯時,僅在叫用必要條件中斷點時,Visual Studio 偵錯工具才會暫停相依中斷點上的應用程式。 您可以從 [設定] 視窗啟用 [只在叫用下列中斷點時啟用] 核取方塊,然後從您想要設定相依中斷點的下拉式清單中選取必要中斷點,以將任何中斷點轉換成相依中斷點。
中斷點 Gutter 改善
我們新增了新的中斷點字符,以指出使用者可以設定中斷點的位置。
以滑鼠右鍵按一下該中斷點字符會提供具有選項的新操作功能表;只需較少的點擊次數,即可快速建立進階中斷點 (條件式中斷點、追蹤點和暫存中斷點)。
暫時中斷點
這是新的中斷點,可讓使用者只中斷程式碼一次。 偵錯時,Visual Studio 偵錯工具只會針對這個中斷點暫停應用程式執行階段一次,然後在叫用之後立即將其移除。 您可以從設定視窗啟用 [叫用後移除中斷點] 核取方塊,將任何中斷點轉換成暫時中斷點。 或者,您可以使用中斷點裝訂邊中新的滑鼠右鍵操作功能表來設定此中斷點。
拖放中斷點
我們已新增中斷點的拖放手勢。 您現在可以保留中斷點,並在所需的程式碼上釋放,以將中斷點從某個位置移至另一個位置。 只要動作/條件變數位於內容中,其就適用於我們的進階中斷點。
方案總管中的外部來源節點
我們在 [方案總管] 中新增了新的 [外部來源] 節點。 這目前只會在偵錯時出現,且會顯示受控模組的來源並載入符號,當中包含來源伺服器或來源連結資訊。 偵錯時,具有來源伺服器資訊的任何已載入受控符號檔 (.pdb) 都會出現在這個節點底下。 您可以瀏覽任何其他方案總管資料夾之類的檔案,或按兩下項目,從來源伺服器下載檔案,並在 VS 編輯器中開啟檔案。
附加至處理序對話方塊改善
我們在 [附加至處理序] 對話方塊中新增了新的 [自動重新整理] 核取方塊,當檢查時會自動重新整理包含可用處理序的處理序清單。 從 [附加至處理序] 對話方塊新增 [從桌面選取任何視窗] 選項,讓使用者從桌面挑選任何執行中的視窗,並附加至其相關聯的處理序以進行偵錯。
記憶體傾印診斷分析
當發生 Stack Overflow 例外狀況時,尋找根呼叫框架可能會很困難且耗時。 我們最新的分析器提供呼叫堆疊的便利檢視,並移除重複及雜訊太多的畫面,以加快問題分析的速度。
將 VS Code 主題轉換為 Visual Studio 主題
我們已建立主題轉換器工具,可將 VS Code 主題轉換成在 Visual Studio 中運作。 在這裡試試看。
新的 Visual Studio 主題套件
預設 VS Code 主題現在可做為 Visual Studio 主題套件使用。 請在這裡查看主題套件。
將主題同步處理至 Windows OS
我們已新增將 Visual Studio 主題同步處理至 Windows 主題的功能,讓您的主題可以根據可用的環境光線量進行調整。 若要啟用此功能,請瀏覽至 [工具] > [主題] > [使用系統設定]。
色彩索引標籤
若要啟用色彩索引標籤,請瀏覽至 [工具] > [選項] > [索引標籤和視窗],然後啟用 [色彩化索引標籤]。
[Ctrl+Alt+ 向左鍵] 和 [CTRL+ALT+ 向右鍵] 現在會依詞根瀏覽。 例如,字串「HelloWorld」會將「Hello」和「World」識別為詞根。 在 [工具] > [選項] > [文字編輯器] > [一般] 中啟用 [詞根瀏覽] 會導致文字相關命令 (例如 TransposeWord) 與詞根互動。
在 [工具] > [選項] > [環境] > [預覽功能] 下,現在可以使用自動儲存。 如果啟用,當 Visual Studio 應用程式失去焦點時 (例如另一個視窗取得焦點),所有已變更文件都會儲存到光碟 (如果可能)。 如果有任何檔案無法儲存,則在使用者明確儲存檔案之前 (使用 Save 或 Save As... 命令),其都會保持已變更。
多插入號複製\貼上體驗
我們已改善多個插入號複製及貼上體驗。 先前,將多行貼入多個插入號中會導致在每個插入號處都複製整個剪貼板的內容。 現在,將多行貼入相同數目的插入號會將每行插入到個別的插入號中。 若要使用多個插入號,請按 Alt+Shift+ 滑鼠按一下 或 Alt+Shift+. 並使用 Ctrl+Shift+ 箭頭 鍵來展開選取範圍。 接下來,按 Ctrl+C 以複製多個選取項目中的文字。 使用 Alt+Shift+ 滑鼠按一下 ,為要貼上所需位置的每行建立多個插入號。 最後,按 Ctrl+V ,將每行貼在自己的插入號上。
此外,您可以使用 Alt+Shift+ 向上鍵或向下鍵 或是 Alt+Shift+ 滑鼠拖曳 來選取多個插入號。 先前,這些手勢會建立方塊選取。 現在,方塊選取會轉換成多個插入號。 相較於必須按一下精確位置以插入個別插入號,這個方法更為簡單且快速。 如果您想要在展開多重插入號選取時利用 Alt+Shift+ 方向鍵 和 Alt+Shift+ 滑鼠拖曳 來繼續使用方塊選取,請移至 [工具] > [選項] > [文字編輯器] > [進階] ,然後選取 [使用方塊] 選取項目。
當語言用戶端無法初始化時,Microsoft.VisualStudio.LanguageServer.Client 引進了自訂通知的新方法。
初始化工作現在會由工作狀態中心 (TSC) 追蹤。 如果初始化工作失敗,使用者可前往 TSC 取得錯誤的詳細資訊。 語言用戶端現在能夠自訂向使用者顯示的訊息,說明此失敗對他們所代表的意義,以及修正此問題可能採取的動作。 為了這麼做,我們會在 ILanguageClient 介面中引進一組新的 API。 這些新的 API 會導致 ILanguageClient 介面的中斷性變更,因此語言延伸模組需要參考新的套件,才能在 Visual Studio 2022 中運作。
以下是新的 API:
建議只有在失敗嚴重影響使用者目前正在處理專案的使用者體驗時,才將此屬性設定為 true。
新的 JavaScript/TypeScript 專案類型有新的支援,可讓您在 Visual Studio 中建立獨立的 Angular、React 和 Vue 專案。 將會使用您在本機電腦上安裝的架構 CLI 工具來建立專案。 這也表示範本版本是以您在本機電腦上擁有的 CLI 版本為基礎。
您將能夠在這些新專案內執行單元測試,並將其與 ASP.NET Core API 整合。 您可以在 這裡 找到文件
今年初 我們宣佈了 .NET 熱重新載入 ,這是一個偉大的專案,為眾多的 .NET 開發人員帶來熱重新載入。 我們從 Visual Studio 2019 中提供的第一個預覽版開始著手這趟旅程,並承諾在 Visual Studio 2022 中透過完整體驗來提供更多功能。 今天,我很榮幸能分享我們在 Visual Studio 2022 GA 版本中所完成內容的詳細資料。
對於任何不熟悉熱重新載入的新手,以下是快速簡介。 Visual Studio 中的熱重新載入體驗適用於受控 .NET 與原生 C++ 應用程式。 無論您正在處理的應用程式類型為何,熱重新載入的目標是盡可能讓您節省編輯之間重新啟動應用程式的次數,透過減少您等候應用程式重建、重新啟動、重新瀏覽至應用程式本身先前的位置等等,讓您更具有生產力。
我們讓您能夠編輯應用程式程式碼檔案,並立即將這些程式碼變更套用至執行中的應用程式 (也稱為「熱重新載入」),以達成此目的。 套用這些變更之後,只要在應用程式本身採取動作 (或透過某種計時器等等) 來重新執行程式碼,就會立即看到變更,不需要透過中斷點暫停應用程式!
如果您想要查看此功能的一些即時示範,您可以查看下列其中一個影片:
Visual Studio 2022 中 .NET 和 C++ 開發人員的熱重新載入體驗也經歷了重大改善。 工具列現在具有「熱重新載入」按鈕的目標實作,且外觀已改善、功能更多。
您會注意到的第一件事,是具有新圖示的新下拉式樣式按鈕。 此命令會從「套用程式碼變更」(從早期預覽版) 重新命名為「熱重新載入」。
展開按鈕會顯示快速存取功能,例如重新啟動執行中的應用程式、儲存時熱重新載入的加入切換,以及快速存取新的設定面板。
以下是每個新功能的詳細資料:
我們也新增了改良的粗略編輯對話方塊,可在不使用偵錯工具的情況下執行 .NET 應用程式時使用。
這個新的對話方塊有多個改善,例如:
如果您不想如同先前採取任何自動化動作,對話方塊也可讓您繼續編輯。
有一個已知的限制,這個新的對話方塊在使用偵錯工具時將無法在 GA 版本中使用,但在此案例中使其可供使用的工作將在未來的更新中完成。
使用 Visual Studio 2022 並利用偵錯工具啟動您的應用程式時,現在可以在偵錯工具 (F5) 下使用 [熱重新載入] 按鈕執行時,熱重新載入原生 C++ 應用程式。 使用 CMake 和 OpenFolder 專案建置的應用程式也支援熱重新載入。
此體驗由原生編輯後繼續提供技術支援,如需了解支援的編輯,請參閱我們的 文件 。
自從我們在 2021 年 5 月宣佈熱重新載入之後,.NET 開發人員所提出的一個很常見的問題就是「熱重新載入是否會與我的 .NET 應用程式架構/版本組合搭配運作?」。 在大部分情況下,我們已經盡最大的努力讓答案是肯定的,以下是重點摘要。
以下我們將展開上述摘要,並深入探討更多詳細資料。
使用 Visual Studio 2022 並使用偵錯工具啟動應用程式時,熱重新載入適用於大部分的應用程式架構,包括主控台、Windows Forms (WinForms)、WPF、UWP、WinUI 3* 和大部分類型的 ASP.NET Web 專案 (適用於程式碼後置編輯),包括 ASP.NET MVC、Web API,甚至是舊版 Web Forms 專案。 這份清單也只是一個範例。 真正的答案是您擁有 .NET 且正在使用 Visual Studio 受控偵錯工具的任何位置,您應該獲得基本的熱重新載入支援。
這表示即使是 Azure Functions 之類的專案,在此案例中也能運作正常。 我們鼓勵您嘗試組合,並讓我們知道您是否發現任何問題。
*根據預設,WinUI 3 會使用不支援熱重新載入的混合模式偵錯。 您可以在專案設定中修改此專案,方法是啟用受控偵錯工具,讓熱重新載入能夠正常運作。
當以大部分類型的 .NET 6 應用程式為目標時,現在可以使用熱重載,包括主控台、WPF、Windows Forms (WinForms)、ASP.NET Core MVC、Web API 和 Blazor 等專案類型。 我們知道有些開發人員有充分的理由或偏好在沒有偵錯工具的情況下啟動其應用程式,我們希望這項額外的功能可讓他們帶來價值,而幾乎不會影響啟動時間。
這項功能專屬於 .NET 6+,且未以 .NET 6 (.NET 5 或以下版本) 為目標的應用程式不支援「無偵錯工具」案例,且必須使用偵錯工具來存取熱重新載入功能。
另請注意,在我們的第一個版本中,「無偵錯工具」案例不支援所有專案類型。 具體而言:
開發人員若能夠同時使用 Visual Studio 2022 並處理以 .NET 6 為目標的應用程式,將享有完美且絕佳的熱重新載入體驗優點。
支援的重點:
以 .NET 6 為目標的開發人員將繼續在未來的 Visual Studio 2022 更新和 .NET 功能範圍及主要版本中取得更多改善。 我們剛剛開始!
*在尚未啟用使用 Visual Studio 偵錯工具時,在 Visual Studio 2022 GA 版本中支援 Blazor WebAssembly 的熱重新載入。 如果您透過 Visual Studio 啟動應用程式而不需偵錯工具,則仍可取得熱重新載入,我們正致力於在未來的 Visual Studio 更新中解決此問題。
許多 ASP.NET 案例現在已廣泛支援基本熱重新載入體驗。 最廣泛使用的功能是變更大部分 Web 應用程式類型的程式碼後置和其他 .NET 類別檔案的功能。 這項功能可在使用 Visual Studio 偵錯工具時運作,並出現在先前可以使用 [編輯後繼續] 的任何位置。
針對以 .NET 6 為目標的 ASP.NET Core 開發人員,有其他功能不適用於較低版本的 .NET,這包括下列改善:
注意:當您運作 Blazor Wasm 應用程式並使用 Visual Studio 2022 (17.0) 時,razor 頁面的熱重新載入只能在啟動沒有偵錯工具的應用程式時運作。 我們將在未來的更新中新增偵錯工具支援。
.NET 熱重新載入體驗是由 [編輯後繼續] 機制所提供,我們已進行改善來支援先前版本原本功能以外的其他編輯類型。 改善還包括:
[熱重新載入] 和 [編輯後繼續] 體驗都可以使用上述改進功能。
即使在最終版本中,您也應該注意一些不支援的案例:
同步命名空間 重構現在可在 [方案總管] 中專案或資料夾的 (右鍵) 功能表中取得,讓您輕鬆地同步命名空間以符合資料夾結構。
[方案總管] (右鍵) 功能表中現在提供背景程式碼分析組態。 在 [方案總管] 中的方案節點上按一下滑鼠右鍵,並選取 [分析及程式碼清除] 。 接下來,選取 [設定分析範圍] 以設定背景程式碼分析的範圍。
C# 語言工具
在 C# 8.0 中,我們引進了
可為 Null 的參考型別
,讓您宣告是否預期 Null。 若要使用可為 Null 的參考類型,您需要將
<Nullable>
enable
</Nullable>
元素新增至專案檔中,或將 #nullable enable pragma 新增至專案中的每個來源檔案。 為了協助簡化此程序,我們現在會自動為新的 .NET 專案包含
<Nullable>
enable
</Nullable>
。
在 C# 10.0 中,我們引進了
檔案範圍的命名空間
,讓您可以選擇不在命名空間內嵌套類別定義。 我們現在有一個重構功能,可將命名空間轉換成檔案範圍的命名空間。 為了使用檔案範圍的命名空間,您必須先將
<LangVersion>
preview
</LangVersion>
元素新增至專案檔中。 接下來,將游標放在命名空間上。 按下 (
Ctrl+
+
.
),以觸發 [快速動作與重構]
功能表。 選取 [轉換為檔案範圍的命名空間]
。
現在有一個重構功能,當套用至值類型時,會優先使用
is not null
而不是
is object
。 若要使用此新的重構功能,請將游標放在要進行類型檢查的位置上。 按下 (
Ctrl+
+
.
),以觸發 [快速動作與重構]
功能表。 選取 [建議使用 null 檢查而非類型檢查]
。
瀏覽至反向組譯的原始碼
根據預設,現已開啟瀏覽至 [反向組譯的來源],可讓您瀏覽至程式庫類型的宣告。 當您在原始程式碼中的程式庫符號和反向組譯來源上叫用 [移至定義] 時,即可瀏覽至 [反向組譯來源]。
編輯器增強功能
XML 註解現在會在
<summary>
標記內自動產生
<exception>
標記,讓您可在方法明確引發例外狀況時新增描述。
在 Visual Studio 2019 中,我們發行了 繼承邊界 ,其會將圖示新增至代表程式碼實作和覆寫的邊界。 按一下繼承邊界圖示會顯示您可以選取以瀏覽的繼承選項。 在此版本中,預設會啟用繼承邊界。 若要停用繼承邊界,請移至 [工具] >[選項] >[文字編輯器] >[C#] 或 [基本] >[進階] ,然後取消選取 [啟用繼承邊界] 。
with
運算式 (
record struct Point(int X, int Y);
、
var newPoint = point with { X = 100 };
)。
global using
指示詞可避免在程式的許多檔案中重複相同的
using
指示詞。
dictionary?.TryGetValue(key, out value) == true
。
if (e is MethodCallExpression { Method.Name: "MethodName" })
)。
ToString
的基底記錄。
(existingLocal, var declaredLocal) = expression
)。
async
方法的 AsyncMethodBuilder。
#line (startLine, startChar) - (endLine, endChar) charOffset "fileName"
) 的
#line
指示詞。
var f = short () => 1;
)。
namespace X.Y.Z;
)。
如需更多詳細資料,請參閱 C# 語言功能狀態 \(英文\) 和 重大變更 \(英文\)。
我們已大幅改善 Razor 編輯器的效能。
我們已增強格式設定和縮排,使其更可靠且更快速。
我們已新增新的 Razor 色彩! 您可以在 [工具] > [選項] > [環境] > [字型和色彩] 中自訂這些色彩。
TagHelpers 現在會以色彩標示,並且具有快速資訊和 IntelliSense 完成工具提示中的分類支援。
我們有 非常 早期的實驗預覽,可在 Linux 容器、WSL 和透過 SSH 連線等遠端環境上執行測試! 雖然這是一個非常有價值的功能,但我們要求您耐心等候,因為這項功能仍處於非常早期的實驗狀態,我們仍在收集意見反應。 您可能不會體驗到往常獲得的平滑度,如您可想像,有許多邊角案例,我們要如何從 Visual Studio 溝通及管理連線環境。 以下是使用此實驗版本的遠端測試需求:
如何試用遠端測試?
testenvironments.json
來指定。 json 檔案結構遵循下列結構描述:
testEnvironments.json
中指定環境:
{
"name": "<name>",
"localRoot": "<path to local environment>", // optional
"type": "docker",
"dockerImage": "<docker image tag>",
例如:{
"version": "1",
"environments": [
"name": "linux dotnet-core-sdk-3.1",
"type": "docker",
"dockerImage": "testenv"
- 以下是執行以 .NET 3.1 為目標測試的 Dockerfile 範例。
FROM mcr.microsoft.com/dotnet/core/sdk:3.1
- 使用下列命令 (包括結尾的 ".") 來建置您的容器:
docker build -t <docker image name> -f <path to Dockerfile> .
- 本機 WSL2 連線
- 您必須在本機電腦上啟用 WSL2 整合。
- 您可以在解決方案根目錄中的
testEnvironments.json
中指定環境,並遵循此結構描述:{
"version": "1",
"environments": [
"name": "WSL-Ubuntu",
"type": "wsl",
"wslDistribution": "Ubuntu"
- SSH 連線
- 移至 [工具] > [選項] > [跨平台] > [連線管理員] 來新增或移除 SSH 連線。 選取 [新增] 可讓您輸入主機名稱、連接埠,以及您需要的任何認證。
- 您可以在解決方案根目錄中的
testEnvironments.json
中指定環境,如下所示:{
"version": "1",
"environments": [
"name": "ssh-remote",
"type": "ssh",
"remoteUri": "ssh://user@hostname:22"
測試總管 [實驗性] 中的熱重新載入:現在可以使用幕後熱重新載入技術來加速測試體驗的新實驗功能。 這表示,在第一次測試回合 (仍需要完整組建) 之後,您就可以進行次要變更、執行測試,且會反映所有更新,而不必再次執行完整組建。 若要開始使用並深入了解注意事項,請參閱下列詳細資料:
- 此體驗僅適用於以 .NET 6 為目標的專案,您必須移至 [工具] > [選項] > [測試] 來加入宣告
啟用此選項時,即使編輯器中有未儲存的變更,您的測試也會更新。 我們不會建置,因此 bin 資料夾中磁碟上的二進位檔已過時。 這表示您可能會看到磁碟上的內容與 Visual Studio 中測試結果之間的差異。 若要解決這些問題,以及在簽入之前,請確定您使用 (Ctrl+Shift+B) 執行完整組建。 任何明確的組建都會以一般完整組建測試結果取代熱重新載入測試結果。
熱重新載入無法挑選某些類型的編輯,在這些情況下,其會預設回到執行完整組建的舊行為。 另請注意,只有 Visual Studio 中的變更正在進行追蹤,編輯器中的不透明案例 (例如變更目標) 可能會預設為需要完整組建。
某些大型變更 (例如重新命名 1000+ 方法名稱) 可能需要更長的時間才能進行熱重新載入,而不只是重新建置。 在這些情況下,會在輸出中列印訊息,提示使用者執行完整重建,而不是等待熱重新載入。
測試總管中的熱重新載入尚未提供堆疊追蹤。 如果您需要使用堆疊追蹤,建議您執行完整的組建。
在測試總管中顯示 (Ctrl+E,S):在 [測試總管] 中顯示,可讓您從游標在編輯器測試方法中的位置跳至測試在測試總管中的位置。 這可能會提醒您使用稱為「與使用中文件同步處理」的類似功能,保留您目前在 [方案總管] 中醒目提示運作的文件。 這是開發人員社群中投票數最高的項目之一,因此感謝各位投票並協助我們優先處理這項功能! 您也可從編輯器的右鍵功能表、CodeLens 測試字符,以及在 [方案總管] 中按一下滑鼠右鍵使用 [在測試總管中顯示]。
Web 負載測試和自動程式化 UI 測試支援更新:Visual Studio 2022 中提供 Web 負載測試錄製器。 自動程式化 UI 測試錄製器不會包含在 Visual Studio 2022 中。 您仍可以在 Visual Studio 2022 中撰寫程式碼來執行自動程式化 UI 測試,並建立新的測試,但錄製器會仰賴無法移植的 32 位元相依性。 您仍可以並存安裝 Visual Studio 2019,以使用自動程式化 UI 錄製器。 提醒您,在 2019 年,Web 負載測試和自動程式化 UI 測試已被取代,我們確實計劃從產品中加以移除,將對使用者的影響降到最低。 強烈建議有興趣進行 Web UI 測試的使用者採用新的跨平台和開放原始碼 Web 測試架構 Playwright。 除了支援所有主要瀏覽器,以及更妥善處理非同步程式碼之外,Playwright 還內建測試錄製功能。
信任的位置
- 做為「信任設定」改造的一部分,我們已移除「網頁標記」檢查,並在嘗試開啟程式碼 (例如檔案、專案或資料夾) 時,新增了警告對話方塊,並且會在嘗試開啟先前尚未受到信任的程式碼 (例如檔案、專案或資料夾) 時顯示該對話方塊
- 程式碼現在可在目前資料夾或父資料夾位置上受到信任
- 使用者建立的專案會自動新增至使用者信任的位置清單
- 您可以略過 Visual Studio 功能所建立暫存位置的信任檢查
在 IDE 內開啟內容 (例如解決方案、專案、檔案或資料夾) 之前,我們會確認資料夾位置先前是否受信任。
如果偵測到不受信任的程式碼,我們會顯示警告對話方塊,提醒您安全性含意,並要求您在正常 IDE 作業之前信任程式碼。
注意:雖然此功能目前預設為關閉,但您可以透過 [選項] > [信任設定] > [在開啟內容之前要求信任決策] 來啟用此功能
外部來源節點更新
[方案總管] 中的 [外部來源] 節點現在也支援 C++。 此外,我們已新增新的子節點,可為您提供符號尚未載入的所有模組。
您也可以使用滑鼠右鍵操作功能表,直接從方案總管載入符號,讓模組可以出現在外部來源節點中。
[外部來源] 節點的檔案現在也會依字母順序排序。
已更新和重新整理的圖示
- 做為重新整理 Visual Studio 2022 使用者介面目標的一部分,您會根據一致性、可讀性和熟悉性,在 IDE 中尋找新重新整理及更新的圖示。
XAML 熱重新載入
我們已更新 XAML 熱重新載入設定和應用程式內工具列,讓您清楚了解設定和應用程式內體驗是與 XAML 熱重新載入有關,而不是與 .NET 熱重新載入有關。
我們也已簡化設定窗格,更妥善地將通用選項組織在一起。
XAML Live 預覽
XAML Live Preview 現在可供 WPF、UWP、WinUI 和 Xamarin.Forms 開發人員在 Android Emulator 或 UWP 傳統型應用程式中執行其應用程式。 Live Preview 會擷取執行中的應用程式使用者介面,並將其導入 Visual Studio 內的固定視窗。 這可讓您更輕鬆地使用 XAML 熱重新載入來變更應用程式,同時在 Visual Studio 本身看到這些變更,而不需要在進行即時 XAML 程式碼變更時,在執行中的應用程式與 Visual Studio 之間來回定位。
開始進行之前:
- 使用偵錯工具啟動支援的應用程式
- 透過輸入 [XAML Live 預覽] 進行快速搜尋,或使用應用程式內工具列的 [以 XAML Live 預覽顯示] 按鈕,以開啟 XAML Live 預覽
一旦體驗啟動後,即可使用下列功能:
- 捲動和縮放:您可以移動瀏覽及縮放擷取應用程式 UI 的視窗,這可讓您符合顯示完整應用程式的需求,或只顯示您要嘗試編輯的部分。 移動瀏覽及捲動適用於觸控板 (兩指捲動)、滑鼠滾輪或 CTRL + 按一下以拖曳內容。
- 尺規:您可以新增一或多個水平/垂直尺規來重疊執行中的應用程式。 然後,您可以使用滑鼠或鍵盤將這些行移至位置。 使用鍵盤移動尺規時,使用方向鍵進行精確定位,並使用 Ctrl + 方向鍵進行快速定位。 您也可以選取尺規 (按一下尺規) 然後按刪除鍵來刪除尺規。
- 元素選取和資訊提示:使用元素選取時,您可以使用您可能從即時視覺化樹狀結構或應用程式內工具列中使用的相同功能來選取您要編輯的 XAML 元素。 選取之後,您也可以啟用新的「資訊提示」功能,以取得所選元素的其他資訊,例如字型、色彩、邊界/邊框間距資訊等等。 使用元素選取時,請考慮啟用預覽選取項目 - 可透過 [即時視覺化樹狀結構] 工具列按鈕或是 [偵錯] > [選項] > [熱重新載入] 設定 - 移至來源 XAML。
- Windows 切換:您可以控制擷取哪些應用程式視窗。
已改善 XAML 繫結體驗
- 已改善屬性偵測器中的資料繫結圖示。 現在,您可以按一下屬性旁的「圓柱」圖示,以快速存取資料繫結對話方塊,且您可以按一下「x」圖示來清除繫結。
- 已在 [快速動作] 中新增 [繫結] 索引標籤,因此只要按幾下 XAML 設計工具即可建立繫結。
- 已將 [目標屬性] 下拉式方塊新增至 [資料繫結] 對話方塊,以隨時隨地選取屬性。
開發人員社群的熱門投票問題
- 停用
Place 'else' on a new line
時,不正確的 C++ 格式設定。
- 在編輯後繼續檢查是否有任何程式碼更新時對話方塊凍結
- Win 11 - Hypervisor 下的 VS Android 模擬器啟動問題
- 在編輯後繼續檢查是否有任何程式碼更新時對話方塊凍結
- Win 11 - Hypervisor 下的 VS Android 模擬器啟動問題
- 無法部署到 iPhone,錯誤 MT1001:在指定的目錄中找不到應用程式
- 無法偵錯多個 dotnet 5 Azure Functions
- 偵錯 UWP 應用程式時,Visual Studio 變得沒有回應
- Blazor WebAssembly:關閉瀏覽器時執行熱重新載入會導致無法協助的例外狀況
- Visual Studio 當機而沒有理由
- 在 Platform Toolset 143 中使用 std:c++lastest 時,C++ 語法著色無法運作
- 在檔案中尋找不適用於 vs2022 Preview 3
- Visual Studio 在分支變更之後不會重新載入所有已變更的專案檔
- 啟動語言伺服器時發生錯誤
- 以滑鼠右鍵按一下 [方案總管] 中的任何項目然後選擇 [簽入],會提供不尋常的訊息。 無法簽入變更。
- 當建置期間太多組建記錄檔輸出 (例如:診斷詳細資訊) 時,Visual Studio UI 沒有回應
- 使用 C++ 進行 Linux 開發 - 靜態連結錯誤
- VS2022 中的 T4 範本需要不相容的 usings
- C++20 模組無法挑選來自不同模組的範本特製化/多載
- 在 [Live Share] 工作階段中儲存檔案會開啟 [另存新檔] 對話方塊,而不是直接儲存檔案
- C++ 專案無法在啟動時重新載入專案外部的檔案
- 使用函式指標進行錯誤編譯回歸
- 錯誤診斷模棱兩可的操作員呼叫 (C2593) 與 /permissive- 和 friend
- 升級至 16.10 之後,Xamarin.Forms UWP/IOS 的熱重新載入無法運作
- 載入 Entitlements.plist 範本時發生錯誤
- dllimport constexpr 預設建構函式的 Intellisense 錯誤
- 系統找不到指定的檔案 (在按兩下組建錯誤訊息進行瀏覽時)。
- VS2022 中不再建置 C++ 專案:找不到組件 'mscorlib.dll'
- VS2022 Preview 2.1 中的 Razor 編輯器速度緩慢
- C++20 的 Intellisense 失敗
- PackageId:Microsoft.WebView2.arm64;PackageAction:Install;ReturnCode:-2147219199
- 分析器 C26110 的鎖定警告不正確
- 16.10 升級會中斷 MSTest DataSourceAttribute 與 testrunconfig
- MSVC 全域最佳化程式會導致輸出不正確
- IDE 凍結,索引標籤在未知條件下閃爍
- 新增使用 TLS 回呼檢測 dll 的支援 (透過 vsinstr.exe 檢測)
- VS2019 16.10 ASP.NET WEBFORM中不能选择事件
- MFC 單一文件專案中的嚴重失敗 (HRESULT: 0x8000FFFF (E_UNEXPECTED) 的例外狀況)
- 透過特製化選擇的主要範本會導致編譯錯誤
- 無法從 Preview 1.1 更新至 Preview 2.0。 在相依性關係圖中偵測到迴圈:Microsoft.VisualStudio.ComponentGroup.UWP.VC
- 在 Windows Server 2022 上安裝 Visual Studio 2022 Preview 失敗。
- 使用 [全部建置] 時,Visual Studio 2022 Preview 1 會損毀 IDE。
- 使用 Android Emulator 進行 Xamarin Android 偵錯當機,並重新啟動 Visual Studio 2022。
- 無法安裝任何舊版的 VS。 下載失敗,因為簽章無效
- 程式碼分析/PREfast 警告 CppCoreCheck::PointerSafetyXtension::SearchSmartPtrsAndReferences 中 C26404、C26406、C26407 效能回歸
- 當變數為全域且類型為 char const 時,發生 std::to_array 的內部編譯器錯誤
- 外部標頭的編譯錯誤
- 在 Lambda 中使用結構化繫結時發生錯誤 C3493 與 /std:c++latest
- 安裝 Python 工具時,傳送意見反應按鈕無法在 VS 2022 中運作
- 16.10 更新之後,Aspx 檔案中斷
- C++ 編譯器針對 constexpr 方法會產生無效程式碼
- 宣告 const 時,未使用的變數不會產生警告
- C++ 模組名稱衝突
- GC 會在 c++/cli ref 類別的方法呼叫期間進行收集
- 使用 WebDeploy 專案發佈 Python Django 失敗,因為 Visual Studio 更新為 16.9
- ICE:針對 /std:c++latest 最佳化 ARM64
- VS 16.3.0 .NET Core 3.0 Blazor Server 應用程式原始程式碼呈現灰色,並且在部署後遺失 IntelliSense
- 在鑰匙圈中找不到 iOS 程式碼簽署索引鍵 'iPhone Distribution: Microframe Corp
(xxxxx)'
- [診斷工具] 視窗會以微型方式載入,且無法正確調整大小。
- 編譯器錯誤 2694 嘗試在類別上呼叫 make_shared,並在 MSVC 16.9 Preview 2 上擲回解構函式。
- 處理快照集時發生錯誤,無法處理受控堆積。
- MSVC 允許 new-expression 中預設初始化的 const int。
- 在「複雜」STL 標頭中收到警告 C5219。
- 工具提示封鎖搜尋結果。
- Visual Studio 提供了一個奇怪的例外狀況。
- Intel C++ 編譯器 ICL 發生編譯失敗,因為使用標頭檔中的概念不受 ifdef __cpp_lib_concepts 保護。
- 使用 /Zc:preprocessor 展開 __pragma(optimize) 時發生內部編譯器錯誤。
- 未評估內容中 Lambda 內的「func」類型不正確。
- 提供 vsconfig 時,Visual Studio 安裝程式當機
- 在依精靈新增對話方塊類別之後,取得建置錯誤預設範本 MFC dll 專案。
- 適用於原生桌面開發 C++ 的 Visual Studio 離線安裝無法正確運作。
- 透過 Visual Studio 連線到 Azure VSTS 專案會造成 UI 停止回應。
- 如果使用較大的字型,選項內的文字輸入框將無法讀取。
- Visual Studio 在資料夾中新增新項目會停止回應。
- 編輯 js/cshtml 檔案時,常數 Nullreference 例外狀況。
- 啟動遠端語言伺服器 C#/Visual Basic 語言伺服器用戶端時發生錯誤。
- 當 /E 與 /experimental:preprocessor 和 __pragma 搭配使用時,發生內部錯誤。
遵循以下連結,查看所有已知問題和 Visual Studio 2022 中可用的因應措施。
意見反應與建議
我們很希望聽聽您的意見! 您可以使用安裝程式或 Visual Studio IDE 右上角的 [傳送意見反應] 圖示,或從 [說明] > [傳送意見反應] 中回報問題或建議功能。 您可以使用 Visual Studio 開發人員社群來追蹤您的問題,您可以在其中新增留言或尋找解決方案。 您也可以透過我們的即時聊天支援取得免費的安裝協助。
善用「開發人員工具部落格」網站中的見解與建議,讓您能夠隨時取得所有新版本的最新資訊,以及涵蓋各類功能的深入探討文章。