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

WPF: имя не существует в пространстве имен

Я создаю приложение С#/WPF с использованием VS2013, и у меня есть следующее определение класса (в той же сборке запущенного приложения):

namespace MyNamespace
{
    public class MyKey
    {
        public MyKey() { }
        public string name = "";
    }
}

В MainWindow.xaml у меня есть:

<Window x:Class="MyNamespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyNamespace"
        Title="MainWindow" Height="350" Width="525" WindowState="Maximized" WindowStyle="None">
    <Window.Resources>
        <local:MyKey x:Key="key" />
    </Window.Resources>
...

VS продолжает сообщать, что

Имя "MyKey" не существует в пространстве имен "CLR-имен: MyNamespace"

Любые идеи?

P.S. Я пробовал следующие решения (из уже размещенных вопросов в stackoverflow), но никто из них не работал:

  • Перемещение класса в другое пространство имен, а затем использование нового пространства имен в ссылке xaml
  • Перезапуск VS и очистка/восстановление решения
  • очистка решения, а затем переименование его папки, а затем создание решения снова
  • изменение ссылки на:

XMLNS: локальные = "CLR-имена: MyNamespace; сборка ="

Изменить: Дополнительная информация: Целевая архитектура: X64, целевая структура:.Net 4.5

4b9b3361

Ответ 1

Одним из распространенных решений этой известной ошибки VS, которую вы не указали как пытающейся, является изменение целевой платформы сборки.

  • Если ваша текущая целевая платформа сборки x64, перейдите на x86. Если в настоящий момент x86, измените на x64.

  • Очистить и построить решение для новой целевой платформы.

  • Сменитесь на желаемую целевую платформу и перестройте.

Ответ 2

У меня была такая же проблема в выпуске VS2012. Решил проблему с помощью команды

"WDExpress/ResetSettings" в командной строке vs2012.

fooobar.com/questions/143664/...

Ответ 3

Одним из возможных решений является удаление всех файлов .dll из Отладки и Отпустите.

Потому что иногда, когда вы ссылаетесь на проект, это относится к предварительно построенным dll, даже если вы запускаете проект в режиме отладки.

Удалите все файлы из отладки и отпустите и снова создайте этот проект, добавив ссылку на этот проект туда, где хотите. Работала отлично на моем конце.

Ответ 4

У меня была похожая проблема. Для меня это исправило изменение свойств сборки проекта, которое было добавлено в качестве ссылки. Оказалось, что "цель платформы" была изменена в прошлом. Установка его на "Любой процессор" и его восстановление позволили устранить ошибку.

Ответ 5

Запуск VS Enterprise 2017 версии 15.6.2 Targeting.Net 4.6.1

У меня была такая же проблема со страницей UserControl xaml, где в своих ресурсах она пыталась ссылаться на ValueConverter. Пространство имен было правильным, intellisense даже поместит его для вас, но дизайнер не загрузит страницу и код не скомпилируется. Я даже попытался переместить один из преобразователей значений из рассматриваемого файла и пространства имен и переместить его в код. VS был настолько взволнован, что утверждал, что метод InitializeComponent() в конструкторе выделенного кода не существует.

То, что я, наконец, исправил для меня, было, когда я понял, что в классе ValueConverter отсутствует ведущий атрибут, подобный этому:

[ValueConversion (typeof (строка), typeof (десятичная))]

Как только я добавил эту строку, я быстро очистил и скомпилировал решение, а затем оно скомпилировалось и заработало. Затем внезапно xaml смог увидеть все правила проверки и преобразователи значений в этом файле. И теперь я понял, что другие 3 преобразователя значения в этом файле также не имеют атрибута ValueConversion, и все же код все еще компилируется. Возможно, что-то о входящих типах в этом первом конвертере было расплывчатым.

Это все еще какая-то загадка. Я знаю, что должен отменить свои изменения и посмотреть, является ли ошибка воспроизводимой, но после борьбы с этим кодом большую часть дня мне надоело смотреть на него. Это был старый проект Prism, который не работал, и я обновил его до библиотек Prism 7.0. Я также попытался сбросить все настройки процессора на "Любой процессор". Он жаловался на то, что загрузчик устарел, но я проигнорировал это. Я перезагрузил и почистил все несколько раз. Я бы даже удалил папку .vs. Я, вероятно, должен был попытаться ранее полностью удалить папки obj и bin - это единственное, что я не сделал.

Это был не мой проект. Обычно я всегда создаю конвертеры значений один в файл с именем с таким же именем. Я не думаю, что это будет иметь значение, но вся ошибка была немного сумасшедшей.

Ответ 6

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

Вкратце: сравните результаты сборки со списком ошибок.