source

이름 "XYZ"가 네임스페이스 "clr-namespace"에 없습니다.ABC"

manysource 2023. 4. 15. 09:04

이름 "XYZ"가 네임스페이스 "clr-namespace"에 없습니다.ABC"

마크업 연장을 만들고 있었는데 VS 행동이 너무 이상했어요.저는 그 문제를 추출하여 별도의 해결책으로 정확히 파악했습니다.문제는 VS가 XAML에서 CLR 개체를 생성할 수 없다는 것입니다.

여기 있습니다.

표시:

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfApplication4="clr-namespace:WpfApplication4">
    <Window.Resources>
        <wpfApplication4:Dog x:Key="doggy" />
    </Window.Resources>
    <Grid />
</Window>

코드 배면:

using System.Windows;

namespace WpfApplication4
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

개 클래스:

namespace WpfApplication4
{
    public class Dog
    {

    }
}

App.Xaml(App.Xaml.cs 코드 없음):

<Application x:Class="WpfApplication4.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>

프로젝트 설정

예외:

Error   1   The name "Dog" does not exist in the namespace "clr-namespace:WpfApplication4". \\hopr1\folders$\vxk\Documents\Visual Studio 2012\Projects\WpfApplication4\MainWindow.xaml  6   9   WpfApplication4

솔루션을 실행할 수 있지만 디자이너가 "Invalid Markup" 오류와 함께 실패합니다. 의견이 있으십니까?

편집

VS 2012 업데이트 2를 실행하고 있습니다. VS 2012 업데이트 1에서도 동일한 솔루션이 작동합니다.

지금 이 일을 접하는 사람은, 당신이 다른 일을 하기 전에...클래스/네임스페이스가 올바르고 재구축으로 문제가 해결되지 않은 경우:

Visual Studio 재시작 시도

바로 그거야!

이는 Visual Studio 2012의 버그로 보입니다(XAML 개발을 지원하는 다른 모든 버전에도 영향을 미치는 것으로 보입니다).


업데이트: Visual Studio 재시작이 작동하지 않으면 전체 PC를 재부팅하십시오.

업데이트: @Dunk의 코멘트에서 설명한 바와 같이 Visual Studio 재시작이 작동하지 않으면 .suo 파일을 삭제해 보십시오.

솔루션이 네트워크 공유에서 실행되고 있습니다.네트워크 공유에서 실행할 때 .Net(및 Visual Studio) 응용 프로그램에 권한/액세스 문제가 발생할 수 있습니다.

솔루션을 로컬 드라이브(완전 신뢰)에 복사하면 문제 없습니다.

네트워크 드라이브를 완전히 신뢰할 수 있는 상태로 사용할 수 있습니다. StackOverflow 및 기타 장소에서 이에 대한 답을 찾을 수 있지만, 제 경험상 이 작업을 수행할 때 계속해서 장애물에 부딪히므로 가까운 문제에 절대적으로 중요한 경우가 아니라면 피하도록 하십시오.

예: 이 질문에서는 이 방법에 대한 지침을 제공합니다.

Visual Studio 2012 및 UNC 공유에 FullTrust를 제공합니다.넷 4.0

지금까지 VS2010에서만 사용해 본 적이 있기 때문에 (링크에 표시된 바와 같이) 2012년이 더 즐거울 수 있습니다.

같은 문제가 발생했는데 파일이 로컬에 저장되어 있습니다.IValue Converter는 사용하는 뷰와는 다른 어셈블리에 있습니다.VS2013 IntelliSense는 다음과 같은 제안을 했지만 효과가 없었습니다.

xmlns:conv="clr-namespace:MySharedAssembly.Converters"

마지막으로 어셈블리를 명시적으로 추가한 후 다음과 같이 동작했습니다.

xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"

나는 몇 시간 동안 이 오류를 계속했다.어셈블리 및 네임스페이스가 올바르고 클래스 및 참조도 올바릅니다.컴파일과 실행은 문제없지만 디자이너만 문제가 있었습니다.유일하게 효과가 있었던 건

  1. 설계상 x64에서 x86으로 전환
  2. 실행 및 디버깅스위치를 x64로 되돌립니다.

x64 버전에서만 사용하던 third party portable.library를 사용하고 있습니다.

다운로드한 DLL 솔루션

  1. .이렇게 하다
    • 마우스 오른쪽 버튼을 클릭하여 속성을 선택합니다.
    • 일반 탭에서 차단 해제(이미지 참조)
  2. VS가 XAML을 재검증하는 것을 확인합니다(재기동할 가능성이 있습니다).

