이름 <…>이 네임 스페이스 clr-namespace <…>에 없습니다.


84

잘 컴파일하는 데 사용되었지만 더 이상 그렇지 않은 작은 WPF 응용 프로그램이 있습니다. 나는 그것이 어느 지점에서 건물을 멈췄는지 정말로 말할 수 없습니다. 언젠가는 잘 작동했지만 다음날은 그렇지 않습니다.

프로젝트 구조는 다음과 같습니다.

여기에 이미지 설명 입력

표준 .net dll 이외의 다른 프로젝트 또는 외부 참조는 없습니다.

문제가 발생한 사용자 컨트롤은 다음과 같습니다.

<UserControl x:Class="TimeRecorder.HistoryUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:TimeRecorder.ViewModel"
         xmlns:framework="clr-namespace:TimeRecorder.Framework"
         mc:Ignorable="d" Height="Auto" Width="Auto" Padding="5">
<UserControl.Resources>
    <local:HistoryViewModel x:Key="ViewModel"/>
    <framework:BoolToColorConverter x:Key="ColorConverter"/>
</UserControl.Resources>
<StackPanel DataContext="{StaticResource ViewModel}">

그리고 내가 얻는 오류는 다음과 같습니다. http://i48.tinypic.com/5u1u8w.png

이것은 스크린 샷에있는 하나의 파일이 아니라이 프로젝트의 모든 사용자 컨트롤 / 창 파일에서 xaml에서 유사한 방식으로 추가하는 모든 참조입니다.

그래서 파일이 있고, 파일의 네임 스페이스가 정확하고, xaml 파일의 네임 스페이스 / 클래스 이름이 (내 이해로는) 정확합니다. xaml을 입력하면 intellisense가 표시되므로 파일을 정상적으로 찾지 만 컴파일 할 때는 찾지 못합니다.

다른 게시물에서 이에 대한 가장 일반적인 솔루션은 .net 프레임 워크 버전입니다. 현재 메인 및 테스트 프로젝트 모두에 대해 .Net Framework 4로 설정되어 있습니다. 클라이언트 프로필이 아닌 정식 버전입니다.

내가 엉망이라고 생각하는 것은 다음과 같습니다 . 구성 관리자에서 두 프로젝트 모두 플랫폼이 Any CPU로 설정되어 있지만이 문제를 해결하려고 할 때 메인 프로젝트가 x86으로 설정되고 테스트 프로젝트가 Any로 설정되어 있음을 알았습니다. CPU. 그래서 구성 관리자의 기본 프로젝트에 대해 모든 CPU를 수동으로 추가했습니다. 그러나 나는 내가 이것을 올바르게했는지 또는 그것을해야하는지에 대해 솔직히 모른다. 추가 질문으로 구성 관리자를 기본 상태로 재설정 할 수있는 방법이 있습니까? 이것이 주요 문제에 대해 말할 것이 있습니까? 주 프로젝트가 항상 x86으로 설정되었는지 여부 또는 어떻게 든 x86으로 변경 한 다음 깨 졌는지 모르겠습니다. 언급했듯이이 프로젝트는 잠시 동안 잘 컴파일되었습니다.


참고로 ProgressTimeSpentUserControl.xaml을 읽을 수 있습니다. 당신은 그것을 흐리게하는 더 나은 일을하고 싶을지도 모릅니다;)
NotALie입니다.

별거 아니야 :) 그것은 내가 일부 항목을 테스트하고 있던 임시 파일 일뿐입니다. 다른 항목은 소속 된 뷰 모델이있는 프로젝트의 일부이므로 OCD가 관련 없음으로 표시하라고했습니다.)
ardal

2
이틀 전에 매우 비슷한 문제가 발생했습니다. 구성 관리자가 모든 것을 x86이 아닌 '모든 CPU'로 빌드하도록 설정하려고했고 빌드가 중단되었습니다. 두 가지 작업을 수행했다는 사실을 발견했습니다. 첫 번째는 릴리스 모드로 두었고 두 번째는 빌드 구성 관리자가 어떤 경우에는 빌드 용으로 표시되지 않았습니다. 내 수정 사항은 사용 가능한 모든 모드 (x86, 혼합 플랫폼 및 모든 CPU)를 살펴보고 모든 어셈블리를 빌드하도록 설정하는 것이 었습니다. 당신이 잘못된 것을 발견했을 때 생각하지 않은 것에 대해 스스로를 걷어차는 것 중 하나처럼 들립니다!
Jay

(작업 대답과) 비슷한 질문 : stackoverflow.com/questions/28216096/...
Oleksa

2018 .NET 4.6.1에서 여기에 온 모든 사람들을 위해 VS를 다시 시작한 다음 다시 빌드하고 작동하기 시작했습니다. 내가 어딘가에 type-o가 있다고 생각했을 것보다 더 많은 시간을 보냈습니다.
Mwspencer

답변:


143

그런 일이 발생할 때마다 저는 Visual Studio를 다시 시작하고 솔루션을 다시 빌드했는데 제대로 작동했습니다. 이유를 말할 수 없습니다.


17
추가해야 할 한 가지는-관리자 권한으로 VS를 다시 시작할 때만 프로젝트가 성공적으로 빌드됩니다. 일반 권한으로 솔루션을 다시 시작하고 다시 빌드해도 도움이되지 않았습니다.
Sevenate 2013-06-09

1
문제를 일으키는 솔루션을 저장하십시오. 관리자 모드에서 VS를 시작하고 솔루션 파일에서 "모두 다시 빌드"를 시작합니다. 작동했습니다. 매우 으스스합니다.
pollaris

12
이 문제가 5 년 후에도 여전히 해결되지 않은 것을보고 슬프다. VS 2017에서도 동일한 문제가 존재하며 동일한 솔루션이 여전히 작동합니다!
CodeHacker

@gil kr xamarin과 XML과 비슷한 문제가있었습니다. 프로젝트를 네트워크 폴더에서 로컬 폴더로 옮기면 문제가 해결되었습니다. 여기에 해당하는지 궁금합니다.
vdidxho

3
관리자 권한으로 시작해도 내 문제가 해결되지 않았습니다.
MindRoasterMir

30

"Does not exist in the namespace"메시지 외에도 디자이너로부터 x64 및 ARM 타겟에 대한 창을 표시 할 수 없다는 메시지도 받았습니다.

방금 빌드를 x86 모드로 전환하고 다시 빌드 솔루션을 수행 한 다음 x64 모드로 다시 전환 한 다음 다시 빌드하면 [둘 다] 문제가 해결된다는 것을 알았습니다.

x64 솔루션을 재 구축하기 만해도 아무 일도 일어나지 않았습니다.


5
한 단계 더 있습니다. x86으로 다시 빌드 한 다음 디자이너에서 xaml을 열어야합니다. 그런 다음 x64로 돌아갑니다.
Dzienny 2014 년

2
Visual Studio를 다시 시작한 다음 다시 빌드했지만 여전히 동일한 오류가 발생했습니다. @Jerry-귀하의 솔루션은 VS2012에서 저에게 효과적이었습니다.
Barrie

Jerry, 모호하게 들리지만 솔루션이 작동합니다! 내 프로젝트를 AnyCPU로 컴파일했지만 어떻게 든 x86에서 컴파일 한 다음이 문제를 다시 해결했습니다. AnyCPU가 x86으로 돌아갈 수 있다고 생각하지만 VS의 버그로 인해 코드의 해당 부분은 x86에서 컴파일하지 않는 한 빌드되지 않았습니다.
Wayne Lo

예, "네임 스페이스에 존재하지 않음"외에 다른 모든 오류를 먼저 해결해야합니다.
pollaris

VS2017에서 여전히 나에게 일어났습니다. VS를 닫고 다시 열지 못했습니다. 하지만 당신의 솔루션은 그렇게했습니다.
Gordon Slysz

14

도움이 된 것은 (특히에서이 오류가 발생하는 경우 App.xaml) 문제를 일으키는 참조주석 처리하고 다시 빌드 한 다음 주석 해제하는 것입니다. 이것이 하는 일은 오류시 빌드를 중지하는 대신 전체 프로젝트가 실제로 빌드 할 수 있도록하는 것입니다.

내가 수집 할 수있는 바에 따르면 앱은 특정 순서로 파일을 빌드하려고 시도하고 있으므로 App.xaml참조에있는 다른 클래스 파일 오류가 있을 때 오류를 일으키는 파일이 올바르게 컴파일되지 않았으므로 그 이유는 해당 네임 스페이스에서 파일을 찾을 수 없습니다.


3
다음과 같이 말했을 때 올바른 아이디어를 가졌습니다 the app is trying to build the files in a certain order. 이로 인해 내 .csproj파일을 조사하게되었습니다 . 이 App.xaml.cs첫 번째 장소에 있었다. 그런 다음이 오류를 표시하는 파일 아래로 이동하고 다시 빌드하면 오류가 사라졌습니다. 감사!
Stephan

이 솔루션은 다른 사람들이 그렇지 않은 경우 저에게 효과적이었습니다. 감사
RamWill

12

이것이 Visual Studio 2012 (업데이트 3)에서 저에게 효과적이었습니다.

  • Visual Studio 다시 시작
  • 네임 스페이스 선언에 현재 어셈블리 추가 xmlns:framework="clr-namespace:TimeRecorder.Framework;assembly=MyAssembly
  • Build -> Build Solution

나를 위해 일한 VS2015 전문 업데이트 3, 감사합니다 :)
EricG

확인할 수 있으며 Visual Studio 2019에서도 작동합니다.
20

9

솔루션을 다시 빌드하십시오 (때로는 정리 한 다음 빌드가 더 잘 작동 함). 그런 다음 오류 목록을보고 맨 아래로 스크롤하면 어셈블리 컴파일을 허용하지 않는 오류를 나타낼 가능성이 큽니다. XAML 컴파일러는 새 어셈블리가 아닌 캐시 된 어셈블리 버전을 사용하고있을 가능성이 높습니다. 구축을 의미합니다.


7

비슷한 문제가있었습니다. 제 경우에는 다음을 수행해야했습니다.

  • xaml에서 참조 마크 업을 제거합니다 (이 예에서는 <local:HistoryViewModel x:Key="ViewModel"/>).
  • 클래스를 빌드하십시오 (이 예제 파일에는 HistoryViewModelclass 가 포함되어 있습니다 )
  • 빌드되면 xaml에 참조 마크 업을 추가합니다.
  • 다시 짓다

위의 방법이 저에게 효과적이었습니다.


이것이 문제를 해결 한 이유 를 이해하려면 내 대답 을 참조하십시오 .
jaysoncopes

6

나를 위해 일한 것 :-디버그에서 릴리스로 솔루션 구성 전환-릴리스에서 디버그로 구성 전환


이상한. 이것은 나에게도 효과적이었습니다. 각 릴리스에서도 깨끗한 빌드를 수행했습니다.
GeoffCoope

4

오늘 Visual Studio 2017 Community Edition에서이 문제가 발생했습니다. 여기에서 모든 제안을 시도했습니다 (VS 2017 재설정, x64에서 x32로 변경 등) 및 다른 소스에서 아무 소용이 없습니다. Intellisense는 모든 것이 있다는 것을 알고 있지만 매번 같은 오류가 발생했습니다.

어쨌든, 내 수정은 매우 간단한 것으로 판명되었습니다 ... 문제에 대해 몇 시간을 보냈을 때 항상 그런 것은 아닙니다!

기본적으로 다음을 수행했습니다 ...

  1. xaml 파일에서 문제가되는 코드 제거 (제 경우에는 단 3 줄)
  2. 성공적인 빌드를 위해 프로젝트 빌드
  3. 이 시점에서 레이아웃이 디자이너 창에 마술처럼 나타났습니다.
  4. xmlns : 항목을 포함하여 포인트 1에서 제거한 코드를 다시 삽입했습니다.
  5. 이 시점에서 파란색 물결 선이 표시되지 않아야합니다.
  6. 프로젝트를 다시 빌드하십시오.

성공적인 빌드를 얻으면 VS 및 / 또는 어셈블리 내에서 '무언가'를 재설정해야하는 것 같습니다. 빌드가 성공적으로 완료되면 코드를 다시 삽입하십시오.


