簡體   English   中英

使用 Visual Studio 2017 調試 NuGet 包

[英]Debugging NuGet packages using Visual Studio 2017

在 Visual Studio 2015 和 .NET Core 開發中,我們可以通過將源代碼從源(例如 GitHub)檢索到本地磁盤,將源路徑添加到global.json下載的源代碼並在中引用 NuGet 包來global.json NuGet 包我們的項目。 這導致對下載的源代碼中的項目的引用在當前解決方案中自動可見,從而可以輕松調試(有關此功能的更多信息可以在本文中閱讀)。

有誰知道如何使用 Visual Studio 2017 做同樣的事情? 由於global.json消失了,我找不到任何解決方案。

我看到這已成為一個流行的問題,但是,實際上可以改進其產品的請求中沒有 MS(就目前在 Visual Studio 中的大多數時間而言)。

有一些關於如何使用來自 Microsoft 的參考庫的帖子,但這並不適用於所有項目,而且您將調試優化的發布位,這限制了監視和步進功能。 我也覺得這樣做甚至會進一步減慢 Visual Studio 的速度。 這篇文章中描述了這種方法。

但是,最近我找到了解決此問題的方法。 它並不總是穩定的,但可以做的是將相關項目添加到您的項目中作為項目參考。

但這里是我所做的最有效的步驟:

  1. 從 github(或其他來源)克隆 nuget 包的存儲庫
  2. 盡力找出 nuget 包是從哪個提交構建的(大多數項目引用帶有標記或分支,但不要指望這一點,比較 nuget 包和提交上的日期可能會更好)。
  3. 按照項目中有關如何構建它的說明進行操作,有些只是在 Visual Studio 中構建,其他可能需要更多步驟,例如在命令提示符中使用某些構建腳本。
  4. 在解決方案中添加對項目的引用,有時您還需要添加項目引用的項目,但並非總是如此。 還沒有在這里找到確切的規則。 似乎較新的 Visual Studio 更新不需要這個。
  5. 在您的解決方案中引用 nuget 包的所有項目中添加對項目的引用。 不這樣做可能會導致編譯器盡力(不夠好)解決的沖突。

構建和調試,在輸出窗口中檢查是否使用了位於項目輸出文件夾中的程序集。 如果是,只需在引用的項目中點擊斷點,您就會擁有完整的調試功能。

使這項工作有點嘗試和失敗,但它最終確實有效。

可以在項目引用上創建條件以確保它們不是內置在例如發布版本中,但是,請注意更改配置需要您在更改后重新加載您的解決方案!

我已經為此掙扎了很長時間。 這是我發現可重復使用的最簡單方法:

  • 獲取源碼並在本地構建nuget包。 您需要增加到包版本。 希望作者提供了一個 .nuspec 使構建更容易。

創建本地 nuget 源:

  • 將剛剛創建的 .nuget 文件放在 C:\\Nuget 中(例如)

  • 在 Visual Studio 中,選擇工具/選項/Nuget 包管理器/包源

  • 按綠色 (+) 圖標。 將路徑添加到您在上面創建的本地 nuget 包 (C:\\Nuget) 並將包源移動到列表頂部。

  • 在您的解決方案中,對於每個項目,刪除先前對外部 nuget 包的引用,並從本地 nuget 源添加新的 nuget 包。

  • 開始調試,您應該能夠進入 nuget 包的代碼。

我可以在我構建 nuget 包的源代碼中設置一個斷點,並在我運行代碼時讓它中斷。

上面的所有步驟都有點煩躁,您可能需要玩幾次才能讓它工作。

如果這對你有用,請在評論中告訴我。 如果是這樣,我將不勝感激! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM