2017-09-23 45 views
0

我有一個NuGet庫添加到我的項目。我也從GitHub克隆了庫代碼並在調試中編譯。如何調試NuGet添加到我的應用項目中的OSS庫?

如何讓我的項目使用PDB,以便我可以進入庫的代碼?

我可以做到這一點仍然保持對NuGet庫的參考?我可以刪除NuGet引用並添加對庫項目的引用。

我試圖在VS符號設置中添加PDB的路徑,但它不起作用(我在調試時打開了VS中庫的源代碼文件,並在我知道它被擊中的地方放置了一個斷點,沒有)

enter image description here

+0

調試庫的最佳方法是刪除NuGet引用並添加對OSS庫的引用。確保你添加了與NuGet相同的版本。 – Odrai

+0

謝謝,但我試圖找到一個更簡單的方法。我得到了用於在NuGet上創建庫的確切提交。 –

回答

0

如果你夠幸運的OSS項目發佈源和符號包SymbolSource,這樣你可以簡單地將它們添加到符號人士透露,在關閉「只是我的代碼」調試器設置和調試。

如果你不那麼幸運,但是如果作者至少已將PDB添加到Nuget包本身,那麼調試器可能會提示您指向源代碼,指向您的本地git回購並調試。如果您可以從任何其他來源找到PDB,只需將它們複製到您的輸出目錄,Visual Studio就會將它們提取並請求源位置。

如果你很懶惰(就像我在大多數情況下那樣),或者在Resharper中使用「Step into decompiled code」,然後反編譯OSS庫來調試它們。你不會得到最漂亮的資源,但在很多情況下它完成了工作。除了dotPeek,紅門反射器Pro也有類似的功能。

從本地來源您可以構建您自己的NuGet包的調試版本。如果包含PDB並且源代碼在本地可用,Visual Studio將自動提取它們。您將添加一個本地文件夾作爲NuGet源代碼,它將允許您臨時選擇您的自定義版本。

最後的解決方法是在本地刪除NuGet包並完全切換到本地構建的源代碼。最後的手段,因爲在某些情況下這可能是不可能的(您嘗試調試的代碼被其他組件引用,例如需要強烈簽名)。而且它需要對本地項目進行一些重大更改,並且您無法真正承諾您的努力的中間結果。

+0

謝謝。不,NuGet不使用SymbolSource,也不使用PDB。我試圖在VS中做到這一點,我沒有Resharper。如果我構建自己的NuGet包,並在VS中添加本地NuGet源,那麼如何讓VS更改NuGet源,而無需將NuGet重新添加到我的項目中?也許我只是刪除NuGet文件夾,以便NuGet將不得不再次獲得它並使用本地源? –

+0

還有另一種解決方案我想:我可以將DLL和PDB複製到\ packages \ Prism \文件夾中,我認爲這會起作用。當我完成調試時,我可以刪除該文件夾,以便NuGet下載它們 –

+0

不需要,它不會工作 –

相關問題