【问题标题】:Embedding debugging information to the build does not include any debugging symbols将调试信息嵌入到构建中不包括任何调试符号
【发布时间】:2020-08-24 13:56:49
【问题描述】:

在我的项目中,在“构建 - 高级”部分中,我设置了“调试信息:嵌入式”:

另外,我设置了一个选项来将我的项目打包为 nupkg 文件。

随着项目的构建,创建了一个 nupkg 文件,但是当我在调试另一个项目时使用这个 nupkg 文件时,没有包含任何符号,nupkg 文件中也没有包含 PDB 文件。

我的问题:据我所知,我必须执行不同的步骤才能将 PDB 文件包含到我的 nupkg 中。在这种情况下,“调试信息:嵌入式”选项的目的是什么,为什么它可用以及它有什么作用?因为即使启用此选项,结果包文件中也不会包含调试信息。

谢谢。

【问题讨论】:

标签: c# visual-studio nuget


【解决方案1】:

在构建中嵌入调试信息不​​包括任何 调试符号

Debugging information: Embedded 表示 MSBuild 会将 PDB 文件直接嵌入到目标 DLL 中,这意味着 DLL 不仅包含自己的DLL 还包含 PDB 文件的内容。 DLL 已经包含两个内容:它本身和pdb 文件。

随着项目的构建,创建了一个 nupkg 文件,但是当我使用 这个 nupkg 文件在调试另一个项目时没有符号 包含,pdb 文件也不包含在 nupkg 文件中。

所以你不必担心丢失pdb文件,它已经被放入DLL中了。

如果你想在另一个项目中本地调试nuget包的内容,你应该只将源文件(cs files)打包到nuget包中。

1) 在您的 lib 项目中添加此类打包节点。

<ItemGroup>
        <Compile Update="Class1.cs" Pack="true" PackagePath="SourceFiles"></Compile>

        //add any source files like this if you want to debug their functions
</ItemGroup>

它将源文件打包到 nupkg 的一个名为 SourceFiles 的文件夹中。

目的是将源文件与nuget一起打包,这样可以直接将源文件从包中取出进行后续调试,以保证调试成功。

2)然后打包项目,在将这个新版本的包安装到项目中之前,你应该先卸载旧的,clean nuget caches或者只是删除C:\Users\xxx(current user)\.nuget\packages下的所有文件,然后安装新的。

3)在调试项目前,应先将nuget的源文件添加到解决方案中。否则,VS会报错,nuget调试时找不到源文件。

右键单击解决方案-->属性-->通用属性-->调试源文件

将nuget的SourceFiles文件夹输入进去:

除此之外,还有a similar issue about it

这是关于我的测试的示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多