code

WPF 응용 프로그램에서 클래스 라이브러리에 XAML 컨트롤을 복사한 후의 문제

starcafe 2023. 4. 18. 23:11
반응형

WPF 응용 프로그램에서 클래스 라이브러리에 XAML 컨트롤을 복사한 후의 문제

일부 코드를 리팩터링하는 과정에서 다음과 같은 빌드 오류가 발생했습니다.

라이브러리 프로젝트 파일에서 ApplicationDefinition 요소를 지정할 수 없습니다.

프로젝트 파일에 잘못된 속성 값이 포함되어 있습니다.

이러한 오류를 해결하려면 어떻게 해야 합니까?

프로젝트 내 또는 다른 프로젝트에 파일을 복사하여 붙여넣을 때 Visual Studio에서 동일한 BuildAction 속성을 유지하지 않는 나쁜 습관이 있습니다.빌드 액션을 ApplicationDefinition과 같이 무작위로 보이는 값으로 변경하여 빌드 오류를 일으키는 경우가 많습니다.

(솔루션 탐색기에서 선택한 파일을 사용하여 Visual Studio 속성 창에서) 각 .xaml 파일의 BuildAction 속성이 페이지이고 코드 파일의 BuildAction 속성이 컴파일인지 확인합니다.

빌드 액션이 올바르게 설정되어 있는 경우에도 이 메시지가 표시될 수 있습니다.예를 들어 프로젝트를 응용 프로그램으로 시작한 다음 나중에 클래스 라이브러리로 전환하는 경우입니다.이 경우 App.xaml(및 대응하는 App.cs)도 삭제해야 합니다.

Xaml 컨트롤의 빌드 액션을 ApplicationDefinition에서 Page로 변경해야 합니다(솔루션 탐색기 트리 보기에서 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하면 이 속성에 액세스할 수 있습니다).

이것은, 이미지/X 를 카피 페이스트 하는 경우도 있습니다.AML 파일에서 ClassLibrary 프로젝트로.

해당 이미지의 빌드 작업 속성을 리소스로 변경

2년 후, 같은 질문으로 검색을 실시했습니다만, 상기의 코멘트를 사용해 다른 옵션을 배제하고, 최종적으로 답을 찾을 수 있었던 것은, 2개의 프로젝트에 각각 같은 이름의 .xaml 파일이 1개의 솔루션내에 있는 것을 깨달았을 때입니다.


추상적인 예

PRINT NOTES PROJ와 MAKENOTES PROJ의 2개의 프로젝트가 있는 1개의 솔루션.

개발 중에 MAKENOTESPROJ의 XAML 창을 사용했습니다.이 창은 실제로 릴리즈 실행 파일의 PRINTNOTESPROJ의 일부일 것입니다.

빌드->릴리스로 전환한 후 "Print Window"를 클릭하기만 하면 됩니다.XAML" (MAKENOTESPROJ 및 child PrintWindow.xaml.cs)을 사용하여 PRINTNOTESPROJ로 드래그합니다.

*이것이 열쇠입니다.이렇게 하면 관련 파일만 새 프로젝트에 복사된다는 사실을 잊었습니다(적어도 VS 2010).그 후, 저는 당신의 에러를 받고, 원래의 프로젝트 MAKENOTESPROJ에서 "PrintWindow.xaml"을 삭제했습니다.

이게 말이 됐으면 좋겠는데...질문으로 댓글 달아주세요!

언급URL : https://stackoverflow.com/questions/1050588/problems-after-copying-xaml-controls-from-wpf-application-to-a-class-library

반응형