繁体   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