Member 3648847 Ответов: 9

Инициализатор типа для " выдал исключение


У меня есть проект c++/cli, и это приложение для windows. В режиме отладки у нас не было никаких проблем, но после того, как мы перевели его в режим выпуска, эта ошибка запустилась. Я искал и нашел несколько ответов на форуме, но не смог помочь мне решить эту проблему.
Пожалуйста, помогите мне ....

Ошибка :

Необработанное исключение типа 'System.TypeInitializationException' произошло в неизвестном модуле.

Дополнительная информация: инициализатор типа для "модуля" вызвал исключение.

sharifani

кому я могу устранить ошибку " инициализатор типа 'модуль' выбросил исключение.я могу установить microsoft visual studio 2010 ultimate,но эта ошибка произошла и vs не работает.пожалуйста, помогите мне.

Member 14504152

У меня также есть этот тип ошибки в моем коде

использование Nexmo.Api;
использование System.Web.Mvc;
использование системы.Диагностика;
используя системы.Веб.Протокол HTTP;
использование Newtonsoft.Json;
использование системы.ИО;

пространство имен NexmoDotNetQuickStarts.Контроллеры
{
// Для получения дополнительной информации о включении MVC для пустых проектов посетите сайт http://go.microsoft.com/fwlink/?LinkID=397860

открытый класс SMSController : контроллер
{

индекс общественного ActionResult ()
{
возвращение смотреть();
}

[Система.Веб.В MVC.HttpGet]
общественная ActionResult отправить()
{
возвращение смотреть();
}

[Система.Веб.В MVC.Протоколы HttpPost]
public ActionResult Send(string to, string text)
{

ВАР результат = СМС.Отправка(новой СМС.SMSRequest
{

from = конфигурация.Пример.Настройки["appsettings:NEXMO_FROM_NUMBER"], //в этой строке
к = к,
текст = текст
});
return View("индекс");
}

[Система.Веб.В MVC.HttpGet]
public ActionResult Recieve([FromUri]SMS.SMSInbound response)
{

если (значение null != ответ.к &&усилителя; значение null != ответ.номер MSISDN)
{
Отлаживать.метод WriteLine("-------------------------------------------------------------------------");
Отлаживать.WriteLine("входящий текст");
Отлаживать.WriteLine("From:" + response.msisdn);
Отлаживать.WriteLine(" сообщение: "+ response.text);
Отлаживать.метод WriteLine("-------------------------------------------------------------------------");
возврат нового HttpStatusCodeResult(200);

}
еще
{
Отлаживать.метод WriteLine("-------------------------------------------------------------------------");
Отлаживать.WriteLine("конечная точка была поражена.");
Отлаживать.метод WriteLine("-------------------------------------------------------------------------");
возврат нового HttpStatusCodeResult(200);

}

}

[Система.Веб.В MVC.HttpGet]
public ActionResult DLR([FromUri]SMS.SMSDeliveryReceipt response)
{

Отлаживать.метод WriteLine("-------------------------------------------------------------------------");
Отлаживать.WriteLine("доставка RECIEPT");
Отлаживать.WriteLine("идентификатор сообщения:" + response.messageId);
Отлаживать.WriteLine("From:" + response.msisdn);
Отлаживать.WriteLine("To:" + response.to);
Отлаживать.WriteLine("Status:" + response.status);
Отлаживать.метод WriteLine("-------------------------------------------------------------------------");

возврат нового HttpStatusCodeResult(200);
}

}

}

9 Ответов

Рейтинг:
74

gbybee

У меня была та же ошибка, и я обнаружил, что класс, на который я ссылался, не был проблемой, но у него была объявлена статическая переменная другого типа, которая требовала загрузки другой сборки. Эта сборка была построена для целевой платформы x86 (см. вкладку Properties-->Build), однако основной проект был скомпилирован для любого процессора. Я перестроил старую сборку для любого процессора... проблема решена.

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

