Visual Studio 客戶經驗改進計畫

Visual Studio 客戶經驗改進計畫 (VSCEIP) 是設計來協助 Microsoft 隨著時間改善 Visual Studio。 此計畫會收集有關錯誤、電腦硬體以及使用者如何使用 Visual Studio 的資訊,而不會中斷使用者在電腦上的工作。 所收集的資訊可協助 Microsoft 找出應改善的功能。 本文件涵蓋如何選擇加入或退出 VSCEIP,並提供一些有關我們所收集的資料類型及其使用方式的資訊。 它也提供有關延伸模組作者如何避免意外洩漏個人或機密資訊的祕訣。

選擇退出診斷資料收集

了解我們所收集的資料和其存取和保留之條件約束的用途之後,我們建議您針對 Visual Studio 和 Windows 使用預設的隱私權設定。 不過,您可以選擇退出 Visual Studio 經驗改進計畫。 當您選擇退出時,您就退出選擇性診斷資料收集。 有些診斷資料收集式必要的,以確保 Visual Studio 安全無虞、處於最新狀態且如預期般執行。 必要的診斷資料收集不會受到您的退出 VSCEIP 選擇影響。

注意

如果您想要檢視或刪除個人資料,請檢閱 GDPR 的 Windows 資料主體要求中的 Microsoft 指引。 如果您在尋求 GDPR 的一般資訊,請參閱服務信任入口網站的 GDPR 區段。

注意

VSCEIP 遙測選擇加入或退出設定不適用於在 Visual Studio 中「回報問題」。 當您回報問題時,只有在您藉由按一下 [提交] 來提供權限時,才會收集記錄並傳送給 Microsoft。 如果您想要在提交至「回報問題」之前管理記錄,請參閱意見反應資料隱私權以取得詳細資料。

選擇加入或退出

VSCEIP 預設為開啟。 您可以遵循下列指示將它關閉,或重新開啟:

  1. 在 Visual Studio 中,選擇 [說明]>[隱私權]>[隱私權設定]

    [Visual Studio 經驗改進計畫] 對話方塊隨即開啟。

  2. 若要選擇退出,請選取 [否,我不願意參與],然後選取 [確定]。 若要選擇加入,請選取 [是,我願意參與 (建議使用)],然後選取 [確定]

    Visual Studio Experience Improvement Program dialog

登錄設定

如果您安裝 Build Tools for Visual Studio,您必須更新登錄以設定 VSCEIP。 企業客戶可建構群組原則,透過設定以登錄為基礎原則的方式,選擇加入或退出 VSCEIP。

相關的登錄機碼與設定如下:

  • 在 64 位元作業系統上,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\16.0\SQM
  • 在 32 位元作業系統上,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\16.0\SQM
  • 啟用群組原則時,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\VisualStudio\SQM
  • 在 64 位元作業系統上,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\17.0\SQM
  • 在 32 位元作業系統上,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\17.0\SQM
  • 啟用群組原則時,機碼 = HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\VisualStudio\SQM

項目 = OptIn

Value = (DWORD)

  • 0 是選擇退出 (關閉 VSCEIP)
  • 0 是選擇加入 (開啟 VSCEIP)

警告

不正確地編輯登錄可能會對系統造成嚴重的損害。 變更登錄之前,您應該先備份電腦所有的重要資料。 如果 您在套用手動變更之後遇到問題,也可以使用 [上次的正確設定] 啟動選項。

如需 VSCEIP 收集、處理或傳輸之資訊的詳細資訊,請參閱 Microsoft 隱私權聲明

Visual Studio 所收集的系統產生記錄檔

Visual Studio 會收集系統產生的記錄來修正問題並改善產品的品質。 以下是一些有關我們所收集的資料類型及其使用方式的資訊。 它也提供有關延伸模組作者如何避免意外洩漏個人或機密資訊的祕訣。

收集的資料類型

