Подтвердить что ты не робот

Общая среда выполнения языка не смогла установить контрольную точку

На самом деле это еще одна часть этого вопроса.

Настройки контрольных точек ошибок, но только на некоторых строках при отладке

Я удаляю отладку плагина CRM 2011 в 2010 году.

В одном из моих исходных файлов я могу установить точку останова на всем протяжении кода, за исключением нескольких мест.

Когда я пытаюсь установить точку останова, я получаю эту ошибку "Следующая точка останова не может быть установлена:" и "Время выполнения Common Language Runtime не удалось установить точку останова".

protected override void ExecutePlugin()
{
    SetStateResponse response = new SetStateResponse(); // Breakpoint works

    // Message switch
    switch (_crmMessage) // Breakpoint error
    {
        case CrmPluginMessageEnum.Create:

        Entity pimage = null; // Breakpoint error
        if (_context.PostEntityImages.ContainsKey("postcreate")) // Breakpoint works
            pimage = _context.PostEntityImages["postcreate"]; // Breakpoint error

        break; // Breakpoint error
        }
} // Breakpoint error

UPDATE Кроме того, в окне модулей он показывает DLL как оптимизированный: Нет кода пользователя: Да Символ Статус: Символы Загруженные

4b9b3361

Ответ 1

Две возможности, уже похожие на другие ответы:

  • Убедитесь, что вы используете сборку Debug сборки вместо сборка Release, потому что сборка Release удалит или оптимизирует ваш код.
  • Убедитесь, что вы обновляете версию каждый раз, когда вы развертывание сборок в Visual Studio (на вкладке свойств проекта). Когда вы увеличиваете версию, CRM обязательно выгрузит старый а также перезагрузите новую версию без IIS reset.

Ответ 2

У меня была такая же проблема, когда я открывал проект в двух экземплярах Visual Studio. Проект, который я не отлаживал, заблокировал файл и уведомил меня "Этот файл был изменен вне исходного редактора". После принятия изменений в моем решении без отладки я больше не получал ошибку, и мои точки останова попали в мое решение, которое я отлаживал.

Похоже, что существует много возможных причин этой ошибки, но это сделало это для меня.

Ответ 3

В дополнение к вашему обновлению о оптимизированной DLL строки, которые вы указали, где точки останова не работают, скорее всего, будут оптимизированы, так как весь ваш оператор switch не делает ничего другого, решайте, следует ли присваивать значение переменной, которая никогда не используется и не выходит за рамки оператора switch. Таким образом, компилятор просто не будет генерировать какой-либо код для оператора switch, поскольку он ничего не делает, или jit просто избавляется от него во время выполнения по той же причине.

Ответ 4

У меня просто был подобный опыт, и способ, которым я работал, заключался в том, чтобы поставить точку останова на том месте, где была вызвана рутина, а затем была сделана одна ступенька в рутину, пока я не увидел точно, что она думала, что она делает. В моем случае было возвращение, которое мешало запуску всего кода в программе, поэтому оптимизатор все это выбросил. Иногда это глупые вещи, верно? В любом случае, если вы начнете с уровня выше в стеке вызовов и входите в процедуру, где проблема, причина проблемы может стать более очевидной.

Ответ 5

Другая причина этой проблемы, которую я только что нашел, если вы отлаживаете CRM, не обновляет точки регистрации плагина. Даже если вы скопируете новые DLL на целевой компьютер и подключаетесь удаленно к этому процессу, который не будет использоваться DLL CRM. CRM попытается взять копию старой версии из своей базы данных, пока вы не перезапустите регистрацию плагина.

Ошибка, которая потратила полтора дня на меня!

Ответ 6

Я получил эту ошибку, когда начал запускать отладку проекта, и я решаю его с помощью Clean All Project и Rebuild All Project после восстановления ошибки.