[wpf] XAML의 네임 스페이스 오류에 이름이 없습니다.

VB.NET WPF 응용 프로그램에서 작동하는 VS2012 사용. WPF를 배우는 데 사용하는 간단한 MusicPlayer 튜토리얼 앱이 있습니다. 튜토리얼의 C # 버전을 단계별로 VB.NET으로 변환하고 있습니다.

동일한 네임 스페이스 아래에있는 두 개의 클래스가 앱에 있습니다. XAML에서 네임 스페이스를 참조 할 수 있지만 XAML에서 클래스 개체를 참조하려고하면 오류가 발생하고 컴파일 할 수 없습니다.

이상한 점은 IntelliSense가 xmlns : c = 태그를 통해 네임 스페이스를 참조하고 클래스 개체를 입력 할 때도 잘 작동한다는 것입니다. <c:
그러나 개체에 밑줄이 표시되고 디자이너에서 빌드하거나 작업하려고하면 오류가 생성됩니다.

.vb 클래스 파일은 \ Controls라는 폴더에 있습니다. 메인 프로젝트 루트 네임 스페이스는 의도적으로 비워 둡니다. 클래스는 다음과 같이 코딩됩니다.

Namespace MusicPlayer.Controls
    Public Class UpdatingMediaElement
       .... code here
    End Public
End Namespace

xaml은 다음과 같습니다.

( <Window >태그에 정의 된 네임 스페이스

xmlns:c="clr-namespace:MusicPlayer.Controls"

(에 정의 된 객체 <Grid>)

  <c:UpdatingMediaElement Name="MyMediaElement" />

(오류 표시됨) “UpdatingMediaElement”이름이 “clr-namespace : MusicPlayer.Controls”네임 스페이스에 없습니다.

무엇이 잘못되었거나 어떻게 해결해야하는지 잘 모르시겠습니까?



답변

wpf 코드와 VS를 작성할 때 “이름 ABCDE가 네임 스페이스 clr-namespace : ABC에 존재하지 않습니다”라고 말합니다. 그러나 프로젝트를 완전히 성공적으로 빌드 할 수 있습니다. UI 디자인을 볼 수 없거나 코드를 정리하고 싶기 때문에 약간의 불편 함이 있습니다.

다음을 시도하십시오.

  • VS에서 솔루션-> 속성-> 구성 속성을 마우스 오른쪽 버튼으로 클릭하십시오.

  • 새 대화 상자가 열리면 프로젝트 구성을 디버그에서 릴리스로 또는 그 반대로 변경해보십시오.

그 후 솔루션을 다시 빌드하십시오. 문제를 해결할 수 있습니다.


답변

어셈블리가 클래스가 포함 된 네임 스페이스와 다른 경우 명시 적으로 지정해야합니다.

전의:-

xmlns:Local="clr-namespace:MusicPlayer.Controls;assembly=MusicPlayer"


답변

Xaml Design Shadow Cache를 지워서이 문제가 해결되는 것을 보았습니다. Visual Studio 2015 업데이트 1에 문제가 있습니다.

Visual Studio 2015에서 캐시는 다음 위치에 있습니다.

%localappdata%\Microsoft\VisualStudio\14.0\Designer\ShadowCache

방법:

  1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 “솔루션 정리”를 선택합니다.
  2. Visual Studio 종료
  3. ShadowCache 폴더 삭제
  4. Visual Studio 프로젝트를 다시 열었습니다.
  5. 솔루션 재 구축

그리고 더 이상 네임 스페이스 오류가 없습니다.


답변

제 경우에는 다른 컴파일 오류 때문이었습니다 . 다른 오류가 해결되면이 관련 오류도 목록에서 제거되었습니다. 특히 오류 목록 하단과 최근에 변경 한 페이지의 오류입니다.

따라서이 오류에 직접주의를 기울이지 말고 처음 에는 다른 오류 에 집중하십시오 .


답변

빌드 대상 플랫폼을 x86으로 변경하고 프로젝트를 빌드 해보십시오.

Subversion을 통해 프로젝트 빌드 플랫폼 대상을 x64로 변경 한 것으로 나타났습니다. 이것이 내가 만든 유일한 변화였습니다. 변경 한 후 코드가 잠시 작동 한 후 발생한 동일한 오류가 표시되기 시작했습니다. 테스트를 위해 플랫폼 타겟을 x86으로 변경했는데 갑자기 디자이너가 다시 작업하고있었습니다. 그 후 x64로 다시 변경했는데 문제가 완전히 사라졌습니다. 디자이너가 x32에서 일종의 캐시 된 코드를 빌드하고 x64 빌드 플랫폼을 변경하면 코드를 변경할 때 코드가 손상되는 것으로 생각됩니다.


답변

이것이 다른 사람에게 도움이된다면 Dunno

나는 WPF를 처음 접했고 여전히 VB.net을 사용하는 초보자입니다. 그래서이 오류가 발생하는 것은 내가 정상 회담을 어리석은 일로 인해 발생했다고 가정했습니다. 프로젝트를 공유 드라이브에서 로컬 드라이브 중 하나로 이동하여 제거했습니다. 오류가 사라지고 프로젝트가 더 이상 문제없이 컴파일됩니다. VS2015가 공유 드라이브에있는 프로젝트에 여전히 문제가있는 것 같습니다.


답변

프로젝트가 컴파일되지만 XAML 오류가 표시되는 경우에 대한 또 다른 솔루션 일 수 있습니다.

  1. 솔루션 탐색에서 xaml이 포함 된 프로젝트 노드에서
  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 ‘프로젝트 언로드’를 선택하십시오.
  3. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 ‘프로젝트 다시로드’를 선택하십시오. 프로젝트가 여전히 “시작 프로젝트”로 선택되어 있는지 확인하십시오. 그렇지 않은 경우 :
  4. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 ‘시작 프로젝트로 설정’을 선택합니다.

다시 빌드하거나 Visual Studio를 닫을 필요가 없습니다.