![](/img/trans.png)
[英]The breakpoint will not currently be hit. No symbols have been loaded for this document in Unity
[英]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 文件,但有人告訴我這不太可能。
我按照以下步驟調試服務:
installutil /u TransactionalMessaging.exe
通過 VS 命令行卸載 Transactional Messaging Serviceinstallutil TransactionalMessaging.exe
通過 VS 命令行安裝事務性消息服務我嘗試解決此錯誤的步驟:
我不確定這是否是對 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.