Estoy tratando de usar .NET 4 SplashScreen en una aplicación WPF basada en Prism. He utilizado SpashScreen configurando la acción de compilación en la imagen en SplashScreen.Cómo utilizar .NET 4 SplashScreen en una aplicación basada en Pris WPF?
La aplicación utilizada para seguir estrellándose con un System.Resources.MissingManifestResourceException
. Finalmente me di cuenta de que si agrego un StartupUri = "MainWindow.xaml" en el archivo App.Xaml, el SplashScreen funciona bien.
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
</Application>
Pero en una aplicación de prisma, no podemos tener un StartupUri. Todo está hecho en el Bootstrapper.
Entonces, ¿qué tengo que hacer manualmente que StartupUri hizo para que SplashScreen funcione?
Actualización 1: El mensaje de excepción es completa:
System.Resources.MissingManifestResourceException fue controlada
Mensaje = No se pudo encontrar recursos adecuados para la cultura especificada o la referencia cultural neutra. Asegúrese de que "Application.g.resources" esté incrustado o vinculado correctamente en assembly "Application" en tiempo de compilación, o que todos los conjuntos de satélite necesarios sean cargables y estén completamente firmados.
Actualización 2: he dado cuenta de la adición o eliminación de la StartupUri no importa. Lo que importa es que tengo una ventana WPF adicional (que no sea App.xaml) o 2 entradas ficticias en la etiqueta App.Resources.
<Application.Resources>
<Style x:Key="Dummy"/>
<Style x:Key="Dummy1"/>
</Application.Resources>
Si no hago esto, el archivo Application.g.resources no se crea en el archivo obj y por lo tanto no se incrusta en el ejecutable. Añadiendo dos entradas de recursos ficticias me llamó la atención por este blog post.
Actualización 3:
Mi pregunta fue respondida por Bob Bao en el foro de MSDN here. También parece que Kent estaba tratando de señalarme en la misma dirección.
No establezca la acción de compilación de la imagen en SplashScreen. En su lugar:
Agregue el código en el método de aplicación OnStartup como:
protected override void OnStartup(StartupEventArgs e)
{
SplashScreen splashScreen = new SplashScreen("splashscreen.png");
splashScreen.Show(true);
base.OnStartup(e);
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
}
"splashscreen.png" es una imagen en el proyecto, y su "Acción de generación" es "Recurso".
se trata aquí en alguna parte? – DeCaf
@DeCaf He actualizado la pregunta. –