Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 调试Nuget库_Visual Studio_Nuget_Symbols_Nuget Server - Fatal编程技术网

Visual studio 调试Nuget库

Visual studio 调试Nuget库,visual-studio,nuget,symbols,nuget-server,Visual Studio,Nuget,Symbols,Nuget Server,我有一套我自己编译和修改的Nuget库 我构建它们而不在任何Nuget服务器上发布。(它不是我的库) 另一方面,我有一个使用这种NUGET的项目,但我希望调试它们 在最好的情况下,我希望: 使用我的本地.dll和.pdb 使用local.pdb和(更新的)源代码进行调试 我正在寻找最好的解决方案,如果可能的话,加载所有本地符号, 但我不确定这是否可能 也许我必须在我自己的本地Nuget服务器上构建并使用本地Symbol服务器,但这看起来有些过分了 也许我必须在自己的本地Nuget服务器上构建

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

我构建它们而不在任何Nuget服务器上发布。(它不是我的库

另一方面,我有一个使用这种NUGET的项目,但我希望调试它们

在最好的情况下,我希望:

  • 使用我的本地.dll和.pdb
  • 使用local.pdb和(更新的)源代码进行调试
我正在寻找最好的解决方案,如果可能的话,加载所有本地符号, 但我不确定这是否可能

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

也许我必须在自己的本地Nuget服务器上构建,并使用本地 符号服务器也一样,但它看起来太过分了

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

根据您的描述,nuget软件包是您自己创建的,更容易实现:

1)如果您在本地有nuget.pdb文件和相应的cs文件,您只需将pdb文件放在引用nuget的项目的输出文件中,然后右键单击解决方案-->
属性
-->
通用属性
-->
调试源文件
-->以添加cs文件所在的文件夹路径

2)如果您没有当前的
nuget.pdb
文件和相关的cs源文件用于在本地进行调试,则在使用创建nuget包时需要将这些文件包括在
nuget.nupkg
中,以便在安装nuget包时将这些文件添加到当前代理中

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

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

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>

........
------ClassLibrary11.pdb是nuget.pdb
------Class1.cs是源文件
D)然后键入
nuget-pack
生成包含这些调试文件的nuget-pack

E)在新项目中安装此nuget软件包时,请不要忘记先安装。之后,您应该将资源文件的路径添加到
调试源文件中
(资源文件存在于
C:\Users\xxx\.nuget\packages\package name\src
C:\xxxxx\ConsoleApp(项目文件夹)\packages\package name\src

编辑

F)开始调试时,请不要忘记在
工具中禁用
仅我的代码
选项
-->
调试
-->
常规
-->取消选中
仅启用我的代码

也可以考虑作为源代码控件,这样就不会通过解决方案=属性来配置源路径。


此外,您可以参考。

我不会说过分,但这有点牵强。我有一个问题-您所说的“它不是我的图书馆”是什么意思?您说过您有多个Nuget库,但现在听起来似乎只有一个。对于您自己的本地软件包,您唯一的希望是配置一个symbol文件夹并将符号文件放入其中,以便VS拾取。如果不想设置真正的服务器,则本地NuGet提要和本地symbol文件夹相当于远程服务器。然而,您应该注意到,像这样的一站式解决方案并不难。