¿Cómo resolver el error "No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.Prism'" error?

He estado buscando los últimos días tratando de corregir un error en una aplicación WPF usando Prism, pero no he tenido suerte y pensé en ver si Stackoverflow tenía alguna idea. Tenga en cuenta que definitivamente soy un novato cuando se trata de Prism en general :)

Estoy en el proceso de aprender a crear una aplicación usando Prism, con Unity como mi contenedor de inyección de dependencia de elección. Estoy tratando de cargar módulos utilizando un archivo App.config modificado, pero obtengo un error de tiempo de ejecución relacionado con el programa de arranque. Los mensajes de error serán más precisos que cualquier explicación que pueda proporcionar, por lo que he incluido el archivo App.config, el archivo App.xaml.cs donde aparece el error y la información de error a continuación.

Gracias de antemano por cualquier información que pueda proporcionar, y avíseme si hay alguna información adicional que pueda necesitar.

EDITAR: Este directorio de archivos al que se hace referencia en el error (C: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ bin \ Debug \ WpfApplication1.exe. La línea de configuración 4) se refiere a la cuarta línea del archivo App.config (nombre de sección = ...) Todos los tutoriales y referencias que he encontrado son los mismos que tengo, pero esta sigue siendo la línea que está causando problemas.

EDITAR 2: La línea a la que se hace referencia en la primera edición es en realidad exactamente la misma que la que está en el oficialGuía de Microsoft Prism.

EDITAR 3: Así que nunca descubrí la raíz de lo que estaba causando esto, pero en mi frustración reinicié el proyecto de ejemplo en el que estaba trabajando y no obtengo el error en el nuevo proyecto. Sin embargo, todavía no estoy seguro de cuál era la raíz del problema.

EDITAR 4: Es broma, el mismo error está de vuelta en el nuevo programa.

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="modules" type="Microsoft.Practices.Prism.Modularity.ModulesConfigurationSection, Microsoft.Practices.Prism"/>
  </configSections>

  <modules>
    <module assemblyFile="EmailModule.dll" moduleType="EmailService.ModuleDefinitions.Module, EmailService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="EmailModule" startupLoaded="true" />
  </modules>


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

App.xaml.cs (el error aparece en la línea "bootstrapper.Run ()"):

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace EmailClient
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            MyBootstrapper bootstrapper = new MyBootstrapper();
            bootstrapper.Run();
        }
    }
}

Mensaje de error:

System.Configuration.ConfigurationErrorsException no se manejó HResult = -2146232062 Mensaje = Se produjo un error al crear el controlador de la sección de configuración para módulos: No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.Prism' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. (C: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ bin \ Debug \ WpfApplication1.exe.Config línea 4) Fuente = System.Configuration BareMessage = Se produjo un error al crear el controlador de la sección de configuración para los módulos: No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.Prism' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Nombre de archivo = C: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ bin \ Debug \ WpfApplication1.exe.Config Line = 4 StackTrace: at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord (String configKey). .BaseConfigurationRecord.GetSectionRecursive (String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object & result, Object & resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSection (SystemConfiguration.Configuración. .IInternalConfigSystem.GetSection (String sectionName) en System.Configuration.ConfigurationManager.GetSection (String sectionName) en Microsoft.Practices.Prism.Modularity.ConfigurationStore.RetrieveModuleConfigurationSection () en Microsoft.Practices.Prism.Modular.Configuration. .Practices.Prism.Modularity.Con figurationModuleCatalog.InnerLoad () en Microsoft.Practices.Prism.Modularity.ModuleCatalog.Load () en Microsoft.Practices.Prism.Modularity.ModuleCatalog.Initialize () en Microsoft.Practices.Prism.Modularity.ModuleManager.Run () en Microsoft. Practices.Prism.UnityExtensions.UnityBootstrapper.InitializeModules () en Microsoft.Practices.Prism.UnityExtensions.UnityBootstrapper.Run (Boolean runWithDefaultConfiguration) en Microsoft.Practices.Prism.Bootstrapper.Run () en el correo electrónico. c: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ App.xaml.cs: línea 21 en System.Windows.Application. <. ctor> b__1 (Objeto no utilizado) en System.Windows.Threading.ExceptionWrapper.InternalRealCall ( Devolución de llamada de delegado, Argumentos de objeto, Int32 numArgs) en MS.Internal.Threading.ExceptionFilterHelper. CalculateCatchWhen (Origen del objeto, Método de delegado, Argumentos de objeto, Int32 numArgs, Delegar catchHandler) en System.Windows.Threading.DispatcherOperation.InvokeImpl () en System. Windows.Threadi ng.DispatcherOperation.InvokeInSecurityContext (estado del objeto) en System.Threading.ExecutionContext.RunInternal (ExecutionContext executeContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) en System.Threading.ExecutionContext.Run (ExecutionContext executeContext, Contextxt Estado de ejecución, Context, Estado de ejecución de un mensaje de texto, Context Estado de la ejecución de un mensaje de texto. ) en System.Threading.ExecutionContext.Run (ExecutionContext executeContext, ContextCallback callback, Object state) en System.Windows.Threading.DispatcherOperation.Invoke () en System.Windows.Threading.Dispatcher.ProcessQueue () en System.Windows.Threading. Dispatcher. DispatcherCallbackOperation (Object o) en System.Windows.Threading.ExceptionWrapper.InternalRealCall (devolución de llamada delegada, argumentos de objeto, Int32 numArgs) en MS.Internal.Threadin g.ExceptionFilterHelper. TryCatchWhen (fuente del objeto, método Delegate, argumentos Arg, Int32 numArgs, Delegate catchHandler) en System.Windows.Threading.Dispatcher.LegacyInvokeImpl (DispatcherPriority prioridad, TimeSpan timeout, método Delegate, Object args, Int32 numArgs) en MS. Win32.HwndSubclass.SubclassWndProc (IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) en MS.Win32.UnsafeNativeMethods.DispatchMessage (MSG & msg) en System.Windows.Threading.Dispatcher.PushFrameImpl. .Dispatcher.PushFrame (marco DispatcherFrame) en System.Windows.Threading.Dispatcher.Run () en System.Windows.Application.RunDispatcher (ignorar objeto) en System.Windows.Application.RunInternal (ventana de ventana) en System.Windows.Application .Run (ventana de ventana) en System.Windows.Application.Run () en EmailClient.App.Main () en c: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ obj \ Debug \ App.g.cs: línea 50 InnerException: System.IO.FileNotFoundException HResult = -2147024894 Mensaje = No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.Prism' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Source = System.Configuration FileName = Microsoft.Practices.Prism FusionLog ==== Información de estado de pre-enlace === LOG: DisplayName = Microsoft.Practices.Prism (Parcial) WRN: Se proporcionó información de enlace parcial para un ensamblado: WRN: Nombre de ensamblado: Microsoft.Practices.Prism | ID de dominio: 1 WRN: se produce un enlace parcial cuando solo se proporciona parte del nombre para mostrar del ensamblado. WRN: Esto podría ocasionar que la carpeta cargue un ensamblaje incorrecto. WRN: se recomienda proporcionar una identidad textual completamente especificada para el ensamblado, WRN: que consiste en el nombre simple, la versión, la cultura y el token de clave pública. WRN: Ver documentohttp://go.microsoft.com/fwlink/?LinkId=109270 para obtener más información y soluciones comunes a este problema. LOG: Appbase = file: /// C: / Users / Roger / Documents / TestPrismProject / WpfApplication1 / WpfApplication1 / bin / Debug / LOG: Initial PrivatePath = Conjunto de llamadas NULL: System.Configuration, Version = 4.0.0.0, Culture = neutral , PublicKeyToken = b03f5f7f11d50a3a. REGISTRO: Este enlace comienza en el contexto de carga predeterminado. LOG: utilizando el archivo de configuración de la aplicación: C: \ Users \ Roger \ Documents \ TestPrismProject \ WpfApplication1 \ WpfApplication1 \ bin \ Debug \ WpfApplication1.exe.Config LOG: utilizando el archivo de configuración del host: LOG: utilizando el archivo de configuración de la máquina desde C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config. REGISTRO: la política no se aplica a la referencia en este momento (enlace de ensamblaje privado, personalizado, parcial o basado en la ubicación). REGISTRO: Intentando descargar el nuevo archivo URL: /// C: /Users/Roger/Documents/TestPrismProject/WpfApplication1/WpfApplication1/bin/Debug/Microsoft.Practices.Prism.DLL. LOG: Intento de descarga del nuevo archivo URL: /// C: /Users/Roger/Documents/TestPrismProject/WpfApplication1/WpfApplication1/bin/Debug/Microsoft.Practices.Prism/Microsoft.Practices.Prism.DLL. REGISTRO: Intentando descargar el nuevo archivo URL: /// C: /Users/Roger/Documents/TestPrismProject/WpfApplication1/WpfApplication1/bin/Debug/Microsoft.Practices.Prism.EXE. REGISTRO: Intentando descargar el nuevo archivo URL: /// C: /Users/Roger/Documents/TestPrismProject/WpfApplication1/WpfApplication1/bin/Debug/Microsoft.Practices.Prism/Microsoft.Practices.Prism.EXE.

   StackTrace:
        at System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host, String typeString, Boolean throwOnError)
        at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.Init(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
        at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.InitWithRestrictedPermissions(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
        at System.Configuration.RuntimeConfigurationRecord.CreateSectionFactory(FactoryRecord factoryRecord)
        at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere)
   InnerException: 

Respuestas a la pregunta(6)

Su respuesta a la pregunta