【问题标题】:Step through code in a referenced solution单步执行引用解决方案中的代码
【发布时间】:2019-02-25 18:10:25
【问题描述】:

通常当我想调试 nuget 包时,我会下载源代码并将 .csproj 文件添加到我的解决方案中,并添加项目引用而不是使用 nuget 包。这让我可以单步执行代码并查看我的实时项目发生了什么。

我有一个要调试的 nuget 包,但它非常大。我下载了源代码,该解决方案中有大约 20 个项目。我尝试只添加其中一些,但最终出现了很多依赖问题。

有没有一种方法可以告诉 Visual Studio nuget 包的源代码存在于我的 HD 上,这样我就可以逐步完成它,而不必在我当前的解决方案中添加 20 个项目?或者也许是某种方式来添加对整个解决方案的引用?

我的目标是能够设置断点,这样当第三方编译的代码执行时,我可以单步执行它并查看发生了什么。最好的方法是什么?

【问题讨论】:

  • 顺便说一句,JetBrains Rider 可以进入反编译的引用并在此代码中设置断点,而无需下载源代码。

标签: c# visual-studio asp.net-core visual-studio-2017 nuget-package


【解决方案1】:

Emcrank 有一个非常有趣的解决方案,因为没有源代码,但它不适合我。

对我来说答案其实很简单。添加现有项目时,您可以更改下拉列表以添加.sln 文件。我创建了一个文件夹,然后将解决方案添加到其中,它通过单个事务将所有内容都提取出来,现在我可以轻松调试所有代码。

【讨论】:

    【解决方案2】:

    假设应用程序是 .NET 4.7.2。您可以尝试使用 dnSpy,它允许您调试和编辑构建的可执行文件/dll。

    GitHub页面:https://github.com/0xd4d/dnSpy

    最新版本:https://github.com/0xd4d/dnSpy/releases/download/v5.0.0/dnSpy.zip

    下载后

    • 为 64 位应用程序启动 dnSpy.exe 或为 32 位应用程序启动 dnSpy-x86.exe。
    • 使用 File->Open 找到您的 exe 和 dll 文件。
    • 在 dnSpy 中应用断点。
    • 像在 Visual Studio 中一样点击开始

    【讨论】:

    • 它是显示原始来源还是在 IL 中工作?
    • 我相信它显示了源代码。我添加了界面截图。如您所见,显示了源代码。
    • 阅读页面看起来很酷,感谢您的建议,但它是一个反编译器。我有原始来源,想使用原始来源,这样我就可以进行编辑,然后做 PR。我认为这样做很难。
    • 不太清楚 PR 是什么意思,但是您也可以在 dnSpy 中编辑代码并重新编译,只需使用编辑菜单或右键单击代码文件中的任意位置并使用提供的选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2016-03-09
    • 2022-01-12
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多