【问题标题】:Unable to step into Nuget package无法进入 Nuget 包
【发布时间】:2018-02-20 10:22:22
【问题描述】:

我有一个通用项目,我从该项目构建和创建一个 nuget 包,以便在我的其他应用程序中使用。

通用项目的构建过程会创建一个 nuget 包,将其部署到我们的私有 nuget 存储库,并将符号推送到我们的内部符号服务器。

在我的“其他应用程序”中,在这种特定情况下是一个 ASP.NET 网站,我从我们的存储库中提取了 nuget 包,但是当我尝试进入该程序集中的代码时,它只是跳过了它。我清除了本地符号缓存,并在我开始调试 VS 后立即从符号服务器中提取所有符号,因此我知道该位正在工作。

谁能帮帮我?

【问题讨论】:

标签: visual-studio visual-studio-2017 nuget symbols symbol-server


【解决方案1】:

您需要发布带有符号的 Nuget 包,并使用 Tools->Options->Debugging->Symbols 下的 Symbols 引用它们。

HOW TO DEBUG A .NET CORE NUGET PACKAGE?

其他成员之前也问过类似的问题:

How to debug code in a nuget package created by me

更新:

由于您要在程序集中单步执行代码,您仍然需要在 dll 旁边提供 NuGet 包中的源代码文件

据我们所知:

符号是包含元数据的文件,这些元数据表示之间的链接 你的原始源代码和机器代码 由编译器翻译。

在 Microsoft 世界中,符号由 .PDB(程序数据库)文件表示。它是调试过程的核心,因为借助这些元数据,调试工具能够将应用程序中执行的指令与原始源代码相关联,并提供断点或变量观察器等功能。

所以如果只提供dll和.pdb文件,还没有进入代码,还需要提供源代码,然后将源代码添加到Debug Source引用包的解决方案的文件

提供源代码的更多细节:

如果您当前打包时没有 Nuspec,则需要创建 Nuspec,然后将 pdb 添加到 lib 文件夹中的文件列表和 src 文件夹中的源文件。 “NuGet 规范”可能是用于生成 NuGet 文档中定义的初始规范的有用命令。下面是我的 .nuspec 文件,你可以查看:

<?xml version="1.0"?>
  <package >
    <metadata>
     <id>MyTestPackage</id>
     <version>1.0.3</version>
     <authors>Admin</authors>
     <owners>Admin</owners>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <description>Package description</description>
     <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
     <copyright>Copyright 2017</copyright>
     <tags>Tag1 Tag2</tags>
   </metadata>

   <files>
     <file src="bin\Debug\MyTestPackage.dll" target="lib\Net46" />
     <file src="bin\Debug\MyTestPackage.pdb" target="lib\Net46" />
     <file src="Class1.cs" target="src" />
   </files>
</package>

有关将源代码添加到调试源文件的更多详细信息:

打开解决方案后,右键单击解决方案,选择 Properties...Common Properties...Debug Source Files,然后添加相关二进制引用的根源目录:: p>

【讨论】:

  • 嘿,感谢您的评论...符号已经创建并发布,随后通过您提到的方式被拉入我的本地符号缓存中。
  • @Chris,感谢您的回复。你在nuget包中添加了源代码吗?如果没有,请参阅我更新的答案以获取详细信息,检查它是否适合您。
  • Leo - 感谢您的更新。我没有设置Debug Source Files 文件夹,所以现在已经这样做了,但它没有奏效。我唯一不做的另一件事是在我的 nuspec 文件中指定 pdb,但我确实将 PDB 发布到符号服务器(来自 VSTS)并且这些 PDB 已加载,所以无法想象这是问题所在?
  • @Chris,还是不行?错误是什么?找不到源文件?还是无法进入源代码?在我的 nuspec 文件中指定 pdb 怎么样?
  • 我似乎没有收到任何错误,它只是直接越过这条线,就像我按 F10 而不是 F11 一样。我相应地更新了我的 nuspec,但没有任何区别。如果我打开“模块”窗口,所有 PDB 都会为这些库正确加载。唯一值得一提的是,这是我试图进入的异步方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 2021-05-06
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多