Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
C# Visual Studio探查器拒绝从动态生成的程序集中加载调试符号_C#_Visual Studio - Fatal编程技术网

C# Visual Studio探查器拒绝从动态生成的程序集中加载调试符号

C# Visual Studio探查器拒绝从动态生成的程序集中加载调试符号,c#,visual-studio,C#,Visual Studio,我在运行时动态生成程序集,如下所示: AssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(fname), AssemblyBuilderAccess.RunAndSave); moduleBuilder = AssemblyBuilder.DefineDynamicModule(fname, $"{fname}.dll", true); var typeBuilder = moduleBuilder.D

我在运行时动态生成程序集,如下所示:

AssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(fname), AssemblyBuilderAccess.RunAndSave);
moduleBuilder = AssemblyBuilder.DefineDynamicModule(fname, $"{fname}.dll", true);
var typeBuilder = moduleBuilder.DefineType("InternalType", TypeAttributes.Public | TypeAttributes.Class, typeof(BaseClass))
var methodBuilder = typeBuilder.DefineMethod($"MyMethod", MethodAttributes.Private, typeof(int), new [] { typeof(int) })
我还发出调试符号:

var documentBuilder = moduleBuilder.DefineDocument(Path.GetFullPath(fileName), SymDocumentType.Text, Guid.Empty, Guid.Empty);
File.WriteAllLines(fileName, method.SourceCodeLines);

// While emitting IL
gen.MarkSequencePoint(document, lineIndex + 1, 0, lineIndex + 1, method.SourceCodeLines[lineIndex].Length + 1);
现在,每当我评测应用程序(Alt+F2)并导航到其中一个动态生成的方法时,我都会得到一个报告,上面只显示:

符号文件不包含源信息或找不到。 您可以选择“符号设置…”链接来添加符号文件 位置,然后重新加载报告

我尝试将Debug/和Release/目录添加到我的符号路径中,但Visual Studio似乎只是忽略了其中的
*.pdb
文件。(我已检查,pdb文件实际已生成并保存)


有什么办法可以解决这个问题吗?

在MSDN关于MarkSequencePoint的文章中明确提到了这一点。Quote:“如果当前ILGenerator与DynamicMethod对象关联,则它不支持符号信息。”我不是在构建
DynamicMethod
,而是在生成可以保存到磁盘的正确程序集。调试时也可以使用调试符号(我可以在生成的代码中设置断点),唯一符号不起作用的地方是在探查器中。MarkSequencePoint的MSDN文章中明确提到了这一点。Quote:“如果当前ILGenerator与DynamicMethod对象关联,则它不支持符号信息。”我不是在构建
DynamicMethod
,而是在生成可以保存到磁盘的正确程序集。调试时也可以使用调试符号(我可以在生成的代码中设置断点),唯一符号不起作用的地方是在分析器中。