Сбой CLR, когда за изменением кода во время отладки ("Изменить и продолжить") следует Debug.SetNextStatement

Во время сеанса отладки Visual Studio 2015 (попадание на точку останова), если я изменяю практически любой код и выбираю любую из команд " Продолжить", " Шаг в", " Шаг за шагом" (и т. Д.), Я немедленно получаю исключение ExecutionEngineException, за которым следует сбой CLR.

Кажется, это появляется только в одном проекте.

System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(int dwComponentID, int reason, int pvLoopData)    Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context)    Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) Unknown
System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext context)  Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()    Unknown
Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(string[] commandLine)   Unknown
[Native to Managed Transition]  
[Managed to Native Transition]  
mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) Unknown
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()   Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state)    Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()    Unknown

Как решить эту проблему?

2 ответа

Решение

Я нашел ответ путем минимизации проблемного сценария.

Похоже, что проблема с комбинацией /questions/tagged/visual-studio-2015 + .net-3.5 + vb.net и этого кода:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim gridSize As Size = New Size(3, 11)
        Dim z As Integer
        z = 22
        z = 1
    End Sub
End Class

Установить точку останова на End Sub, остановитесь на этом, поменяйте местами назначения и установите следующий оператор на первое назначение. Boom.

Об этом сообщили в Microsoft. Обходной путь должен использовать .net-4.0 и выше.

У меня та же проблема с Visual Studio Community 2015 в C#. При отладке проекта, скомпилированного для.Net 3.5, при достижении точки останова и выполнении "редактировать и продолжить" он редко выживает. Сбой компилятора /IDE с одним из нескольких возможных сообщений об ошибках, чаще всего с исключением ExecutionEngineException, за которым следует сбой CLR.

Когда тот же проект компилируется в.net 4.6.1, отладчик IDE VS 2015 работает правильно. Достаточно установить основной проект на.net 4.6.1; Затем вызываемые.dll являются отлаживаемыми, даже если они по-прежнему.net 3.5.

(Старый отладчик VS 2013 IDE работал правильно с.net 3.5, очень редко он падал.)

Такое поведение верно для многих проектов.

Другие вопросы по тегам