이것은 실제로 나를 위해 일한 유일한 것입니다. 이것이 제가 XAML을 사용하는 VisualStudio를 싫어하는 이유입니다. 이 해키 유형의 구성은 허용되지 않습니다.
Goku 2020 년

3

어떤 솔루션도 나를 위해 일하지 않았습니다. 이 방법으로 수정했습니다.

  • 참조에서 라이브러리의 dll을 제거하십시오.
  • dll 파일 대신 라이브러리의 소스 코드 다운로드
  • 새 dll 파일을 얻기 위해 라이브러리의 프로젝트를 빌드하십시오.
  • 주 프로젝트의 참조에 새 dll 파일을 추가합니다.

3

이 문제가 원을 그리며 돌아가는 데 몇 시간이 걸렸습니다. 별도의 사용자 컨트롤 dll을 프로젝트로 이동하여 참조 된 dll이 아닌 프로젝트에서 컴파일되었습니다. 이로 인해 전체 프로젝트가 망가 졌기 때문에 모든 네임 스페이스, 경로 및 파일 이름을 꼼꼼하게 확인했습니다. x86과 AnyCPU 사이에서 obj 파일 삭제, 릴리스와 디버그 사이에서 변경을 시도했습니다. 모두 저장을 열면 여전히 기쁨이 없습니다.

이전에 비슷한 문제가 있었음을 기억하십시오. VS2013에서 플래그가 지정된 오류는 XAML을 수정해야하는 위치와 직접적인 관련이 없지만

x:Name="myControl"

대신 모든 컨트롤에서

Name="myControl"

고쳤다.


x를 생략하고 동일한 문제를 다시 발견했습니다. 이것은 내 사용자 컨트롤에서만 발생합니다.
Moon Waxing 2015 년

당신은 나의 영웅이다.
Holden

3

".Net Framework 4.5"의 대상 프레임 워크 내 응용 프로그램을 ".Net Framework 4.6"으로 변경했고 작동했습니다!


내 목표를 4.6.1에서 4.6으로 변경 했는데도 효과가있었습니다.
GisMofx 19

2

비슷한 일의 이상한 예가 있습니다.

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent">
...
</UserControl>

컴파일됩니다 (VS2013).

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent"
         IsVisibleChanged=onIsVisibleChanged>
...
</UserControl>

"Gtl.Ui.Gtl에서 찾을 수없는 Ui 유형"오류가 발생합니다 (코드 숨김에 처리기 메서드가 있음을 확신합니다). 해결 방법은 클래스 생성자에 핸들러를 추가하는 것입니다.하지만 Microsoft, wtf가 진행 중입니까?


위의 의견에 동의하지 않습니다. 이러한 종류의 "컨텍스트 확대"는 종종 OP의 조건에 의해서만 발생하는 것이 아닌 이러한 버그의 원인을 식별하는 데 유용합니다.
CJBrew

2

xaml에서 네임 스페이스를 호출하려고 할 때 동일한 문제에 직면했습니다. 네임 스페이스에서 클래스를 사용할 수 없음을 보여주었습니다. 나는 많이 검색했다. 마지막 으로이 문제가 VS에 있음을 발견했습니다. VS 2013을 사용하고 있습니다. 아래 단계를 시도했습니다.

  1. 빌드-> 구성 관리자-> 활성 솔루션 플랫폼-> x64 및 x86 및 모든 CPU로 변경되었습니다.
  2. VS를 닫고 다시 열었습니다.
  3. 변화

    xmlns:VM="clr-namespace:MyFirstAppViewModel"
    

    ...에

    xmlns:VM="clr-namespace:MyFirstAppViewModel;assembly=ViewModel"
    

2

이 오류는 일반적으로 마지막 빌드 중에 프로젝트가 성공적으로 빌드되지 않았을 때 발생합니다.

1 단계) 먼저 XAML 또는 .cs 파일에서 코드를 유발하는 모든 오류를 제거하고 F5를 눌러 프로젝트를 빌드하고 시작합니다.

2 단계) XAML에서 오류를 일으키는 코드를 하나씩 추가하십시오.


1
  • 이름을 x:Key="ViewModel"바꾸는 것이 좋습니다 . 결함이있을 수 있습니다.
  • 입력하면 local:VS가 표시 HistoryViewModel됩니까?
  • 또한 여부를 확인 ClassISpublic


