簡體   English   中英

C# Visual Studio 服務調試“當前不會命中斷點。沒有為此文檔加載任何符號”

[英]C# Visual Studio Service Debugging "The breakpoint will not currently be hit. No Symbols have been loaded for this document"

Visual Studio 的新手和 C# 的新手。 在 Visual Studio 2017 中構建一個名為 Transactional Messaging 的 C# windows 服務,它依賴於一個名為 Outbound Messaging 的項目。 當我開始調試並嘗試在出站消息文件上添加斷點時,我得到

“當前不會命中斷點。沒有為該文檔加載任何符號”

據我所知,VS 僅無法加載以下 pdb 文件:log4net.dll、Castle.Windsor.dll 和 Castle.Core.dll。 我沒有向事務消息服務中的文件添加斷點的問題。 我無法識別行為模式或永久修復,所以此時錯誤似乎是隨機的。 前一分鍾我認為我找到了一個修復程序,但當我在當天晚些時候嘗試使用該修復程序解決同一個錯誤時,我沒有運氣。 我懷疑最近的一次停電導致我的計算機意外關閉,因為它看起來可以緩存 pdb 文件,但有人告訴我這不太可能。

我按照以下步驟調試服務:

  1. 通過 Windows 服務小程序停止事務性消息服務
  2. 使用 Debug 文件夾中的installutil /u TransactionalMessaging.exe通過 VS 命令行卸載 Transactional Messaging Service
  3. Visual Studio 中的清潔事務消息傳遞解決方案
  4. 在 Visual Studio 中構建事務性消息傳遞解決方案(有一次修復是在解決方案資源管理器中右鍵單擊解決方案的各個方面並單獨構建)
  5. 使用 Debug 文件夾中的installutil TransactionalMessaging.exe通過 VS 命令行安裝事務性消息服務
  6. 通過 Windows 服務小程序啟動 Transactional Messaging Service
  7. 在 VS 中,調試 > 附加到進程 > 事務性消息傳遞
  8. 嘗試向出站消息服務中的文件添加斷點,這讓我出現了上述錯誤。

我嘗試解決此錯誤的步驟:

  1. Debug > Windows > Modules 手動加載每個模塊的符號(無法找到 log4net.dll、Castle.Windsor.dll 和 Castle.Core.dll 的 pdb 文件)模塊圖片
  2. 在上面的步驟 2 和 3 之間完全刪除 bin 和 obj 文件夾
  3. Project > Project properties > Build > Advanced > Debugging Information:完整(用於事務性消息傳遞和出站消息傳遞)

我不確定這是否是對 VS、C# 或代碼庫缺乏了解。 任何見解表示贊賞,我已經過了谷歌搜索階段並發布了一個新問題作為最后的手段。

當我更改項目 A 中的代碼並忘記編譯它時,我通常會收到此消息。
引用項目 A 的另一個項目 B 在屏幕上顯示了 A 的最新源代碼,但以 A 的過時程序集啟動。因此它無法啟用斷點,因為代碼與程序集不匹配。

還有一件事,在我看來這是一個錯誤和麻煩,但根據 MS 的說法是設計使然(我問過他們):
自 Visual Studio 2015 起,項目 B 的編譯不會自動包含修改后的引用程序集,在此示例中為程序集 A。B 中某處存在 A 的本地副本,而是使用該副本。 與上面相同的結果:最新的代碼,但過時的程序集。 而不是編譯,你必須重建它!

還有一件事:
您必須針對 DEBUG 模式進行編譯。 在發布模式下,默認項目設置不允許正確調試,例如在 VS 2008 中。

您不能附加調試器,因為您沒有這樣做的權利。 您只需翻轉注冊表中的某個位即可獲得此權利。

看我之前的回答:

同時以管理員身份啟動 VisualStudio 並允許不同用戶自動調試進程:

 reg add "HKCR\AppID\{E62A7A31-6025-408E-87F6-81AEB0DC9347}" /v AppIDFlags /t REG_DWORD /d 8 /f

如果上面沒有任何幫助,請確保您的文件是從相關項目中打開的,而不是從另一個(舊的)項目中打開的。

例子:

  • 你在一個項目上工作,關閉了 VS,但你在 VS 中打開了文件(選項卡)。

  • 將您的項目復制到一個新文件夾並打開解決方案。 文件(選項卡)將從舊目錄加載,如果你想調試,那么你無法調試,直到你關閉它們並從當前文件夾重新加載它們。

我非常接近重新安裝我的 VS,因為其他答案對我沒有任何幫助,但幸運的是我在我的項目中意識到了這一點,我現在可以調試了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM