调试 Nuget 库

Debug Nuget Library

我有一套自己编译修改的Nuget库

我构建它们时没有在任何 Nuget 服务器上发布。 (这不是我的图书馆

另一方面,我有一个使用此类 Nugets 的项目,但我想调试它们...

在最好的情况下我希望:

我正在寻找可能的最佳解决方案,如果可能的话,通过加载所有本地符号, 但我不确定是否可行。

也许我必须在我自己的本地 Nuget 服务器上构建并使用本地 Symbol 服务器,但这看起来有点过分了?

Maybe I have to build on my own local Nuget server and use a local Symbol server too, but it looks overkill?

据我所知,在新项目中调试nuget库时,必须在新项目中添加需要的nuget.pdb和相关的xxx.cs源文件。

根据你的描述,nuget包是自己创建的,比较容易实现:

1)如果你有nuget.pdb文件和对应的cs文件,只需要将PDB文件放到引用nuget的项目的输出文件中,然后右键点击Solution-->Properties-->Common Properties-->Debug Source Files-->把cs文件所在的文件夹路径加进去

2)如果本地没有当前的nuget.pdb文件和相关的cs源文件用于调试,需要在[=中包含这些文件17=]在使用nuget.exe cli with xxx.nuspec创建nuget包的时候,这样安装nuget包的时候就可以把这些文件添加到当前的agent中。

**注意:**这是创建 nuget 包的特殊步骤:

A)请确保您已下载nuget.exe,然后将其路径设置为环境变量,以便在CMD中调用。可以参考this.

B) 打开CMD,输入cd xxxxxx(包含xxxx.csproj的工程路径)

C) 输入 nuget spec 生成 xxx.spec 文件

然后打开它并像这样添加:

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
   ........
  </metadata>
<files>
<file src="bin\Debug\ClassLibrary11.pdb" target="lib\target framework version (like net472 or netstandard2.0)" />------ClassLibrary11.pdb is the nuget.pdb
 <file src="Class1.cs" target="src" />------Class1.cs is the source file
</files>
</package>

D) 然后键入 nuget pack 生成包含这些调试文件的 nuget 包。

E) 当你在新项目中安装这个 nuget 包时,请不要忘记先 clean the nuget cache。之后,你应该将资源文件的路径添加到Debug Source Files。(资源文件存在于C:\Users\xxx\.nuget\packages\package name\srcC:\xxxxx\ConsoleApp(project folder)\packages\package name\src

编辑

F)开始调试的时候,请不要忘记在Tools-->Options--中禁用Just My Code >Debugging-->General-->取消勾选Enable Just My Code.

此外,您可以将 source links 视为源代码管理,这样您就不会通过 Solution=>properties 配置源代码路径。

另外,可以参考this similar issue.