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

C# 如何从Azure Devops轻松调试内部Nuget包,c#,.net,continuous-integration,nuget,devops,C#,.net,Continuous Integration,Nuget,Devops,我在一家公司工作,我们有一个单一的应用程序,我想把它分成更小的web服务/windows服务/网站e.t.c 我想成为“智能”并重用monolith中包含的库,方法是将它们放入自己的类库中,并在构建时使用Azure Devops为它们创建NUGET包(尽管不完全绑定到该工具) 我试图隔离的主要层是数据访问层,因为它是最常用的 到目前为止,CI端将构建我的一个类库,并将递增的版本号发布到我可以通过VS连接到的nuget提要 问题是,我一辈子都不知道如何调试这些nuget包,就好像我们还在调试mon

我在一家公司工作,我们有一个单一的应用程序,我想把它分成更小的web服务/windows服务/网站e.t.c

我想成为“智能”并重用monolith中包含的库,方法是将它们放入自己的类库中,并在构建时使用Azure Devops为它们创建NUGET包(尽管不完全绑定到该工具)

我试图隔离的主要层是数据访问层,因为它是最常用的

到目前为止,CI端将构建我的一个类库,并将递增的版本号发布到我可以通过VS连接到的nuget提要

问题是,我一辈子都不知道如何调试这些nuget包,就好像我们还在调试monolith一样——我们都非常习惯于能够调试整个请求->响应的端到端

我想我基本上想

  • 托管一个nuget包
  • 使其能够内置于调试或发布变体中(发布时发布,开发期间调试)
  • 使用完整的源代码和可变的监视功能,轻松地进入库,就好像我们仍然处于monolith设计中一样
我拒绝相信这是不可能的,因为我认为大多数编写好代码的公司肯定会这么做,还是我认为这一切都错了


我在网上找到的唯一一件事是,有人主动将nuget软件包本地复制到他的机器上,在调试中构建并拖动pdb文件,这将比它的价值更麻烦,让我想“坚持独石设计”。

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


但是,如果您只是想使用VisualStudio的调试器并能够单步执行方法,那么您可以使用。注意,这不同于使用symbols软件包或
snupkg
将符号发布到nuget.org。Azure DevOps任务只是将
*.pdb
直接复制到他们的符号服务器。每个开发人员还需要一次性配置他们的VS以使用symbol服务器。

一般来说,nuget包,即使是内部创建的,也应视为外部代码。i、 e.您没有从Microsoft或Json.Net调试库,对吗?所以你不应该调试你的软件包,它应该在使用之前已经被测试过了。理论上,实际上…那完全是另一回事。真的吗?从开发的角度来看,这将使整体模型更具吸引力。对于一个非常具体的错误,您必须对数据模型进行串行化/非串行化,并将它们发送到两个项目,然后调试两个项目,以尝试更接近错误,这听起来像是一个非常头痛的问题!是的,我认为“我们可以调试,但是如果你需要编辑,你必须修复另一个项目,提交一个更改,并拉新的nuget repo”与“现在一切都很好地分离,代码重用”之间的权衡是一个很好的权衡,只要我们真的能够逐步完成,并尽可能快地隔离问题!我想,为了测试开发更改,最好有一种快速的方法告诉您的解决方案“指向我本地生成的.dll文件,而不是nuget文件”,然后您可以在部署修复之前进行迭代。。。也许它应该只是一块巨石