2010-03-16 153 views
28

每當我開始一個新的軟件時,我必須進入配置並關閉pdb文件生成和Visual Studio發佈版本的託管過程。有沒有什麼辦法可以告訴Visual Studio(特別是2008年),我希望在剩下的時間內爲所有項目做到這一點?如何關閉所有發佈版本的pdb生成和vshost

+0

爲什麼要關閉發佈版本的PDB?請參閱http://stackoverflow.com/questions/2371032 – 2010-03-16 11:27:23

+1

我的工作主要是內部軟件,我們沒有自動構建(還),所以它只是另一個文件,在將構建傳遞給推出的人之前發佈/取消選擇該軟件。我只是試圖爲他們和我做一些儘可能乾淨和容易的事情。 – 2010-03-16 11:31:16

+0

但是不提供PDB會使調試更加困難。 – 2010-03-16 11:37:24

回答

15

經過一番挖掘,看起來C#的項目文件存儲在\program files\microsoft visual studio 9.0\common7\ide\projecttemplatescache\csharp\windows\1033中。通過將<UseVSHostingProcess>false</UseVSHostingProcess>添加到相關模板的正確部分(有調試和發佈配置的單獨部分),可以關閉所有類型的所有未來項目的託管過程。

你應該能夠處理PDB問題以類似的方式,但正如我所說,我不建議打開這些了,所以我會離開它作爲一個練習:)

這適用於VS2008 ,但我的猜測是其他版本也有類似的方案。實際上,VS2010使用相同的方法,但顯然目錄中的版本號是10.0而不是9.0。

+0

爲了記錄,並且由於Google引導我進入該線程,這個技巧也適用於VS2012(至少在託管過程中,要禁用PDB文件,所以沒有嘗試)。再次感謝你,讓我的一天! – psycho 2013-06-19 09:43:54

+0

編譯時,在我的'.csproj'文件中關閉此功能會導致'MSB3027'。也就是說,輸出文件由於被鎖定而無法寫入。 – l33t 2013-10-07 10:33:52

+0

@ l33t你還記得關閉文件嗎?如果它仍然打開,它將被鎖定。我剛剛在VS2012上進行了驗證。 – 2013-10-07 15:53:28

2

爲什麼不添加一個後期構建步驟,刪除這些你不想要的文件。嗯,這又是一個步驟,不是你想要的:-(

如何編寫一個小幫手應用程序,它執行FindFirstFile和FindNextFile循環來查找你的發佈目錄中的PDB和shost文件,當它發現它們時,它會刪除或者更好地將它們移動到歸檔位置 - 這可以將它們從發佈包裝問題中移除,但仍然保留這些文件以防需要它們進行錯誤分析。

因爲它的助手應用程序可以運行它曾經作爲你的預發佈的一部分釋放人員。

我們使用這種技術處理很多事情:

  • 確保DLL是最新的(基本上爲整個構建樹的智能更新)
  • 清潔VC建立不是「批構建」可以(去掉一些那些可能會崩潰Visual Studio中的文件)
  • 存檔更好某些特定的方式(類似於我建議你)

我與布萊恩 - 你應該保留這些文件。如果您需要調試任何錯誤或失敗,您將需要這些文件。

+0

我同意 - 不要壓制它們或刪除PDB - 只要將它們從部署包中刪除並將它們與您的構建一起存檔即可:http://www.wintellect.com/CS/blogs/jrobbins/archive/2009 /05/11/pdb-files-what-every-developer-must-know.aspx – 2010-03-16 13:04:58

11

在VS 2010中,你會發現一個項目的屬性來控制.PDB代在項目屬性 - >生成 - >高級 - >調試信息

將其設置爲「無」,以抑制.PDB產生。

+0

雖然這是按照每個項目的基礎。當時我想永遠爲所有項目做一次這樣的事情,而不是在每個項目建立和改變時都要進入這個項目。 – 2013-04-10 11:52:17