jja*_*rdo 11 c# visual-studio .net-core .net-4.6 .net-standard-2.0
我正在使用Visual Studio 2017.我使用两个Target框架netstandard2.0和net46创建了一个.NET标准库(让这个库成为Lib1)项目.然后我有另外两个项目......一个是"纯粹的" .NET Framework 4.6控制台项目(我们称之为Console46)和一个.NET Core控制台项目(我们称之为ConsoleCore).他们都引用了Lib1.
当我运行ConsoleCore项目时,我可以调试并放置断点而没有任何问题,但是当我运行Console46时,Visual Studio无法加载pdb文件,因此我无法调试库,放置断点等.
我尝试手动加载PDB文件,因为它是为net46创建的,但它也失败了.
我该怎么做才能解决这个问题?
谢谢!
Dan*_*iel 11
评论中发布的答案@hans-passant 是一个很好的解决方案。
我在 csproj 文件中使用此选项重建了我的 .NET-Core 库。以下是在您按照 @hans-passant 的说明修改文件时添加到 csproj 的片段(项目 > 属性 > 构建选项卡 > 高级按钮。将“调试信息”组合框从便携式更改为完整):
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
然后我将构建的dll和转储pdb到bin我的 .NET-Framework 应用程序的目录中,并且我能够进入我的 .NET-Core 代码。
这是一个成功的解决方法,可以解决与您所描述的非常相似的问题。当我的“解决方案”仅包含 .NET Standard 项目并且我尝试使用外部 4.6.1 Framework 可执行文件(让我们从单独的解决方案中将其称为“Foo.exe”)进行调试时,我的断点也没有命中。
我的理解是,有两种不同的调试器:.NET Core 调试器和完整框架调试器。我的与“解决方案”默认为前者,因为这是其中唯一的项目类型。
最终对我有用的是欺骗 VS2019 使用完整框架调试器。
为此,我向解决方案添加了占位符 4.6.1 Framework 控制台项目,并将其设置为启动项目。在“调试”选项卡中,我将“启动操作”设置为完全相同,将“启动外部程序”中的值指向与之前相同的值(“Foo.exe”)。现在断点起作用了。
为了清楚起见,注释:
顺便说一句,如之前的帖子中所述,将“Build\Advanced\Debugging information”设置为“Full”在我的场景中没有什么区别,但谢谢你,它很有意义,并且值得一试!
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |