Имя " 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>


Project settings



исключение я получаю:



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

697   21  

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, только у дизайнера были какие-то проблемы со мной. Единственное, что сработало

  1. для целей проектирования переключатель с х64 на х86
  2. для запуска и отладки переключитесь обратно на x64

Я использую 3D party portable.библиотека, которая у меня была только в x64 версии.

загруженное решение DLL

  1. разблокировать .DLL-файл
    • щелкните его правой кнопкой мыши и выберите Свойства
    • разблокировать его на вкладке "Общие" (см. рисунок)
  2. убедитесь, что VS повторно проверяет XAML (возможно, перезапустив его)

enter image description here

Это все еще происходит в 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), затем повторно добавил элемент, и он сразу же заработал.

прежде чем попробовать обширное решение, попробуйте следующее:

У меня была точно такая же проблема, я закрыл окно / форму, которая вызывала ошибку, а затем запустил проект,

ошибка, казалось, исчезла, как только проект был успешно запущен и не вернулся.

надеюсь, это поможет всем, кто ищет быстрое решение.

Я получил ту же ошибку в Visual Studio 2015 и сумел заставить дизайнера работать, сняв флажок "Отключить кнопку кода проекта".

Screenshot to Designer Button

это раздражало меня в течение многих лет 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

    Ничего не найдено.