.net Azure DevOps NuGet Feed消费者进入源代码

.net Azure DevOps NuGet Feed消费者进入源代码,.net,azure-devops,nuget,nuget-package,azure-pipelines,.net,Azure Devops,Nuget,Nuget Package,Azure Pipelines,我正在Azure DevOps管道上工作,在那里我发布了一个NuGet提要。提要包含abc.dll和abc.pdb文件。我的订阅源的使用者可以将abc.dll和abc.pdb放入他们的bin文件夹。它们还可以调用abc.dll中的方法 我的问题是如何将源代码包含到PDB文件中。我希望提要的使用者在调试时单步执行代码。目前,当他们这样做时,他们会收到一条消息,说找不到源代码文件 我知道让别人知道你的代码有安全风险,但我们只是想试试看它是如何工作的。我不想让消费者做任何事。只需获取我的提要,调用方法

我正在Azure DevOps管道上工作,在那里我发布了一个NuGet提要。提要包含abc.dll和abc.pdb文件。我的订阅源的使用者可以将abc.dll和abc.pdb放入他们的bin文件夹。它们还可以调用abc.dll中的方法

我的问题是如何将源代码包含到PDB文件中。我希望提要的使用者在调试时单步执行代码。目前,当他们这样做时,他们会收到一条消息,说找不到源代码文件

我知道让别人知道你的代码有安全风险,但我们只是想试试看它是如何工作的。我不想让消费者做任何事。只需获取我的提要,调用方法,然后逐步编写代码

更新

我能够解决以下问题。我在包中添加了源代码文件,消费者可以将它们放到本地机器上,并可以单步执行代码

但我担心我有很多源代码文件,这将导致我的提要的大小增加,而且我不希望我的源代码文件被下载到消费者本地机器上

我能够在Azure DevOps管道中使用索引源和发布符号任务发布符号,但当消费者尝试调试和单步执行代码时,我收到一个错误,即在消费者端找不到我的源代码文件。我在下面试过了,但没有成功

我们如何真正调试索引源和发布符号任务产生的代码?

解决方案

我能够解决以下链接中的确切步骤的问题

Azure DevOps NuGet Feed消费者进入源代码

该文档主要介绍该任务,以及如何调试包。此任务用于将符号发布到Azure工件中的符号服务器,以便我们可以使用索引符号来调试我们的应用程序

如果我们想进入源代码,就像你说的,我们需要包含源代码。但是我们不能将源代码包含到PDB文件中,因为在Azure工件中,这只是一个符号服务器,所以我们不能包含源代码。即使我们可以将源代码包含到PDB文件中,我们仍然无法进入源代码,因为VisualStudio/MSBuild不知道应该使用哪个源代码

符号服务器使调试器能够自动检索 在不知道产品名称、内部版本号或软件包名称的情况下更正符号文件,但不更正源代码

因此,为了解决这个问题,我们必须在nuget包中包含源代码,而不是PDB文件。然后我们可以在VisualStudio中指定源代码

查看我的答案中的详细步骤:

  • 将pdb和源代码文件与 dll
  • 将源代码添加到所需解决方案的调试源文件中 引用包

希望这有帮助。

如何打包NuGet软件包?我创建了一个Azure DevOps构建管道,其中包含构建、复制文件、NuGet软件包和NuGet推送任务。在NuGet Push中,我为目标提要属性提供了提要的名称……我尝试了在NuGet提要中包含源代码文件的方法,它解决了这个问题。但我想尝试其他不包含源代码文件的方法。“我的索引源和发布符号”任务成功,但消费者遇到问题,无法进入代码。它说找不到源代码文件。如何调试pdb文件,这是“索引源和发布符号”任务的结果。@Ziggler,没有源代码,我们无法进入代码
pdb
包含调试信息,类似于可执行代码和源代码之间的映射。使用pdb VS,调试器知道每条指令在源文件中的位置,但它仍然需要源文件来显示代码。检查此线程:。该任务用于将pdb文件发布到服务器,以便我们可以在VS中使用它,但我们仍然需要源代码。@Ziggler,同样,如果我们可以在没有源代码的情况下进入源代码,这将是非常不安全的。这将是很容易得到其他人的源代码。如果您不想将源代码文件下载到用户本地计算机,可以尝试设置网络共享文件夹以保存这些源文件。我将在本博客和各种博客中遵循以下步骤。。但无法调试并单步执行代码。。。