WPF IOException에서 리소스를 찾을 수 없습니다.
WPF 어플리케이션이 있습니다.
시 MainWindow.xaml
의 StartupUri 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.dll
WPF my my product.실행하다으로 ★★★★★★★★★★★★★★★★★★★★.IOException
★★★★★★에mainwindow.xaml
.
이것이 누군가에게 도움이 된다면, 저는 자원 경로에서 명백한 문제 없이 이 문제에 직면하고 있었습니다.하나는 메인 어플리케이션어셈블리에 의해 참조되는 WPF 제어 라이브러리에서 이것을 사용하고 있다는 것입니다.
을 「URL(URL)」로 입니다.pack://
「」는 다음과 다음과 같이 합니다.
Source="pack://application:,,,/MyLib;component/SettingsPage.xaml"
다음 대신:
Source="SettingsPage.xaml"
App.xaml
StartupUri
를 )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
'programing' 카테고리의 다른 글
테이블 내부의 텍스트 정렬 클래스 (0) | 2023.04.12 |
---|---|
SQL Server에서 날짜만과 날짜/시간을 비교하는 방법 (0) | 2023.04.12 |
VBA에서 글로벌 변수를 선언하려면 어떻게 해야 하나요? (0) | 2023.04.12 |
SQL 소수점 2자리 반올림 (0) | 2023.04.12 |
대규모 SQL 스크립트 실행(GO 명령 사용) (0) | 2023.04.12 |