Приложение WPF не работает при запуске с TypeInitializationException

У меня есть простое приложение WPF, которое я пытаюсь запустить. Я следую «Руководству по составным приложениям для WPF» Microsoft Patterns and Practices. Я выполнил их инструкции, однако мое приложение WPF сразу выдает ошибку «TypeInitializationException».

Свойство InnerException показывает, что «Инициализатор типа для 'System.Windows.Navigation.BaseUriHelper' вызвал исключение».

Вот мой app.xaml:

<Application x:Class = "MyNamespace.App"
    xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>         
    </Application.Resources>
</Application>

И вот мой app.xaml.cs (исключение выбрано в «public App ()»):

public partial class App : Application
{
    public App()
    {
        Bootstrapper bootStrapper = new Bootstrapper();
        bootStrapper.Run();
    }
}

Я установил класс «Приложение» в качестве объекта запуска в проекте.

Что сбивается с пути?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
22
0
26 724
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Вы используете файл .config? Если да, проверьте его на наличие ошибок. Ошибки инициализации такого рода часто возникают из-за недопустимого XML: если в XAML нет ошибок, в первую очередь следует искать конфигурацию XML.

Ответ принят как подходящий

Спасибо @ima, твой ответ указал мне правильное направление. Я использовал файл app.config, и он содержал следующее:

<configuration>
  <startup>
    <supportedRuntime version = "v2.0.50727" sku = "Client"/>
  </startup>
  <configSections>
    <section name = "modules" type = "Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile = "Modules/MyNamespace.Modules.ModuleName.dll" moduleType = "MyNamespace.Modules.ModuleName.ModuleClass" moduleName = "Name"/>
  </modules>
</configuration>

Кажется, проблема заключалась в элементе <startup>, потому что, когда я его удалил, приложение работало нормально. Я был сбит с толку, потому что Visual Studio 2008 добавила это, когда я установил флажок, чтобы использовать «Профиль клиента», доступный в 3.5 SP1.

После некоторого взлома с проверкой и снятием флажка я получил такой файл конфигурации:

<configuration>
  <configSections>
    <section name = "modules" type = "Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile = "Modules/MyNamespace.Modules.ModuleName.dll" moduleType = "MyNamespace.Modules.ModuleName.ModuleClass" moduleName = "Name"/>
  </modules>
  <startup>
    <supportedRuntime version = "v2.0.50727" sku = "Client"/>
  </startup>
</configuration>

Что работает!

Я не уверен, почему важен порядок элементов в app.config, но похоже, что это так.

Элемент <configSections> должен быть первым. Порядок остальных не имеет значения.

Alex 14.03.2011 15:25

Если я правильно помню, это была сама Visual Studio, которая изменила порядок элементов, вставив элемент <startup>, отсюда и мое замешательство.

Adrian Clark 15.03.2011 09:28

Была точно такая же ошибка, и, как сказал Алекс, переместил мой configSections в верхнюю часть моей конфигурации и теперь работает нормально. Вызвано изменением профиля клиента на .Net 4.

windowsgm 13.02.2013 20:57

У вас есть два раздела с названием «модули». Поместите оба определения модуля в один раздел под названием «модули».

Я столкнулся с похожей ситуацией. После недели поисков я нашел разрешение, и оно действительно сработало. Это решило 2-3 проблемы, возникающие из-за одной и той же проблемы.

Следуй этим шагам: Проверить (отсутствие) ключа WPF в реестре: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Setup \ Windows Presentation Foundation Моя проблема была связана с отсутствием вышеупомянутого ключа в реестре.

Вы можете изменить и использовать следующие данные в своем реестре: (Фактически, вы можете сохранить в файл и импортировать в реестр)

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Setup \ Windows Presentation Foundation] @ = "WPF v3.0.6920.1453" "Версия" = "3.0.6920.1453" "WPFReferenceAssembliesPathx86" = "C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.0 \" "WPFCommonAssembliesPathx86" = "C: \ Windows \ System32 \" "InstallRoot" = "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ WPF \" "InstallSuccess" = dword: 00000001 "ProductVersion" = "3.0.6920.1453" "WPFNonReferenceAssembliesPathx86" = "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ WPF \"

Я уверен, что это сработает.

всего наилучшего.

С уважением,

Умеш

Что-то неправильное в файле App.config может вызвать ошибку, например, опечатка * в конце строки, например, ...</startup> имеет дополнительный "*" в конце строки ...</startup>*.

Идеально. Ты спас мне день. Я понятия не имел, что происходит с этим исключением. Я случайно набрал «4» в своем app.config, и это было причиной исключения. Спасибо.

Mandeep Janjua 20.02.2014 10:16

Глубоко отслеживая InnerExceptions, вы можете обнаружить следующую ошибку:

"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element"

Это изменение порядка произошло после того, как мастер Visual Studio EntityFramework добавил элемент connectionStrings вверху.

Если вы видите только исключение TypeInitializationException без причины или сведений о том, что не так, отключите параметр «Только мой код» в параметрах Visual Studio.

В моем случае нужно добавить:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name = "entityFramework" type = "System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission = "false" />

Раздел в App.config (VS 2015 .NET 4.5.2)

Откройте любой проект WPF, созданный ранее, проверьте сборку, если все в порядке - проверьте и сравните App.config в обоих проектах

Что касается меня, я скопировал настройки приложения из другого приложения в свой app.config в новый раздел под названием «userSettings». Однако в app.config также должен быть добавлен «configSections», который определяет «userSettings». Я удалил раздел userSettings, затем отредактировал настройки приложения и сохранил их. VS автоматически создает для вас правильные "userSettings" и "configSections", если они отсутствуют.

Для меня я переименовал свое имя приложения и вызвал эту ошибку. У меня было серверное и клиентское приложение. в серверном приложении этой проблемы не было. поэтому я проверил файл App.config как сервера, так и клиента. я нашел

<startup>
<supportedRuntime version = "v4.0" sku = ".NETFramework,Version=v4.6.1" />
</startup>

<configSections>
<section name = "entityFramework" type = "System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission = "false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>

Тег <startup> над тегом <configSections> на клиенте и сервере был другим способом, поэтому я скопировал вставленный тег запуска в тег configSections, и он сработал. Так.

<configSections>
<section name = "entityFramework" type = "System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission = "false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>

<startup>
<supportedRuntime version = "v4.0" sku = ".NETFramework,Version=v4.6.1" />
</startup>

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