Visual Studio 會收集系統針對損毀、UI 無回應,和高 CPU 或記憶體使用量而產生的記錄檔。 我們也會收集在產品安裝或使用期間遇到之錯誤的相關資訊。 收集的資料會根據錯誤而異,而且可能包括堆疊追蹤、記憶體傾印,以及例外狀況資訊:

  • 針對高 CPU 使用量和無回應,會收集相關 Visual Studio 執行緒的堆疊追蹤。

  • 針對部分執行緒的堆疊追蹤不足以判斷問題根本原因的情況,例如當機、無回應或高記憶體使用量,我們會收集記憶體「傾印」。 傾印代表在發生錯誤時的處理序狀態。

  • 針對非預期的錯誤情況,例如,嘗試寫入至磁碟上的檔案時發生例外狀況,我們會收集例外狀況的相關資訊。 資訊包括例外狀況的名稱、發生例外狀況之執行緒的堆疊追蹤、與例外狀況建立關聯的訊息,以及與特定例外狀況相關的其他資訊。

    下列收集資料範例會顯示例外狀況名稱、堆疊追蹤和例外狀況訊息:

    "Reserved.DataModel.Fault.Exception.TypeString": "System.IO.IOException",
    "Reserved.DataModel.Fault.Exception.StackTrace": "System.IO.__Error.WinIOError(Int32,String)\r\n
    System.IO.FileStream.Init(String,FileMode,FileAccess,Int32,Boolean,FileShare,Int32,FileOptions,SECURITY_ATTRIBUTES,String,Boolean,Boolean,Boolean)\r\n
    System.IO.FileStream..ctor(String,FileMode,FileAccess,FileShare,Int32,FileOptions,String,Boolean,Boolean,Boolean)\r\nSystem.IO.StreamWriter.CreateFile(String,Boolean,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean,Encoding,Int32,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean)\r\n
    System.IO.File.CreateText(String)\r\n
    Microsoft.VisualStudio.Setup.Services.FileSystem.CreateText(String,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.WriteChannelManifest(IChannelManifest,String,String)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.CacheManager.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.ChannelManager.\<UpdateAsync>d__37.MoveNext()\r\n”,
    "Reserved.DataModel.Fault.Exception.Message": " The process cannot access the file 'C:\\Users\\[UserName]\\AppData\\Local\\Microsoft\\VisualStudio\\Packages\\_Channels\\4CB340F5\\channelManifest.json' because it is being used by another process."
    

我們如何使用系統產生的記錄檔

判斷錯誤根本原因的工作流程,會視錯誤類型和其嚴重性而有所不同。

錯誤分類

根據記錄檔,錯誤會分類並計算,以排列調查的優先順序。 例如,我們可能會發現在產品版本 <x> 的 "System.IO.FileStream.Init" 已發生 500 次 “System.IO.__Error.WinIOError”,而且在該版本中有最高的發生率。

追蹤用的工作項目

對於個別已排列優先順序的錯誤,已建立工作項目並指派給工程師進行調查。 這些工作項目通常包含分類、優先順序和與錯誤類型相關的診斷資訊。 這項資訊衍生自已收集到之系統針對錯誤所產生的記錄檔。 例如,損毀的工作項目可能包含發生損毀處的堆疊追蹤。

錯誤調查

工程師會使用工作項目中可用的資訊來判斷錯誤的根本原因。 在某些情況下,他們需要比出現在工作項目中更多的資訊,在此情況下他們會參考已收集到的原始系統產生記錄檔。 例如,工程師可能會檢查記憶體傾印以了解產品損毀。

延伸模組作者的祕訣

延伸模組作者應該限制個人資訊的曝光,方法是不以其模組、類型和方法的名義來使用個人或其他機密資訊。 如果損毀或發生類似的錯誤狀況並在堆疊上具有該代碼,則會收集該資訊成為系統產生的記錄檔的一部分。