Я разрабатываю дополнение fody (используя mono.cecil) и вставляю некоторый код в начале метода. Я хочу, чтобы отладчик перешагнул введенный код.Fody/Mono.Cecil: Скрыть строки в отладчике
Я нашел некоторую информацию здесь: http://blogs.msdn.com/b/abhinaba/archive/2005/10/10/479016.aspx
Так что я пытался обновить точку последовательности инжектированных инструкции на номер строки 0xfeefee.
Я делаю это с помощью следующего кода:
public static void Inject(MethodDefinition method, List<Instruction> instructions)
{
var methodInstructions = method.Body.Instructions;
int index = 0;
var sequencePoint = method.Body.Instructions
.Where(instruction => instruction.SequencePoint != null)
.Select(instruction => instruction.SequencePoint)
.FirstOrDefault();
if (method.HasBody && sequencePoint != null && sequencePoint.Document != null)
{
var instruction = instructions[0];
instruction.SequencePoint = new SequencePoint(sequencePoint.Document);
instruction.SequencePoint.StartLine = 0xfeefee;
instruction.SequencePoint.EndLine = 0xfeefee;
}
foreach (var instruction in instructions)
{
methodInstructions.Insert(index++, instruction);
}
method.Body.OptimizeMacros();
}
Это должно быть в принципе тот же код, как проект NullGuard.Fody использует, но он не работает. Я по-прежнему получаю информацию о недоступности источника с визуальной студией при попытке отладки в методе, в который был введен код.
Нужно ли мне что-либо делать, чтобы обновить файл pdb?