WPF IOException Não é possível localizar recurso

Eu tenho um aplicativo WPF.

A página que é aberta quando o aplicativo é executado em MainWindow.xaml, conforme definido no atributo StartupUri do arquivo App.xaml. Esta página abre bem.

No entanto, se eu tentar abrir qualquer outra janela usando o método Show ou ShowDialog, recebo uma IOException no método InitializeComponent dizendo “Não é possível localizar o recurso ‘Window1.xaml'” (ou qualquer que seja o arquivo chamado). Isso acontece com todas as janelas que eu criar. Eu procurei on-line, mas todas as soluções parecem dizer “certifique-se de que o atributo StartupUri do App.xaml está correto” e o meu é, portanto, a abertura do MainWindow.

Alguma idéia do que está acontecendo?

O acima não funcionou para mim, mas o que funcionou foi o seguinte. Abra o App.xaml

     

Em seguida, você precisa alterar o URI de boot para o totalmente qualificado. No meu caso eu movi meu MainWindow.xaml para uma pasta chamada ‘Main’, então mudando o URI acima para

 StartupUri="Main/MainWindow.xaml" 

Resolvi meu problema.

Eu tive esse problema quando o “AssemblyName” e o “Namespace padrão” nas configurações do projeto tinham o mesmo valor. Alterar o AssemblyName para outra coisa resolveu o problema.

Eu tive o mesmo problema. A razão para mim porque eu mudei o MainWindow.xaml sem ajustar o App.xaml. Se você mover seu MainWindow.xaml por exemplo para uma pasta chamada “UI”, você deve ajustar a seguinte linha no App.xaml

  StartupUri="UI/Mainwindow.xaml" 

Se você abrir o code-behind para o arquivo Window1.xaml (por exemplo, Window1.xaml.cs), você pode clicar com o botão direito na chamada do método InitializeComponent e selecionar “Goto Definition”. Haverá código como o seguinte:

 ///  /// InitializeComponent ///  [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 } 

Se o Uri no código acima não estiver correto, você receberá esse erro.

Além disso, se a ação de compilation do arquivo XAML não estiver definida como “Página”, você também terá esse problema. Para verificar isso, você pode selecionar o arquivo no Solution Explorer e pressionar F4.

Finalmente, se algo estiver renomeando o arquivo XAML como parte de seu processo de compilation (como ofuscação), você receberá novamente esse erro.

Além disso, eu tentaria uma “Solução Limpa” e “Rebuild Solution” para garantir que o arquivo com a definição InitializeComponent seja recriado.

     

aqui / Forms / é a minha estrutura de pastas no meu projeto. Certifique-se de que isso seja mencionado em app.xaml

Essa IOException pode ser causada pela ambigüidade do nome do assembly. Por exemplo, eu nomeei um assembly myproduct.dll , em seguida, adicionei uma referência a ele no aplicativo myproduct.exe do WPF. Isso deu a IOException para mainwindow.xaml .

Veja minha análise aqui. Lá é explicado, o que está acontecendo e há uma solução alternativa também: http://connect.microsoft.com/VisualStudio/feedback/details/759432 (“Análise do” Não é possível localizar o recurso app.xaml “travamento (projetos WPF)”)

Verifique na App.xaml a tag StartupUri (se você moveu a MainWindow ).

Além disso, se acontecer de você replace OnStartup(StartupEventArgs e) no seu app.xaml.cs, você também deve remover a linha StartUri="mainwindow.xaml" do app.xaml. Caso contrário, você receberá “Não é possível localizar o recurso ‘MainWindow1.xaml'” também neste caso.

Mesmo eu tive o mesmo problema, primeiro fui desenterrando o problema ainda estava apontando para InitializeComponent(); Eu finalmente descobri que eu atualizei o conteúdo do arquivo Resources.resx , mas na minha pasta de aplicativos eu não atualizei. Então, mais tarde copiou o novo arquivo resx e tentou. Agora funciona bem.

Apenas alguém no caso de vir com esta questão, veja isto uma vez.

Certifique-se de que você não tenha movido acidentalmente o arquivo MainWindow.xaml Mine de alguma forma foi arrastado para o Views por engano – oops

Encontre o arquivo app.g.cs e edite-o no Bloco de Notas, no Visual Studio ele pedirá que você recarregue o arquivo, clique em OK e voila

Mesmo problema, mas ainda outra solução:

Para mim, o nome do meu assembly e o namespace padrão eram os mesmos, mas diferentes do nome do projeto . Na verdade, atualizei o namespace padrão e o nome do assembly para corresponder ao novo nome do projeto e corrigi-lo.

Eu notei esse problema depois de localizar meu aplicativo. Acabei com um recurso de satélite que não incluí no meu script de instalação. Portanto, embora funcionasse no Visual Studio, criar o instalador separadamente causou esse problema.

Incluindo a dll satélite fez o truque.

Para resolver esse problema, vá para App.Xaml e altere o StsrtUpUri que você deseja executar quando o aplicativo for executado. insira a descrição da imagem aqui

Alterar a boot Uri insira a descrição da imagem aqui

E se o Xaml estiver dentro de qualquer pasta, você pode adicionar como segue

StartupUri = “Ver / MyView.xaml”