AccessViolationException вне Visual Studio?

Я разрабатываю небольшое приложение winforms на С#, которое использует неуправляемую библиотеку С++. У меня нет доступа к коду этой библиотеки.

Если я нахожусь в Visual Studio и запускаю свое приложение, выполняю вызовы библиотеки, все работает. Когда я запускаю CTRL + F5, я получаю исключение AccessViolationException. Я провел некоторое тестирование, создал другое приложение winforms в .NET 2.0 (другие были в .NET 4.0), и там я не получаю AccessViolationException. Поэтому я подумал, что создам библиотеку классов .net 2.0 в своем решении .net 4.0 и использую эту библиотеку классов. Это не помогло, но у меня было исключение AccessViolationException.

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

Спасибо


person Sven    schedule 20.04.2010    source источник
comment
Что произойдет, если вы запустите приложение с помощью Ctrl-F5, а затем подключите отладчик (Отладка->Присоединить к процессу) до того, как оно вылетит?   -  person Sam    schedule 21.04.2010
comment
Затем он снова работает, VS возвращается в режим отладки, и я подумал, может ли это иметь какое-то отношение к доверию к сборке?   -  person Sven    schedule 21.04.2010
comment
Где ваш код приложения? Сетевой диск?   -  person MikeG    schedule 25.09.2010


Ответы (1)


Я только что наткнулся на ту же проблему. Чтобы воспроизвести проблему в отладчике, мне пришлось перейти к:

Инструменты\Параметры Отладка\Общие

и отключить: Подавить оптимизацию JIT при загрузке модуля (только управляемая).

Конечно, проблема появится только для оптимизированного кода.

person Frank    schedule 24.09.2010
comment
Очень несвоевременный комментарий: Скорее всего, это связано с перестановкой структур. Попробуйте добавить атрибут [StructLayout(LayoutKind.Sequential)] поверх ваших структур. Хорошим началом является msdn.microsoft.com/en- us/library/aa288468%28VS.71%29.aspx . - person ralf.w.; 13.09.2011