public AddInController(IXExtension ext) { AppDomain.CurrentDomain.ResolveBindingRedirects(new LocalAppConfigBindingRedirectReferenceResolver()); m_HostModule = new AddInHostModule(ext); m_Ext = ext; var cmdGrp = ext.CommandManager.AddCommandGroup <CadPlusCommands_e>(); cmdGrp.CommandClick += OnCommandClick; var modulesDir = Path.Combine(Path.GetDirectoryName(this.GetType().Assembly.Location), "Modules"); var catalog = CreateDirectoryCatalog(modulesDir, "*.Module.dll"); var container = new CompositionContainer(catalog); container.SatisfyImportsOnce(this); if (m_Modules?.Any() == true) { foreach (var module in m_Modules) { module.Load(ext); } } }
protected override void OnStartup(StartupEventArgs e) { this.DispatcherUnhandledException += OnDispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += OnDomainUnhandledException; OnAppStart(); var parserOutput = new StringBuilder(); TCliArgs args; bool hasArgs; bool hasError; using (var outputWriter = new StringWriter(parserOutput)) { var parser = new Parser(p => { p.CaseInsensitiveEnumValues = true; p.AutoHelp = true; p.EnableDashDash = true; p.HelpWriter = outputWriter; p.IgnoreUnknownArguments = false; }); TryExtractCliArguments(parser, e.Args, out args, out hasArgs, out hasError); } if (hasArgs) { //WindowsApi.AttachConsole(-1); ConsoleHandler.Attach(); SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); m_HostModule = new ConsoleHostModule(); var res = false; if (!hasError) { try { RunConsole(args) .ConfigureAwait(false) .GetAwaiter() .GetResult(); res = true; } catch (Exception ex) { //TODO: message exception PrintError(ex.Message); } } else { Console.Write(parserOutput.ToString()); } Environment.Exit(res ? 0 : 1); } else { m_HostModule = new WpfAppHostModule(this); base.OnStartup(e); } }