여기에 이미지 설명 입력

VS 2015년에도 마찬가지입니다.App.xaml에서 SomeConverter를 삭제했습니다.

<Application.Resources>
    <!--Value Converters-->
    <local:SomeConverter x:Key="mySomeConverter"/>


하다

광범위한 솔루션을 시도하기 전에 다음을 시도해 보십시오.

같은 문제가 있어서 에러의 원인이 되고 있는 윈도/폼을 닫고 프로젝트를 실행했습니다.

프로젝트가 성공적으로 실행되고 다시 시작되지 않으면 오류가 해소되는 것처럼 보였습니다.

이것이 빠른 해결책을 찾는 모든 사람에게 도움이 되기를 바랍니다.

로컬 드라이브의 네트워크 공유에 대한 심볼 링크를 만듭니다.

명령줄로 이동하여 mklink /D C:\LOCAL FOLDER \YOUR NETWORK PATH 라고 입력합니다.

그런 다음 로컬 폴더에서 프로젝트를 열면 모든 문제가 해결됩니다.모든 파일은 네트워크 공유에 남습니다.:)

저는 새로운 프로젝트를 시작하고 있었는데 이 문제가 있었습니다.suo 파일 삭제, 프로젝트 언로드/새로고침, VS 재시작 등 여기에 나와 있는 솔루션 중 어느 것도 효과가 없었습니다.

저에게 효과가 있었던 것은, 이것은 새로운 프로젝트였기 때문에, 저는 아직 그것을 만들지 않았습니다.윈도우를 제거했습니다.DataContext 요소를 클립보드에 삽입하고 프로젝트를 한 번 빌드한 후(shift-ctrl-b), 요소를 다시 추가하면 즉시 작동합니다.

Visual Studio 2015에서도 같은 에러가 발생하여 "Disable Project Code Button"을 선택 해제하여 디자이너를 작업시킬 수 있었습니다.

[디자이너] 버튼에 스크린샷

네트워크 공유에 대한 프로젝트도 있는데 예기치 않게 이 오류가 발생하였습니다.프로젝트를 로컬 디스크에 복사하는 것, 청소, 재구축 및 VS의 개폐를 포함한 위의 모든 제안을 시도했습니다.이것들 중 어느 것도 문제를 해결하지 못했다.

뷰모델 폴더에 대한 네임스페이스 참조(xlmns:vm="clr-namespace:Myproj.ViewModel")를 삭제하기만 하면 됩니다.

xaml에 유형을 추가했습니다(DataTemplate DataType="{x:vm:myviewmodel})을 입력합니다.그런 다음 Visual Studio에서 네임스페이스가 누락된 것을 감지하고 프롬프트를 클릭하여 네임스페이스를 추가했습니다.

2008년, 10년, 12년, 13년 동안 이 일이 나를 짜증나게 했다.

이런 일이 발생할 때마다(네트워크 공유 작업 중이고 피할 수 없습니다), VS를 닫고 폴더 이름을 변경한 후 프로젝트를 다시 엽니다.10점 만점에 9점이야, 이거면 돼.잠시 동안.

갇힌 다른 사람들을 위해.

네임스페이스 별칭을 로컬에서 다른 것으로 바꾸는 것이 제게 효과가 있었습니다.

xmlns:local="clr-namespace:ExampleNameSpace.Folder" />

<Grid>
    <StackPanel>
        <local:ReferencedUserControl />
    </StackPanel>
</Grid>

로.

xmlns:blah="clr-namespace:ExampleNameSpace.Folder" />

<Grid>
    <StackPanel>
        <blah:ReferencedUserControl />
    </StackPanel>
</Grid>

이게 도움이 됐으면 좋겠네요!

같은 문제가 있었어. 것은, 가 「이렇게 하다」라고 되어 있는 였다.internal:

internal class MyClass
{
}

「 」로 한 후public디자이너는 XAML을 올바르게 컴파일할 수 있었습니다.

저에게 효과가 있었던 것은 의 in을 변경하고 다음으로 프로젝트를 변경하는 것입니다.디자이너가 프로젝트 출력 폴더에 dll을 원할 수 있습니다.사용하고 있는 것은 2015년

Visual Studio를 재시작한 후 IntelliSense 오류가 발생하여 올바른 방향으로 안내되었습니다.

왜냐면 '마이크로소프트'니까.Visual Studio.Design Tools.Xaml.언어 서비스의미론메타데이터반사TypeNode'는 동일한 어셈블리에 구현되므로 Microsoft가 아닌 x:Name 속성을 설정해야 합니다.Visual Studio.Design Tools.Xaml.언어 서비스의미론메타데이터Reflection Property Node 속성.

그래서 이걸 바꿨어요

<local:MyView Name="test"/>

이를 위해:

<local:MyView x:Name="test"/>

그리고 효과가 있었어그럼 뭘 알 수 있죠?42가지 가능한 원인?비현실적...

리소스 사전에 선언한 것이 효과가 있었습니다.

<Window.Resources>
    <c:IsNullConverter x:Key="IsNullConverter" />
</Window.Resources>

가 "Drughta"와 같은 마크업 입니다.Converter={c:IsNullConverter}}"단, 다음과 같은 경우에는 문제가 없습니다.Converter={StaticResource IsNullConverter}그게 문제인 것 같아요

