调试 Nuget 库
Debug Nuget Library
我有一套自己编译修改的Nuget库
我构建它们时没有在任何 Nuget 服务器上发布。 (这不是我的图书馆)
另一方面,我有一个使用此类 Nugets 的项目,但我想调试它们...
在最好的情况下我希望:
- 使用我的本地 .dll 和 .pdb
- 使用本地 .pdb 和(更新的)源代码进行调试
我正在寻找可能的最佳解决方案,如果可能的话,通过加载所有本地符号,
但我不确定是否可行。
也许我必须在我自己的本地 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\src
或C:\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.
我有一套自己编译修改的Nuget库
我构建它们时没有在任何 Nuget 服务器上发布。 (这不是我的图书馆)
另一方面,我有一个使用此类 Nugets 的项目,但我想调试它们...
在最好的情况下我希望:
- 使用我的本地 .dll 和 .pdb
- 使用本地 .pdb 和(更新的)源代码进行调试
我正在寻找可能的最佳解决方案,如果可能的话,通过加载所有本地符号, 但我不确定是否可行。
也许我必须在我自己的本地 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\src
或C:\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.