Я разрабатываю Prism 6 модульное приложение WPF MVVM для коммутации изображений с Unity в MSVS 2015 Professional (русифицированное). System.TypeInitializationException с сообщением «Инициализатор типа для« System.Windows.Application »выбрал исключение», который запускается, когда мое приложение запускается. Это исключение стало бросаться после того, как я добавил регистрацию модулей в файл App.config. Ниже представлена структура моего решения приложения:System.TypeInitializationException выбрасывается при запуске приложения Prism 6 WPF
Как вы можете видеть, что решение имеет основной проект «FlowmeterConfiguration» и два проекта Prism модуль: Authorization и калибровку. Имена проектов Prism Module деируются с именами их классов модулей. Проект Authorization имеет AuthorizationModule класс:
namespace Authorization
{
[Module(ModuleName = "AuthorizationModule", OnDemand = false)]
public class AuthorizationModule : IModule
{
. . . . .
}
}
и проект калибровки имеет CalibrationModule класс:
namespace Calibration
{
[Module(ModuleName = "CalibrationModule", OnDemand = false)]
public class CalibrationModule : IModule
{
. . . . .
}
}
Ниже приведен App.config файл:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<modules>
<module assemblyFile="Authorization.dll" moduleType="Authorization.AuthorizationModule, Authorization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="AuthorizationModule" startupLoaded="true" />
<module assemblyFile="Calibration.dll" moduleType="Calibration.CalibrationModule, Calibration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="CalibrationModule" startupLoaded="true" />
</modules>
</configuration>
Ниже Bootstrepper класс:
namespace FlowmeterConfigurator
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override IModuleCatalog CreateModuleCatalog()
{
return new ConfigurationModuleCatalog();
}
}
}
Если я удаляю регистрацию модулей из метода App.config и CreateModuleCatalog из загрузочного файла, исключение не выполняется, и приложение запускается успешно. Если я попытаюсь зарегистрировать модули с помощью кода (в Bootstrepper), тогда типы модулей: авторизация и калибровка не распознаются и помечены как ошибка (авторизация.AuthrizationModule и Calibration.CalibrationModule в этом случае также не распознаются). Но я должен зарегистрировать свои модули! Что я делаю неправильно? Пожалуйста, помогите мне.
Попробую залить. –
Отметьте ответ как решение в ваших вопросах, если это вам помогло – galakt