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

TypeInitializationException для класса Program

Мое приложение Windows Forms работало ранее, но внезапно перестало работать. Я получаю следующее исключение:

enter image description here

Подробности исключения приведены ниже:

Исключение System.TypeInitializationException не обработано
Сообщение: необработанное исключение типа "System.TypeInitializationException" возникло в mscorlib.dll
    Дополнительная информация: инициализатор типа для NotificationTester.Program вызвал исключение.

Когда я нажимаю OK, окна VS показывают следующее:

enter image description here

Решение работало хорошо ранее. Я не понимаю, что происходит не так.

4b9b3361

Ответ 1

Итак: либо один из инициализаторов полей, либо статический конструктор, для Program - терпит неудачу. Узнайте, почему. Примечание. InnerException имеет фактическое исключение, которое было поднято, но в основном: просто отлаживайте инициализаторы полей и статический конструктор. Поэтому загляните в класс Program для:

static SomeType someField = /* some non-trivial expression or method call */ 

или

static Program() {
    // stuff
}

Ответ 2

Другая возможная причина: app.config имеет дубликаты разделов.

Ответ 3

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

Ответ 4

Я получил то же сообщение об ошибке, и по моему делу причина в том, что моя основная программа настроена на создание 32-битного консольного приложения, и я добавил приватный журнал переменных, который обращается к 64-битной DLL.

public class Program
{
    public static readonly Logger logger = new Logger(typeof(Program));

После того как я изменил основную программу, которая будет построена как 64-битная, проблема исправлена.

Ответ 5

В моем случае причина заключалась в том, что <configSections> не был первым в файле config.

Разрешен только один элемент <configSections> config, и если он должен быть первым дочерним элементом корневого элемента <configuration>.

Переместите элемент configSections вверху вашего конфигурационного файла.

Надеюсь, что это кому-то поможет.

Ответ 6

У меня такая же ошибка с целевой платформой, установленной как любой процессор, и предпочитаю проверять 32-битную метку, не учитывая, что последняя решила мою проблему.

Ответ 7

Это одна странная проблема, с которой мне пришлось иметь дело в течение последних 2 часов. Я решил это, удалив статику из созданных списков.

private static readonly List<Person> someList = GlobalConfiguration.Connection.PopulateList();

с этим:

private readonly List<Person> someList = GlobalConfiguration.Connection.PopulateList();

Надеюсь, что это поможет, и вам не нужно тратить два часа, чтобы узнать об ошибке...

Ответ 8

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

Если это то, что произошло, посмотрите на свойство "Внутреннее исключение", а затем вы увидите лучшее сообщение об ошибке. В моем случае он сказал: "Не могу найти xxx.dll"

Ответ 9

Итак, если вы не получили сообщение innerException, подобное мне, вы можете установить точку останова на некоторые из статических переменных, таких как строки, которые вы, возможно, объявили. Затем вы можете отлаживать оттуда оттуда с помощью F10.

Ответ 10

Эта проблема для меня была вызвана файлом user.config rogue, который был создан в каталоге AppData\Local [Manufacturer] [Product Name]. Я не уверен, как он туда попал, но, кажется, создается время от времени.

Ответ 11

После всех ответов, перечисленных здесь, у меня есть новый:

Инициализатор типа для 'MyLibrary' сделал исключение.

Если вы видите что-то вроде ниже в InnerException (s)..........

"Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The system cannot find the file specified.":"log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"

В моем случае у моего каталога была правильная версия dll. (log4net.dll в этом случае).

А потом... проблема была найдена. Справки перенаправляются в app.config.

: (

Поскольку у меня была правильная версия, я удалил все мои перенаправления. Ваша ситуация может быть иной.

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="b32731d11ce58905" />
        <codeBase version="1.2.9.0" href="log4netv1.2.9.0\log4net.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
        <codeBase version="1.2.10.0" href="log4netv1.2.10.0\log4net.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
        <codeBase version="1.2.13.0" href="log4netv1.2.13.0\log4net.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Ответ 12

У меня та же проблема: запускает программу в MS VS 2015 и выдает сообщение об исключении:

System.TypeInitializationException was unhandled
Message: An unhandled exception of type 'System.TypeInitializationException' occurred in mscorlib.dll
Additional information: Der Typeninitialisierer für "<Module>" hat eine Ausnahme verursacht.

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

System.IO.FileNotFoundException was unhandled
    Message: An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
    Additional information: Die Datei oder Assembly "SIC, Version=19.2.6.3, Culture=neutral, PublicKeyToken=**************" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Я перехожу к этой ссылке и анализирую свойства. Свойство: "Копировать локальное" имеет значение "ложь" - потому что ранее было установлено в GAC Solution: свойство "Копировать локальное" установлено на значение "истина" и создает новую сборку и работает :-)

Может быть, эта информация полезна! Так что хорошего дня.

Ответ 13

В моем случае это было очень глупо. Я случайно набрал что-то вроде этого

<configuration>
    <appSettings>
         <add key="someKey" value="SomeValue" />sss
         <add key="someKey1" value="SomeValue1" />
    </appSettings>
</configuration> 

sss - вызвала ошибку для меня. Любая случайная запись персонажа.