Windows 10, VS 2013

프로젝트에서 3개의 오류가 발생했으며 Object Data Provider에 관한 이 오류에 초점을 맞췄습니다.다른 오류로 인해 프로젝트를 빌드할 수 없다면 이 오류를 해결할 수 없다는 것을 알게 되었습니다.코드가 삭제된 다른 이벤트 핸들러가 몇 명 있었습니다.핸들러를 컨트롤에 연결하려는 코드도 삭제해야 했습니다.그 후 프로젝트는 ObjectDataProvider에서 참조하려는 클래스가 이용 가능한지 확인할 수 있었습니다.

이름 "XYZ"가 네임스페이스 "clr-namespace"에 없습니다.ABC”

해결했습니다!!

호출할 함수 / 클래스가 네임스페이스에 있는지 확인합니다.

올바른 예:

.XAML 파일

          <Window x:Class="objectbinding.MainWindow"
           <!--your xmlns:x .......
           namespace1 is the project name-->
           xmlns:m="clr-namespace:namespace1"
            Title="MainWindow" Height="350" Width="525">
    <Grid>
 <StackPanel Orientation="Vertical">
            <StackPanel.Resources>
                <ObjectDataProvider ObjectType="{x:Type m:StringData}"
                                    x:Key="anyname" MethodName="GetStrings"/>

            </StackPanel.Resources>

       ItemsSource="{Binding Source={StaticResource Runni}}" />
        </StackPanel>
    </Grid>

//StringData는 xaml.cs의 클래스 이름이고 GetString은 함수입니다.

.XAML.CS 파일

 namespace namespace1
    {

        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }

        }
// the class StringData is defined in namespace namespace 1
        public class StringData
        {
            ObservableCollection<String> lst = new ObservableCollection<String>();

            public StringData()
            {
                lst.Add("Abhishek");
                lst.Add("Abhijit");
                lst.Add("Kunal");
                lst.Add("Sheo");
            }
            public ObservableCollection<String> GetStrings()
            {
                return lst;
            }
        }
    }

잘못된 예:

.XAML 파일

  <Window x:Class="objectbinding.MainWindow"
              <!--your xmlns:x .......
           namespace1 is the project name-->
           xmlns:m="clr-namespace:namespace1"
            Title="MainWindow" Height="350" Width="525">
    <Grid>
 <StackPanel Orientation="Vertical">
            <StackPanel.Resources>
                <ObjectDataProvider ObjectType="{x:Type m:StringData}"
                                    x:Key="anyname" MethodName="GetStrings"/>

            </StackPanel.Resources>

       ItemsSource="{Binding Source={StaticResource Runni}}" />
        </StackPanel>
    </Grid>

.XAML.CS

namespace namespace1
{

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
//The StringData is defined in the class mainWindow not in namespace namespace1
        public class StringData
        {
            ObservableCollection<String> lst = new ObservableCollection<String>();

            public StringData()
            {
                lst.Add("Abhishek");
                lst.Add("Abhijit");
                lst.Add("Kunal");
                lst.Add("Sheo");
            }
            public ObservableCollection<String> GetStrings()
            {
                return lst;
            }
        }
    }

}

제 경우, 이 오류는 'delay sign only'가 활성화된 서명된 어셈블리로 인해 발생했습니다.해결책은 명령어를 실행하는 것이었습니다.sn -Vr *(관리자로서) 개발자 콘솔에서.그러면 검증 건너뛰기를 위해 어셈블리가 등록됩니다.그런 다음 Visual Studio를 다시 시작합니다.

릴리스 설정이 원인일 수 있습니다.디자이너는 디버깅 구성에서 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/16216662/the-name-xyz-does-not-exist-in-the-namespace-clr-namespaceabc