c# wpf ioexception

c# - WPF IOException No se puede ubicar el recurso



(14)

Además, si anulas OnStartup(StartupEventArgs e) en tu app.xaml.cs, también debes eliminar la línea StartUri="mainwindow.xaml" de app.xaml. De lo contrario, obtendrá "No se puede encontrar el recurso ''MainWindow1.xaml''" también en este caso.

Tengo una aplicación WPF.

La página que se abre cuando la aplicación se ejecuta en MainWindow.xaml, como se establece en el atributo StartupUri del archivo App.xaml. Esta página se abre bien.

Sin embargo, si intento abrir cualquier otra ventana usando el método Show o ShowDialog obtengo una IOException en el método InitializeComponent que dice "No se puede localizar el recurso ''Window1.xaml''" (o como se llame al archivo). Esto sucede con cada ventana que creo. He buscado en línea, pero todas las soluciones parecen decir "asegúrese de que el atributo StartupUri de App.xaml es correcto" y el mío es, por lo tanto, la apertura de MainWindow.

¿Tienes idea de lo que está pasando?


Asegúrate de no haber movido accidentalmente el archivo MainWindow.xaml alguna forma, Mine ha sido arrastrado a Views por error. Vaya


Compruebe en App.xaml la etiqueta StartupUri (si movió MainWindow ).


Encuentre el archivo app.g.cs y app.g.cs en el Bloc de notas, en Visual Studio le pedirá que vuelva a cargar el archivo, haga clic en Aceptar y listo.


Esta IOException puede ser causada por la ambigüedad del nombre del ensamblado. Por ejemplo, nombré un ensamblado myproduct.dll , luego agregué una referencia a él en la aplicación WPF myproduct.exe. Esto dio la IOException para mainwindow.xaml .


Incluso tuve el mismo problema, primero continué desenterrando el problema, todavía apuntaba a InitializeComponent(); Finalmente descubrí que actualicé el contenido del archivo Resources.resx , pero en la carpeta de mi aplicación no lo actualicé. Así que más tarde copió el nuevo archivo resx y lo probé. Ahora funciona bien.

Cualquiera que venga con este problema, mire esto una vez.


Lo anterior no funcionó para mí, pero lo que hizo el trabajo fue el siguiente. Abra la App.xaml

<Application x:Class="dotDiff2013.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>

Luego necesita cambiar el URI de inicio al totalmente calificado. En mi caso, había movido mi MainWindow.xaml a una carpeta llamada ''Main'', por lo que cambié el URI anterior a

StartupUri="Main/MainWindow.xaml"

Resolvió mi problema.


Me di cuenta de este problema después de localizar mi aplicación. Terminé con un recurso satelital que no incluí en mi script instalador. Entonces, si bien funcionó en Visual Studio, construir el instalador por separado causó este problema.

Incluyendo el dll de satélite hizo el truco.



Mismo problema pero otra solución más:

Para mí, mi nombre de conjunto y el espacio de nombre predeterminado eran los mismos pero diferentes del nombre del proyecto . De hecho, actualicé el espacio de nombre predeterminado y el nombre del ensamblado para que coincida con el nuevo nombre del proyecto y lo arregló.


Si abre el código subyacente para el archivo Window1.xaml (es decir, Window1.xaml.cs), puede hacer clic con el botón derecho en la llamada al método InitializeComponent y seleccionar "Goto Definition". Habrá un código como el siguiente:

/// <summary> /// InitializeComponent /// </summary> [System.Diagnostics.DebuggerNonUserCodeAttribute()] public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Uri resourceLocater = new System.Uri("/TestApp;component/mainwindow.xaml", System.UriKind.Relative); #line 1 "../../../MainWindow.xaml" System.Windows.Application.LoadComponent(this, resourceLocater); #line default #line hidden }

Si el URI en el código anterior no es correcto, entonces recibirás ese error que obtuviste.

Además, si Build Action del archivo XAML no está configurado en "Página", entonces también tendría ese problema. Para verificar esto, puede seleccionar el archivo en el Explorador de soluciones y presionar F4.

Finalmente, si algo cambia el nombre del archivo XAML como parte de su proceso de compilación (como ofuscación), entonces nuevamente recibirá ese error.

Aparte de eso, probaría una "Solución limpia" y una "Solución de reconstrucción" para garantizar que se reconstruya el archivo con la definición de InitializeComponent.


Tuve el mismo problema. La razón para mí es porque moví MainWindow.xaml sin ajustar App.xaml. Si mueve su MainWindow.xaml por ejemplo a una carpeta llamada "UI", debe ajustar la siguiente línea en la aplicación.xaml

StartupUri="UI/Mainwindow.xaml"


Tuve este problema cuando el "AssemblyName" y el "Default Namespace" en la configuración del proyecto tenían el mismo valor. Cambiar el AssemblyName a otra cosa resolvió el problema.


<Application x:Class="RuleSetEditor.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="/Forms/RuleEditor.xaml"> <Application.Resources> </Application.Resources> </Application>

aquí / Formularios / es mi estructura de carpetas en mi proyecto. Asegúrate de que esto se menciona en app.xaml