Ошибка после переключения с .NET 3.5 на 4 - PullRequest
1 голос
/ 27 декабря 2010
Application.Run(new Main());

Эта строка дает исключение TypeInitializationException после того, как я перешел с 3.5 на 4. Фреймворк.

Почему это?

Редактировать: Забыл упомянуть, что это приложение Winforms C #.

Хорошо, у меня есть ссылка на SQLite .NET. Я попытался сделать это в проекте, созданном в .NET 4 по умолчанию, и не дал мне никакой ошибки, поэтому я предположил, что это не касается SQLite .NET http://sqlite.phxsoftware.com/

Обратите внимание, v2.0.50727 - это версия библиотеки DLL во время выполнения, которая, кажется, вызывает проблему.

  • Брошено: "Сборная версия базы данных на базе" v2.0.50727 "в режиме реального времени и времени в режиме реального времени. 4.0 Версия для печати и настройки." (System.IO.FileLoadException) Сообщение об исключении = "Сборка из базы данных для базы данных в разных версиях" v2.0.50727 "в режиме реального времени и времени. 4.0. , Exception Type = "System.IO.FileLoadException"

Кажется, он не может запустить DLL на v4 с / дополнительной конфигурацией.

1 Ответ

5 голосов
/ 27 декабря 2010

Посмотрите на InnerException, чтобы узнать причину сбоя статического конструктора класса Main.Обычно это вызвано тем, что инициализаторы статических переменных выдают исключение.

Обновление: мой португальский язык довольно ржавый, но похоже, что вы используете сборку, написанную на C ++ / CLI и построенную для версии .NET 2.0Клр.SqlLite подходит под это описание.Помимо получения обновления для этой сборки, вы должны сообщить CLR, что можно загрузить сборку с версией CLR .NET 4.0.Проект + Добавить новый элемент, выберите Файл конфигурации приложения.Сделайте так, чтобы это выглядело так:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...