Нажмите кнопку Debug--> Exceptions и установите все брошенные флажки. Это приведет к тому, что отладчик остановится на всех исключениях первого шанса и поможет вам найти ошибку под ошибкой инициализатора типа, которую вы видите. Если он связан с другой сборкой, как это было у меня, Вы можете использовать Microsoft Инструмент просмотра журнала привязки сборки чтобы помочь определить проблему.


benben88

Это мне помогло! Инициализация всех "брошенных" на самом деле дает вам лучшее представление о том, что происходит, чтобы получить эту большую ошибку. Большое спасибо!

Brett Nemec

Спасибо! Установка всех "брошенных" флажков в разделе Debug --> Exceptions была большой помощью!

Member 10273358

Очень хорошее решение. Это быстро помогло мне найти ошибку, которую я объявил const std::set с неверными аргументами инициализации. Это происходит перед входом main (), так что без этого его действительно трудно найти!

hamidsadegh

спасибо за ваш ответ

pratibhas

спасибо

Emmablakes

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

Member 14605063

Работал на меня! Я сразу же перешел к сути проблемы.

Рейтинг:
63

PratapBhaskar

Есть ли на компьютере, где запущено приложение, все необходимые библиотеки DLL??

Возможно, Вам не хватает некоторых взаимодействий в локальном каталоге


Prasad_Kulkarni

Хороший +5

Рейтинг:
2

mohsensamiey

измените свой .net framework на более низкий ;)


Abdelrahman Othman Helal

Спасибо, Вы спасли мне весь день :).

Рейтинг:
2

Pablo Mereles

look the repository container in unity.config
<pre><pre lang="xml">
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
  <alias type="App.Core.Interfaces.IRepositoryConfiguration, App.Core" alias="IRepositoryConfiguration" />
  <alias type="App.Repository.Mappings.SqlServer.SqlRepositoryConfigurer, App.Repository.Mappings.SqlServer" alias="SqlRepositoryConfigurer" />

  <container name="RepositoryContainer">
    <register type="IRepositoryConfiguration" mapTo="SqlRepositoryConfigurer" >
      <lifetime type="singleton"/>
    </register>
  </container>
</unity>
</pre></pre>


Рейтинг:
1

J. Moreno

Недавно у меня была такая же проблема, и это было потому, что я использовал Date.Parse для отсутствующего элемента в конфигурационном файле:

Дата.Синтаксический Анализ(Система.Конфигурация.Конфигурационный менеджер.AppSettings.Get("frex"))


Рейтинг:
0

mldisibio

В моем случае (так много разных случаев, когда это проявляется) Я инициализировал некоторые статические поля в их объявлении, например:

public class MyHelperClass
{
    readonly static SolidColorBrush BlueBrush = new SolidColorBrush(Colors.Blue);
    
    public static void ApplyBrush()
    { 
      // do something with brush 
    }
}


Когда я переместил инициализацию в статический конструктор, исключение больше не создавалось:

public class MyHelperClass
{
  readonly static SolidColorBrush BlueBrush;
  
  static MyHelperClass
  {
    BlueBrush = new SolidColorBrush(Colors.Blue);
  }
}


Рейтинг:
0

gahintz

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

fileInfo = My.Computer.FileSystem.GetFileInfo(logDirLoc & logFileName)
writer = fileInfo.AppendText()


Когда я удалил его, проблема была решена.

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


Рейтинг:
0

Bimaln

Я столкнулся с той же ошибкой, что и "система.TypeInitializationException". Эта ошибка возникает из-за статического конструктора .

На самом деле в моем случае я получаю доступ к некоторому значению из файла App.config и присваиваю это значение статической переменной . Ошибка происходит из-за файла App.config . Это означает, что файл app.config не очень хорошо сформирован (я просто пропустил какой-то тег в app.config ). После установки отсутствующего тега он работает нормально.


Bimaln

На самом деле это была исправлена моя ошибка.

Рейтинг:
0

fathy_s

Инициализатор типа для "модуля" вызвал исключение.
Просто выполните команду iisreset