Имя " XYZ "не существует в пространстве имен" clr-namespace:ABC"
я работал над созданием некоторых расширений разметки и начал получать очень странное поведение VS. Я извлек и точно определил проблему в отдельном решении. Проблема в том, что VS не может создать объект CLR в XAML.
вот это:
View:
<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
{
}
}
приложение.Xaml (код отсутствует Приложение.код 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". hopr1folders$vxkDocumentsVisual Studio 2012ProjectsWpfApplication4MainWindow.xaml 6 9 WpfApplication4
Я могу запустить решение, но конструктор не работает с ошибкой " недопустимая разметка
Есть идеи?
Edit
я запускаю VS 2012 Update 2
Такое же решение работает в VS 2012 Update 1
21 ответов:
ваше решение работает на сетевом ресурсе. Приложения .Net (и Visual Studio) могут возникать проблемы с разрешениями и доступом при запуске в общей сетевой папке.
скопировать решение на локальный диск (с полным доверием) и вы должны быть хорошо.
можно получить сетевой диск, работающий с полным доверием - вы можете найти ответы на это в StackOverflow и других местах - но по моему опыту я продолжаю сталкиваться с препятствиями, когда я это делаю, поэтому старайтесь избегать его если это решающий проблемы.
например, этот вопрос дает инструкции о том, как это сделать:
дайте полное доверие к UNC share для Visual Studio 2012 и .Net 4.0
Я только когда-либо пробовал это с VS2010 так (как указано в ссылке) вы могли бы иметь лучшую радость с 2012 года.
для тех, кто сталкивается с этим сейчас, прежде чем делать что-либо еще... если вы уверены, что ваши классы / пространства имен верны и перестройка не решила вашу проблему:
попробуйте перезапустить Visual Studio
Я испытал ту же проблему, но мои файлы хранятся локально. Мой IValueConverter находится в другой сборке, чем вид, использующий его. Несмотря на то, что VS2013 IntelliSense предложил следующее, он не работал:
xmlns:conv="clr-namespace:MySharedAssembly.Converters"после того, как я явно добавил сборку в конце концов, это сработало:
xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"
Я застрял на этой ошибке в течение нескольких часов. Сборки и пространства имен были правильными, классы и ссылки тоже были правильными. Скомпилируйте и запустите ok, только у дизайнера были какие-то проблемы со мной. Единственное, что сработало
- для целей проектирования переключатель с х64 на х86
- для запуска и отладки переключитесь обратно на x64
Я использую 3D party portable.библиотека, которая у меня была только в x64 версии.
Это все еще происходит в VS 2015. Я достал SomeConverter в приложении.xaml:
<Application.Resources> <!--Value Converters--> <local:SomeConverter x:Key="mySomeConverter"/>Strg-Shift-B
Положил его обратно-и это сработало.
создайте символическую ссылку на общий сетевой ресурс на локальном диске.
перейдите в командную строку и введите mklink /D C:\LOCALFOLDER \YOURNETWORKPATH
затем откройте проекты из локальной папки, и все проблемы исчезнут. Теперь все файлы останутся на вашем сетевом ресурсе.:)
Я начинал новый проект и имел эту проблему. Ни одно из перечисленных здесь решений не работало для меня, включая удаление файла suo, выгрузку/перезагрузку проекта, перезапуск VS и т. д.
что работал для меня было, потому что это был новый проект, я еще не построил его. Я убрал окно.Элемент DataContext в буфер обмена, построил проект один раз (shift-ctrl-b), затем повторно добавил элемент, и он сразу же заработал.
прежде чем попробовать обширное решение, попробуйте следующее:
У меня была точно такая же проблема, я закрыл окно / форму, которая вызывала ошибку, а затем запустил проект,
ошибка, казалось, исчезла, как только проект был успешно запущен и не вернулся.
надеюсь, это поможет всем, кто ищет быстрое решение.
это раздражало меня в течение многих лет 2008, 10, 12, 13.
всякий раз, когда это происходит (и да, я работаю над сетевым ресурсом - я не могу избежать этого), я закрываю VS, переименовываю папку и снова открываю проект. В 9 случаях из 10 это работает. На некоторое время.
для всех остальных застрял.
что сработало для меня, так это изменение псевдонима пространства имен из 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 в выходной папке проекта. Я использую vs 2015
после перезапуска Visual Studio я получил ошибку IntelliSense, которая указала мне в правильном направлении.
потому что - Microsoft.VisualStudio.Дизайнерские инструменты.код XAML.LanguageService.Семантика.Метаданные.ReflectionTypeNode' реализуется в той же сборке, необходимо задать атрибут x: Name а не Microsoft.VisualStudio.Дизайнерские инструменты.код XAML.LanguageService.Семантика.Метаданные.ReflectionPropertyNode атрибут.
Так что я изменил это:
<local:MyView Name="test"/>для этого:
<local:MyView x:Name="test"/>и тогда это сработало. Итак, что дает нам то, что? 42 возможные причины? Ненастоящий...
У меня тоже есть проект на сетевом ресурсе и эта ошибка неожиданно появилась. Я попробовал все предложения выше, включая копирование проекта на локальный диск, Очистку, перестройку и открытие и закрытие VS. ни один из них не решил проблему.
то, что сработало для меня, просто удалило ссылку на пространство имен в папке viewmodels (xlmns:vm="clr-namespace:Myproj.модель представления.)"
Я добавил тип в свой 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 file
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; } } } }
в моем случае эта ошибка была вызвана тем, что были подписаны сборки с включенным "только знак задержки". Решение состояло в том, чтобы запустить команду
sn -Vr *из консоли разработчика (от имени администратора). Это регистрирует сборку для пропуска проверки. А затем перезапустите Visual Studio.
Это может быть связано с конфигурацией выпуска. Конструктор должен использоваться из конфигурации отладки.


Comments