이름 "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
솔루션을 실행할 수 있지만 디자이너가 "잘못된 마크 업"오류로 실패합니다. 아이디어가 있습니까?
편집하다
VS 2012 업데이트 2를 실행 중입니다. VS 2012 업데이트 1에서도 동일한 솔루션이 작동합니다.
솔루션이 네트워크 공유에서 실행 중입니다. .Net (및 Visual Studio) 애플리케이션은 네트워크 공유에서 실행될 때 권한 / 액세스 문제가 발생할 수 있습니다.
솔루션을 로컬 드라이브 (완전 신뢰 사용)에 복사하면 괜찮습니다.
완전한 신뢰로 작동하는 네트워크 드라이브를 얻을 수 있습니다. StackOverflow 및 기타 장소에서 이에 대한 답변을 찾을 수 있습니다.하지만 제 경험상이 작업을 수행 할 때 계속 장애물에 부딪 히게되므로 절대적으로 중요하지 않은 한 피하십시오. 손에 문제.
예를 들어이 질문은이를 수행하는 방법에 대한 지침을 제공합니다.
Visual Studio 2012 및 .Net 4.0 용 UNC 공유에 FullTrust 제공
나는 VS2010에서만 이것을 시도 했으므로 (링크에 표시된 것처럼) 2012에서 더 나은 기쁨을 누릴 수 있습니다.
지금이 문제를 접하는 사람을 위해, 다른 일을하기 전에 ... 클래스 / 네임 스페이스가 정확하고 재 구축으로 문제가 해결되지 않았다고 확신하는 경우 :
Visual Studio를 다시 시작하십시오.
그게 다야!
이것은 Visual Studio 2012의 버그로 보입니다 (XAML 개발을 지원하는 다른 모든 버전에도 영향을 미치는 것으로 보입니다)
업데이트 : Visual Studio를 다시 시작해도 작동하지 않으면 전체 PC를 재부팅합니다.
업데이트 : @Dunk의 주석에서 언급했듯이 Visual Studio를 다시 시작해도 작동하지 않으면 .suo 파일을 삭제 해보세요.
동일한 문제가 발생했지만 파일이 로컬에 저장됩니다. 내 IValueConverter는이를 사용하는보기와 다른 어셈블리에 있습니다. VS2013 IntelliSense가 다음을 제안했지만 작동하지 않았습니다.
xmlns:conv="clr-namespace:MySharedAssembly.Converters"
마지막에 어셈블리를 명시 적으로 추가 한 후 작동했습니다.
xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"
이 오류를 몇 시간 동안 계속했습니다. 어셈블리와 네임 스페이스가 올 바르고 클래스와 참조도 올 바릅니다. 컴파일하고 실행하면 디자이너 만 나에게 문제가있었습니다. 일한 유일한 것
- 디자인 목적으로 x64에서 x86으로 swtich
- x64로 다시 실행 및 디버그 스위치
x64 버전에서만 가지고 있던 3d party portable.library를 사용하고 있습니다.
다운로드 된 DLL 솔루션
- .dll 파일 차단 해제
- 그것을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
- "일반"탭에서 차단 해제 (이미지 참조)
- VS가 XAML의 유효성을 다시 검사하는지 확인합니다 (아마도 다시 시작하여).
VS 2015에서도 여전히 발생합니다. App.xaml에서 SomeConverter를 꺼 냈습니다.
<Application.Resources>
<!--Value Converters-->
<local:SomeConverter x:Key="mySomeConverter"/>
Strg-Shift-B
다시 넣으십시오.
로컬 드라이브의 네트워크 공유에 대한 심볼릭 링크를 만듭니다.
명령 줄로 이동하여 mklink / DC : \ LOCALFOLDER \ YOURNETWORKPATH를 입력합니다.
그런 다음 로컬 폴더에서 프로젝트를 열면 모든 문제가 사라집니다. 이제 모든 파일은 여전히 네트워크 공유에 있습니다. :)
광범위한 솔루션을 시도하기 전에 다음을 시도하십시오.
똑같은 문제가 발생하여 오류를 일으킨 Window / Form을 닫은 다음 프로젝트를 실행했습니다.
프로젝트가 성공적으로 실행되고 다시 나타나지 않으면 오류가 해결되는 것처럼 보였습니다.
바라건대 이것은 빠른 해결책을 찾는 모든 사람에게 도움이되기를 바랍니다.
새 프로젝트를 시작하고이 문제가 발생했습니다. suo 파일 제거, 프로젝트 언로드 / 다시로드, VS 다시 시작 등 여기에 나열된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.
저에게 도움이 된 것은 이것이 새로운 프로젝트이기 때문에 아직 만들지 않았습니다. Window.DataContext 요소를 클립 보드에 제거하고 프로젝트를 한 번 (shift-ctrl-b) 빌드 한 다음 요소를 다시 추가하면 즉시 작동했습니다.
Visual Studio 2015에서 동일한 오류가 발생하고 "프로젝트 코드 단추 비활성화"를 선택 취소하여 디자이너가 작업하도록 관리했습니다.
이것은 2008, 10, 12, 13 년 동안 저를 짜증나게했습니다.
이런 일이 발생할 때마다 (예, 네트워크 공유에서 작업 중입니다. 피할 수 없습니다) VS를 닫고 FOLDER의 이름을 바꾸고 프로젝트를 다시 엽니 다. 10 번 중 9 번이 작동합니다. 잠시 동안.
다른 사람을 위해 붙어 있습니다.
나를 위해 일한 것은 네임 스페이스 별칭을 local 에서 다른 것으로 변경하는 것이 었 습니다.
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을 제대로 컴파일 할 수있었습니다.
무엇 나를 위해 일하면 변경하는 것 MOVE
까지를 XCOPY
에 Post Build
의 project properties
다음 re-build
프로젝트. 디자이너는 프로젝트 출력 폴더에 dll을 원할 수 있습니다. 2015 년 대비 사용하고 있습니다.
Visual Studio를 다시 시작한 후 올바른 방향을 가리키는 IntelliSense 오류가 발생했습니다.
'Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionTypeNode'는 동일한 어셈블리에서 구현되므로 Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata가 아닌 x : Name 특성을 설정해야합니다. ReflectionPropertyNode 특성입니다.
그래서 이것을 변경했습니다.
<local:MyView Name="test"/>
이에:
<local:MyView x:Name="test"/>
그리고 그것은 작동했습니다. 그래서 그것은 우리에게 무엇을 제공합니까? 42 가지 가능한 원인? 언리얼 ...
또한 네트워크 공유에 프로젝트가 있는데이 오류가 예기치 않게 나타납니다. 프로젝트를 로컬 디스크에 복사, 청소, 재 구축 및 VS 열기 및 닫기를 포함하여 위의 모든 제안을 시도했습니다. 이들 중 어느 것도 문제를 해결하지 못했습니다.
나를 위해 일한 것은 단순히 viewmodels 폴더 (xlmns : vm = "clr-namespace : Myproj.ViewModel")에 대한 네임 스페이스 참조를 삭제하는 것입니다.
xaml (DataTemplate DataType = "{x : Type vm : myviewmodel}")에 유형을 추가했습니다. 그런 다음 Visual Studio에서 네임 스페이스가 누락되었음을 감지하고 네임 스페이스를 추가하라는 프롬프트를 클릭했습니다.
리소스 사전에서 선언하는 것이 저에게 효과적이었습니다.
<Window.Resources>
<c:IsNullConverter x:Key="IsNullConverter" />
</Window.Resources>
문제는 파서가와 같은 태그 확장을 볼 때 자체적으로 똥을내는 것으로 Converter={c:IsNullConverter}}"
보이지만 다음에서는 괜찮습니다 Converter={StaticResource IsNullConverter}
. 그게 문제인 것 같아요.
Windows 10, VS 2013
프로젝트에 3 개의 오류가 있었고 ObjectDataProvider와 관련된이 오류에 집중했습니다. 다른 오류로 인해 프로젝트를 빌드 할 수 없으면이 오류를 해결할 수 없다는 것을 알았습니다. 코드가 삭제 된 다른 이벤트 핸들러가 몇 개있었습니다. 또한 핸들러를 컨트롤에 연결하려는 코드도 삭제해야했습니다. 그런 다음 프로젝트는 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를 다시 시작하십시오.
이는 릴리스 구성 때문일 수 있습니다. Designer는 디버그 구성에서 사용해야합니다.
'Development Tip' 카테고리의 다른 글
OSX를 Yosemite 또는 El Capitan으로 업그레이드 할 때 MySQL이 시작되지 않음 (0) | 2020.11.12 |
---|---|
편리한 F # 스 니펫 (0) | 2020.11.12 |
녹색에서 빨간색으로 백분율에 따라 다름 (0) | 2020.11.12 |
!! 1 ==“1”이 true이고 !! 2 ==“2”가 false 인 이유는 무엇입니까? (0) | 2020.11.12 |
버튼으로 div 표시 / 숨기기 전환? (0) | 2020.11.12 |