programing

WPF IOException에서 리소스를 찾을 수 없습니다.

instargram 2023. 4. 12. 21:45
반응형

WPF IOException에서 리소스를 찾을 수 없습니다.

WPF 어플리케이션이 있습니다.

MainWindow.xamlStartupUri Atribute로 설정되어 있습니다.App.xaml이 페이지는 정상적으로 열립니다.

그러나 Show 또는 ShowDialog 메서드를 사용하여 다른 창을 열려고 하면IOException InitializeComponent법 saying라고 하는 "Cannot locate resource 'Window1.xaml'"( ( ( ( ( ( ( ( ( 。이 작업은 제가 만든 모든 창에서 수행됩니다.온라인으로 검색했는데 모든 솔루션이 "App.xaml의 StartupUri 속성이 맞는지 확인하세요"라고 되어 있고, 저는 정확하기 때문에 Main Window가 열립니다.

무슨 일인지 알아?

위 사항은 나에게 효과가 없었지만 효과가 있었던 것은 다음과 같습니다., 그럼 '열다'를 .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>

그런 다음 스타트업 URI를 완전 수식 URI로 변경해야 합니다.에는 제가 했습니다.MainWindow.xaml「Main하는 이름의 , 의 URI 를 「Main」으로 합니다.

StartupUri="Main/MainWindow.xaml"

내 문제를 해결했다.

프로젝트 설정의 "AssemblyName"과 "Default Namespace"의 값이 같을 때 이 문제가 발생했습니다.AssemblyName을 다른 것으로 변경하면 문제가 해결되었습니다.

Window1.xaml 파일(Window1.xaml.cs 등)의 코드 배면을 열면 Initialize Component 메서드 호출을 오른쪽 클릭하여 "Goto Definition"을 선택할 수 있습니다.다음과 같은 코드가 있습니다.

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

위 코드의 URI가 올바르지 않은 경우는, 그 에러가 표시됩니다.

게다가 XAML 파일의 빌드 액션이 「페이지」로 설정되어 있지 않은 경우, 그 문제도 발생합니다.이를 확인하려면 솔루션 탐색기에서 파일을 선택하고 F4 키를 누릅니다.

마지막으로 빌드 프로세스의 일부로 XAML 파일의 이름을 변경하는 경우(예: 난독화)에도 해당 오류가 발생합니다.

그 외에 Initialize Component 정의가 있는 파일을 재구축하기 위해 "Clean Solution" 및 "Rebuild Solution"을 사용해 보겠습니다.

저도 같은 문제가 있었어요.그 이유는 App.xaml을 조정하지 않고 Main Window.xaml을 이동했기 때문입니다.예를 들어 Main Window.xaml을 "라는 폴더로 이동하면UI"는 App.xaml에서 다음 행을 조정해야 합니다.

         StartupUri="UI/Mainwindow.xaml"
<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>

여기서 /Forms/는 프로젝트의 폴더 구조입니다.이것이 app.xaml에 기재되어 있는지 확인합니다.

내 문제는 아주 사소한 것이었다.내 파일의 빌드 액션이 "없음"으로 설정되었습니다.

[ Resource ](리소스)로 설정하지 않으면 예외가 됩니다.

★★★★★★★★★★★★★★★★★.IOException어셈블리 이름이 불분명하기 때문에 발생할 수 있습니다.를 들어 .myproduct.dllWPF my my product.실행하다으로 ★★★★★★★★★★★★★★★★★★★★.IOException★★★★★★에mainwindow.xaml.

이것이 누군가에게 도움이 된다면, 저는 자원 경로에서 명백한 문제 없이 이 문제에 직면하고 있었습니다.하나는 메인 어플리케이션어셈블리에 의해 참조되는 WPF 제어 라이브러리에서 이것을 사용하고 있다는 것입니다.

을 「URL(URL)」로 입니다.pack://」는 다음다음과 같이 합니다.

Source="pack://application:,,,/MyLib;component/SettingsPage.xaml"

다음 대신:

Source="SettingsPage.xaml"

App.xamlStartupUri를 )MainWindow를 참조해 주세요.

, 되면, 약약 also also면면면면면면면면면면면면면면 면 also also also alsoOnStartup(StartupEventArgs e)app.에서도 app.xaml.cs 행을 .StartUri="mainwindow.xaml"app.xaml에서 .에도 "리소스 '메인 창 1'을 찾을 수 없습니다"라는 메시지가 나타납니다이 경우에도 xaml'이 표시됩니다.

, 캐고 은 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★InitializeComponent(); 된 .Resources.resx파일 내용을 업데이트하지 않았습니다.그래서 나중에 새로운 resx 파일을 복사하여 사용해 보았습니다.이제 잘 작동합니다.

이 문제가 있는 사람은 누구나 한 번 봐주세요.

이 문제를 해결하려면 앱으로 이동하십시오.응용 프로그램 실행 시 실행할 StsrtUpUri를 Xaml하고 변경합니다.여기에 이미지 설명 입력

스타트업 URI 변경

Xaml이 폴더 안에 있는 경우 다음과 같이 추가할 수 있습니다.

StartupUri="View/MyView.xaml"

해 주세요.MainWindow.xaml.Views

" " 를 .app.g.cs하고 []를 하여 [ Studio]을 합니다.

같은 문제이지만 또 다른 해결책:

저는 어셈블리 이름과 기본 네임스페이스는 같지만 프로젝트 이름과 달랐습니다.새 프로젝트 이름과 일치하도록 기본 네임스페이스와 어셈블리 이름을 업데이트하여 수정했습니다.

어플리케이션을 현지화한 후에 이 문제를 발견했습니다.설치 스크립트에 포함되지 않은 위성 리소스를 갖게 되었습니다.따라서 Visual Studio에서 동작하는 동안 설치 프로그램을 별도로 빌드하면 이 문제가 발생했습니다.

위성 dll을 포함하면 효과가 있었어

네임스페이스의 이름을 글로벌하게 변경했을 수도 있고(프로젝트/프로젝트명 등), 로컬로 변경했을 수도 있지만, 솔루션 obj\Debug 폴더의 일부 콘텐츠(xaml 클래스, [original_xaml_file_name.g.i.cs]로 종료)는 변경되지 않았습니다.다음 번에는 솔루션(외부 아이템 포함)을 선택합니다.

'빌드'로 이동하여 '재구축' 및 '클린'으로 이동하기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/6518603/wpf-ioexception-cannot-locate-resource

반응형