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

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

У меня есть простое приложение WPF, которое я пытаюсь запустить. Я следую шаблонам и методам Microsoft "Руководство по составлению составных приложений для WPF". Я следил за их инструкциями, однако мое приложение WPF немедленно завершилось "Исключением типа".

Свойство 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();
    }
}

Я установил класс "App" в качестве объекта запуска в проекте.

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

4b9b3361

Ответ 1

Спасибо @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 важен - но, похоже, это так.

Ответ 2

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

Ответ 3

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

Ответ 4

Отслеживая глубину 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 в начало

Ответ 5

Если вы видите только исключение TypeInitializationException без каких-либо причин или никаких подробностей о том, что неправильно, тогда отключите Just My Code в параметрах Visual Studio.

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework\NDP\v3.0\Setup\Windows Presentation Foundation] @= "WPF v3.0.6920.1453" "Version" = "3.0.6920.1453" "WPFReferenceAssembliesPaспасибо86" = "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 \" "WPFCommonAssembliesPaспасибо86" = "C:\Windows\System32 \" "InstallRoot" = "C:\Windows\Microsoft.NET\Framework\v3.0\WPF \" "InstallSuccess" = DWORD: 00000001 "ProductVersion" = "3.0.6920.1453" "WPFNonReferenceAssembliesPaспасибо86" = "C:\Windows\Microsoft.NET\Framework\v3.0\WPF \"

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

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

Привет,

Umesh

Ответ 9

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

<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 в обоих проектах