none
如何可以Publish 程式碼時一併發佈pdb檔案 RRS feed

  • 問題

  • 當build 程式時, 會在bin\Debug下自動生成與exe同一版本(相同GUID)的pdb檔案,
    因此, 當在Visual Studio內執行Start Debugging時,
    遇到run-time error 會提示以下三個資訊:
    1) 程式碼檔案: 出錯在哪一程式檔內
    2) 函數
    3) Line number: 在程式碼檔案的哪一行出錯

    但當經過在Project->Properties->Publish內的Publish now,
    發佈出來的assembly, 運行出錯時, 已缺少了Line number這個資訊,

    經瞭解後應該是發佈assembly時, 缺少了相關的pdb檔案(programming database)

    但本人已根據指引在Project->Properties->Debug的configuration選"release",
    及在Build的 Debug info選"full", 仍無法發佈pdb檔案

    是什麼部分出錯呢?

    Visual Studio : 2008
    .net framework : 3.5
    Project type: Windows Forms Application

    2013年8月26日 上午 10:30

解答

  • 您可以設定專案的屬性, 點選[發行]頁籤, 勾選[顯示所有檔案], 再將pdb檔案的發行狀態從[排除]改成[包含]即可
    • 已標示為解答 Polywan 2013年8月27日 上午 06:51
    2013年8月27日 上午 06:02

所有回覆

  • 你要發布 .pdb 應該是用封裝部署去加這個檔吧?還是我誤會你的意思?

    我是覺得不用行號,你只要請你 user 把下面那篇那樣的訊息給你就夠除錯了。

    [惡意程式] 開機跳出 .Net framework 錯誤


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2013年8月26日 下午 12:26
  • 你要發布 .pdb 應該是用封裝部署去加這個檔吧?還是我誤會你的意思?

    我是覺得不用行號,你只要請你 user 把下面那篇那樣的訊息給你就夠除錯了。

    [惡意程式] 開機跳出 .Net framework 錯誤


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    先謝謝解答,
    但可能本人表達能力差, 導致不能表示我心中所想,
     
    第一, 閣下所提供的, 並不能提供行號, 但在IDE環境下, 是可以準確回報行號
    如 at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) at .....cs:line 500 <--粗體字在IDE的Start Debugging運行時是會出現的

    第二, 本人認為, 通常Publish後的程式, 不應出現閣下的例子的情況,
    因為正常的程式設計, 是會把Exception作catch, 再作相應處理,
    而不會出現JIT debugger, 如果出現JIT debugger, 程式須完全退出,

    我會在catch Excetpion後, 以System.Environment.StackTrace物件,
    匯報當前的位置, 只可惜這個物件在IDE下是可以顯示行號,
    Publish後的Assembly運行時卻不能




    • 已編輯 Polywan 2013年8月27日 上午 01:01
    2013年8月26日 下午 05:19
  • 您可以設定專案的屬性, 點選[發行]頁籤, 勾選[顯示所有檔案], 再將pdb檔案的發行狀態從[排除]改成[包含]即可
    • 已標示為解答 Polywan 2013年8月27日 上午 06:51
    2013年8月27日 上午 06:02
  • 您可以設定專案的屬性, 點選[發行]頁籤, 勾選[顯示所有檔案], 再將pdb檔案的發行狀態從[排除]改成[包含]即可

    謝謝大大!!
    這個問題本人已研究了一段長時間, 在Visual Studio內嘗試了很多不同的選項,
    亦參考了很多外國的網站, 皆未能解決, 估不到是這麼簡單的設定

    再次謝謝大大的幫助!!

    2013年8月27日 上午 06:51