如何从Azure Devops轻松调试内部Nuget包

3
我在一家公司工作,我们有一个单片应用程序,我想将它拆分成较小的Web服务/Windows服务/网站等。为了达到“聪明”效果,我想通过将它们放入自己的类库并在构建时创建一个NUGET包来重复使用单片应用程序中包含的库,使用Azure Devops(虽然不完全绑定于此工具)。
我试图隔离的主要组件是数据访问层,因为它是最常用的。
到目前为止,CI方面将构建我的其中一个类库,并将递增的版本号发布到可以通过VS连接的nuget feed中。
问题是,我无论如何都无法弄清楚如何调试这些nuget包,就好像我们仍然在单体设计中进行调试一样 - 我们都习惯于能够调试整个请求端到端 ->响应过程。
我认为我基本上想要:
  • 托管nuget包
  • 它能够以DEBUG或RELEASE变体构建(发布时为release,开发期间为debug)
  • 轻松进入库中,具有完整的源代码和变量监视功能,就好像我们仍然处于单体设计中一样
我拒绝相信这是不可能的,因为我认为大多数编写良好代码的公司肯定会这样做,或者我是想错了吗?
我在网上唯一找到的东西是有人积极地将nuget包本地复制到他的机器上,在debug中构建并拖动pdb文件 - 这将带来更多麻烦,使我想要“坚持单体设计”。

一般来说,即使是内部创建的NuGet包,也应该被视为外部代码。例如,您不会调试Microsoft或Json.Net的库,对吧?因此,您不应该调试您的包,它在使用之前应该已经经过测试和稳定。理论上,实践上...这是完全不同的问题。 - gilliduck
真的吗?这将使单体模型在开发方面更具吸引力。对于一个非常特定的错误,您必须基本上序列化/反序列化数据模型并将它们发送并调试两个项目,只是为了尝试更接近错误,这听起来像是一个巨大的头痛! - aspirant_sensei
1个回答

0

这取决于您的期望,或者您认为调试的定义是什么。假设您正在调试,并且错误确实在程序包中。您是否希望能够更改程序包中汇编代码的几行,使用依赖项构建新版本的应用程序并再次运行?在这种情况下,不,它不会那么容易,最好将所有内容保留在单个解决方案中,即使它们作为多个服务部署。

但是,如果您只是指使用Visual Studio的调试器并能够进入方法,则可以使用Azure DevOps Pipelines任务来发布符号。请注意,这与使用符号包或 snupkg 不同,就像您要将符号发布到nuget.org一样。Azure DevOps任务只是直接将 * .pdb 复制到其符号服务器。每个开发人员还需要一次性配置他们的VS以使用符号服务器。


是的,我认为“我们可以调试,但如果您需要进行编辑,则必须修复其他项目,提交更改并拉取新的NuGet存储库”与“现在一切都很好地分离了,具有代码重用性”之间的权衡是一个不错的权衡,只要我们能够尽快地跟踪并隔离问题!我想,对于测试开发更改,有一种快速告诉您的解决方案“指向我的本地生成的.dll文件而不是NuGet文件”的方法会很好,然后您可以在部署修复程序之前进行迭代...也许它应该保持为单体结构。 - aspirant_sensei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接