Подтвердить что ты не робот

Имя "XYZ" не существует в пространстве имен "clr-namespace: ABC"

Я работал над созданием расширений разметки и начал получать очень странные поведения VS. Я извлек и определил проблему в отдельном решении. Проблема в том, что VS не может создать объект CLR в XAML.

Вот он:

Вид:

<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>

Project settings

Исключение, которое я получаю:

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" Любые идеи?

Edit

Я запускаю VS 2012 Update 2 Это же решение работает в VS 2012 Обновление 1

4b9b3361

Ответ 1

Ваше решение работает на сетевом ресурсе..Net(и Visual Studio) могут работать при разрешении/доступе при работе в сетевом ресурсе.

Скопируйте решение на локальный диск (с полным доверием), и все будет в порядке.

Можно получить сетевой диск с полным доверием - вы можете найти ответы на это в StackOverflow и других местах, но по моему опыту я постоянно сталкиваюсь с препятствиями, когда я это делаю, поэтому старайтесь избегать этого, если это не будет абсолютно что важно для проблемы.

например. этот вопрос дает инструкции о том, как это сделать:

Дайте FullTrust для UNC-ресурса для Visual Studio 2012 и .Net 4.0

Я только когда-либо пробовал это с VS2010, поэтому (как указано в ссылке) у вас может быть лучшая радость с 2012 года.

Ответ 2

Для тех, кто сталкивается с этим сейчас, ПЕРЕД ТЫ ДЕЛАЙТЕ ЧТО-НИБУДЬ... Если вы уверены, что ваши классы/пространства имен верны, и восстановление не решило вашу проблему:

Попробуйте перезапустить Visual Studio

Что это!

Это, кажется, ошибка с Visual Studio 2012 (также, похоже, влияет на все другие версии, поддерживающие разработку XAML)


Обновление. Если перезагрузка Visual Studio не работает, перезагрузите весь компьютер.

Обновление. Как упоминалось в комментариях @Dunk, если перезапуск Visual Studio не работает, попробуйте удалить файл .suo

Ответ 3

У меня возникла такая же проблема, но мои файлы хранятся локально. Мой IValueConverter находится в другой сборке, чем его просмотр. Хотя VS2013 IntelliSense предложил следующее, он не работал:

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

После того, как я явно добавил сборку в конце, она сработала:

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

Ответ 4

Я зациклился на этой ошибке часами. Ассембли и пространства имен были правильными, классы и ссылки были правильными. Компилировать и работать нормально, только у дизайнера были какие-то проблемы со мной. Единственное, что сработало

  • для целей проектирования swtich от x64 до x86
  • для запуска и отладки обратно на x64

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

Ответ 5

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

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

введите описание изображения здесь

Ответ 6

Это все еще происходит в VS 2015. Я вынул SomeConverter в App.xaml:

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

Strg-Shift-B
Верните его обратно - и это сработало.

Ответ 7

Создайте символическую ссылку на общий ресурс сети на локальном диске.

Перейдите в командную строку и введите mklink/D C:\LOCALFOLDER\YOURNETWORKPATH

Затем откройте проекты из своей локальной папки, и все проблемы исчезнут. Теперь все файлы будут по-прежнему находиться в вашем сетевом ресурсе.:)

Ответ 8

Я начал новый проект и имел эту проблему. Ни одно из перечисленных здесь решений не работало, включая удаление suo файла, выгрузку/перезагрузку проекта, перезапуск VS и т.д.

Что сработало для меня, потому что это был новый проект, я еще его не построил. Я удалил элемент Window.DataContext в буфер обмена, построил проект один раз (shift-ctrl-b), а затем снова добавил элемент, и он немедленно функционировал.

Ответ 9

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

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

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

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

Ответ 10

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

Снимок экрана к кнопке конструктора

Ответ 11

Это раздражало меня в течение лет 2008, 10, 12, 13.

Всякий раз, когда это происходит (да, я работаю над сетевым ресурсом - я не могу этого избежать), я закрываю VS, переименую FOLDER и снова открываю проект. 9 раз из 10, это работает. Некоторое время.

Ответ 12

Для кого-то еще застрял.

Что сработало для меня, это изменить псевдоним пространства имен от локального, на что-либо еще.

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

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

to

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

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

Надеюсь, это поможет!

Ответ 13

Была та же проблема. Для меня это было, когда я понял, что класс, о котором идет речь, был отмечен как internal:

internal class MyClass
{
}

После изменения его на public разработчик смог правильно скомпилировать XAML.

Ответ 14

Что сработало для меня, это изменить MOVE на XCOPY в Post Build в project properties, а затем re-build проекта. Дизайнеру может понадобиться dll в выходной папке проекта. Я использую vs 2015

Ответ 15

После перезагрузки Visual Studio я получил ошибку IntelliSense, которая указала мне в правильном направлении.

Поскольку 'Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionTypeNode' выполняется в той же сборке, вы должны установить атрибут x: Name а не Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionPropertyNode атрибут.

Итак, я изменил это:

<local:MyView Name="test"/>

Для этого:

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

И потом это сработало. Итак, что нам дает? 42 возможных причины? Unreal...

Ответ 16

У меня также есть проект на сетевом ресурсе, и эта ошибка неожиданно появилась. Я попробовал все вышеперечисленные предложения, включая копирование проекта на локальный диск, очистку, перестройку и открытие и закрытие VS. Ни одна из них не решила проблему.

Что сработало для меня, просто удалило ссылку пространства имен в папку viewmodels (xlmns: vm = "clr-namespace: Myproj.ViewModel" ).

Я добавил тип в свой xaml (DataTemplate DataType = "{x: Тип vm: myviewmodel}" ). Затем Visual Studio обнаружила, что пространство имен отсутствует, и я нажал на приглашение, чтобы добавить пространство имен.

Ответ 17

Объявление этого словаря ресурса для меня работало.

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

Проблема заключается в том, что синтаксический анализатор сам по себе держится, когда видит расширение разметки, например Converter={c:IsNullConverter}}", но отлично с: Converter={StaticResource IsNullConverter}. Я думаю, может быть, там, где проблема.

Windows 10, VS 2013

Ответ 18

У меня было 3 ошибки в проекте и было сосредоточено на этой ошибке, связанной с ObjectDataProvider. Я узнал, что эта ошибка не может быть решена, если проект не может построить из-за других ошибок. У меня было еще несколько обработчиков событий, код которых был удален. Мне также нужно было удалить код, который пытался связать обработчики с элементами управления. Затем проект смог построить и увидеть, что класс, который я пытался ссылаться из ObjectDataProvider, был доступен.

Ответ 19

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

}

Ответ 20

В моем случае эта ошибка была вызвана тем, что была включена подписка сборок с включенным сигналом "задержка". Решение заключалось в том, чтобы запустить команду sn -Vr * с консоли разработчика (как администратора). Это регистрирует сборку для пропуска пропусков. Затем перезапустите Visual Studio.

Ответ 21

Это может быть связано с конфигурацией Release. Дизайнер должен использоваться из конфигурации Debug.