2

我無法在最簡單的VSIX項目中調試最簡單的VS包。如何調試在Visual Studio 2015中創建的VSIX中的Visual Studio包

重現步驟:

  1. 創建一個VSIX項目:文件/新建/項目/擴展/ VSIX項目

  2. 添加的Visual Studio包:右鍵單擊在解決方案的項目節點Explorer並選擇添加/新建項目/可擴展性/ Visual Studio包裝

  3. 打開新創建的pa ckage文件(VSPackage1.cs)將斷點上線68的Initialize()第一線,base.Initialize()

  4. F5開始調試

這將啓動的Visual Studio 2015年的一個實驗實例中,與包安裝(確認工具/擴展和更新...),但斷點被禁用:

breakpoint disabled

以上步驟來自新創建的VSIX項目的入門指南(index.html),所以它應該已經工作。

附加信息:

  • 解決方案配置爲調試,平臺是任何CPU
  • 該項目的調試屬性自動擁有啓動外部程序設置爲C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe命令行論據設置爲/rootsuffix Exp
  • 我設置個拷貝調試符號到輸出目錄True,之後的projectname.pdb文件中正確地出現在bin\Debug
  • bin\Debug\projectname.vsix文件包含projectname.pdb
  • 該項目包括在資產source.extension.vsixmanifestType=Microsoft.VisualStudio.VsPackage
  • 我嘗試添加該項目在資產source.extension.vsixmanifestType=Microsoft.VisualStudio.MefComponent但這似乎並沒有太多。在此之後的第一次運行中,斷點似乎已啓用,但未被擊中。在第二次和以後的運行中,斷點在運行期間回到禁用狀態。
  • 我試着改變清單中的版本,但是我注意到了任何影響。
  • 我試着單獨運行實驗實例,並使用調試器附加到實驗實例上,但其運行方式與直接啓動F5時的操作方式沒有什麼不同。
  • 我嘗試在Initialize方法中添加Console.WriteLine語句,但我在Output窗口中找不到調試文本。
  • 我試過x86平臺而不是任何CPU,但結果相同。
  • 一位同事遵循相同的步驟,得到了相同的結果,所以它可能不是特定於我的電腦。 (我邀請任何人請遵循相同的步驟,並證明我錯了,或者被發現在我的腳步的錯誤。)

這一切似乎表明,在VS包是沒有得到初始化,雖然這明顯是安裝。我錯過了什麼?如果相關,here是VS包的源代碼,而here是整個虛擬項目。

如果您需要更多信息,請讓我知道。

回答

1

VSPackages僅在需要其功能 時才加載到Visual Studio中。例如,當Visual Studio 使用項目工廠或VSPackage實現的服務時,會加載VSPackage。 此功能稱爲延遲加載,只要有可能提高性能的 即可使用此功能。

要在VS啓動時自動加載包,通常需要在主包類中添加ProvideAutoLoad屬性。

有關更多詳細信息,請參閱Loading VSPackages文檔。

+0

工作就像一個魅力,謝謝! – janos

相關問題