2012-02-16 50 views
2

在項目屬性的代碼合同選項卡中將「合同參考組件」設置爲「生成」時,會在輸出文件夾的「代碼合同」子文件夾中創建兩個附加文件(對於名爲「MyAssembly」的組件):代碼合同爲什麼產生MyAssembly.Contracts.pdb文件?

MyAssembly.Contracts.dll 
MyAssembly.Contracts.pdb 

第一個文件包含所有合同元數據,我理解它的用法。我不明白的是爲什麼會創建第二個文件.pdb,以及合同元數據的使用者是否需要它(例如代碼合同本身在另一個解決方案中,代碼合同編輯器擴展等)。

如果我希望元數據的其他使用者正常工作,是否還需要包含.pdb,還是完全不需要?

+0

在調試之外,您不需要它。請參閱http://msdn.microsoft.com/en-us/library/yd4f8bd1.aspx。 – 2012-02-16 16:56:48

+0

可能重複的[pdb文件的目的是什麼?](http://stackoverflow.com/questions/3582751/what-is-the-purpose-of-pdb-files) – 2012-02-16 16:57:36

+0

@Igby:是的,但是因爲程序集既不包含任何代碼,甚至不能運行或調試,那個PDB的目的是什麼?爲什麼它甚至生成?而且由於合約彙編的全部目的是提供元數據,這正是PDB包含的元數據,它是否提供了實際DLL沒有的有用元數據? – 2012-02-16 20:00:23

回答

3

我已經在代碼合同MSDN論壇上發佈了這個問題,並從Manuel Fahndrich那裏得到了答案。

靜態檢查器使用生成的pdb文件指向源代碼中違反的協議(PDB用於IL - >源代碼映射)。這隻對寫合同的人有用,因爲沒有源代碼合同pdb幾乎沒有用處,所以不需要將.Contracts.pdb運送給第三方,只需要運送.Contracts.dll

相關問題