1

"Run Code Analysis"명령을 실행하면 모든 것이 다시 빌드되고 거의 항상 문제가 해결된다는 사실을 발견했습니다 (오른쪽 클릭 프로젝트> 분석> 코드 분석 실행). 이것은 또한 일반적으로 문자열 등을 찾을 수 있도록 리소스 파일을 다시 빌드합니다.


제가 최근에 발견 한 것을 제외하고는 이것도 작동하지 않습니다. VS를 닫고 다시 시작해야했습니다. 아, 그래 ...
제프

1

이 스레드에서 모든 솔루션을 시도했지만 아무것도 작동하지 않았습니다. 솔루션 구성에 의한 것으로 밝혀졌습니다. 내 WPF 앱은이를 필요로하는 일부 기본 종속성으로 인해 X64 용으로 빌드하도록 설정되었지만 솔루션 구성은 여전히 ​​프로젝트의 AnyCPU로 설정되었습니다. 솔루션 구성 관리자에서 프로젝트에 대한 새 X64 구성을 만들면 XAML 디자이너가 마침내 내 유형과 네임 스페이스를 인식 할 수있었습니다.


1

.xaml 파일에 네임 스페이스를 추가하기 전에 기존 코드로 인한 컴파일 오류가 없는지 확인하십시오.

모든 컴파일 검사가 정상이면 솔루션을 다시 빌드하고 필요한 네임 스페이스를 추가하여 해당 클래스 또는 속성을 사용합니다.


0

이것은 저에게 반복되는 문제입니다. 한 번은 경고 탭 에서 해결책을 찾았습니다 . 그것은이었다 .NET 프레임 워크 버전의 문제 와는 다음과 같이 말했다

경고 9 기본 참조 "myDll"은 ".NETFramework, Version = v4.5.2"프레임 워크에 대해 빌드 되었기 때문에 확인할 수 없습니다. 이것은 현재 대상 프레임 워크 ".NETFramework, Version = v4.0"보다 높은 버전입니다.


0

개체 레이아웃의 버퍼링에 결함이 있습니다. 이름이 변경되거나 이동되면 손실됩니다. 일반적으로 나를 위해 작동하는 것은 완전히 새로운 클래스를 만들고 모든 이전 코드를 복사하고 새 클래스에서 작동하게 한 다음 원래 클래스를 제거하는 것입니다. 때로는 새 클래스 이름으로 실행 한 후 원래 이름으로 다시 이름을 바꿀 수 있습니다 (일반적으로는 아님).


0

.xaml의 헤더에서 xmlns : local = "using : MyRootNamespace.ChildNamespace"를 사용하고 있었고 xmlns : local = "clr-namespace : MyRootNamespace.ChildNamespace"로 바꿨습니다. 일, 그리고 효과가있었습니다.


0

문제는 x86 대상을 만들 때 특정 프로젝트의 출력 경로가 bin \ x86 \ Debug로 설정된다는 것입니다. Expression blend가 전혀 좋아하지 않는 것 같습니다. bin \ Debug의 내용에만 관심이있는 것 같습니다.

예를 들어 x86 프로젝트의 출력 경로를 bin \ debug로 변경 한 경우 제대로 작동 할 것입니다. 글쎄, 어쨌든 나를 위해 작동합니다 :)


0

추가하는 .dll 파일의 대상 프레임 워크는 앱의 대상 프레임 워크와 동일해야합니다.


0

나는 같은 문제에 직면했다. 이 오류가 발생하지만 여전히 프로젝트를 성공적으로 빌드 할 수 있습니다. 불편한 점은 UI 디자인을 볼 수 없다는 것입니다 (또는 코드를 정리하고 성가신 흔들리는 줄을 제거하려는 경우). 많은 게시물을 읽고 여러 가지 시도했지만 다음 작품은 매력적입니다.

Visual Studio 2019에서 이것을 시도했습니다.

솔루션-> 속성-> 구성 속성을 마우스 오른쪽 버튼으로 클릭 한 다음 프로젝트 구성을 디버그에서 릴리스로 또는 그 반대로 변경합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.