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

Неверная разметка дизайнера XAML 2012

У меня есть проект, содержащий usercontrols. По какой-то причине представление дизайна для окна, которое использует указанные элементы управления, прекратило функционировать и настаивает на "Недопустимой разметке" - приведенная ошибка заключается в том, что некоторые члены пользовательских элементов управления не распознаются или недоступны. Однако проект компилируется и выполняется просто отлично. Загрузите его в VS2010, редактор отлично работает, никаких ошибок вообще - то же самое даже в Expression Blend.

До сих пор я пробовал типичную очистку, перестройку, вручную удаляя вещи из obj, обновляя .xaml и перестраивая, пытался запустить VS2012 с /resetuserdata и/resetsettings - проблема сохраняется. Я даже откатился к гораздо более раннему пересмотру своего проекта, когда дизайнер работал очень хорошо, без кости - та же ошибка. Я также попытался запустить VS2012 в качестве нового пользователя Windows, чтобы избежать каких-либо хранимых приложений, которые могут задерживаться, опять же нет.

Есть ли какой-то другой кеш или что-то, что я могу удалить вручную?

4b9b3361

Ответ 1

Также возникает проблема с тем, что ShadowCache (используемый для дизайнера рендеринга) не синхронизируется с вашим XAML в VS2012. Я только что нашел это, поскольку у меня было ужасное время со следующей ошибкой с производными пользовательскими элементами управления:

Локальное свойство XXXX может применяться только к типам, которые получены из YYYYY.

Теневой кеш находится в каталоге вашего профиля пользователя:

данные приложения \Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache

Вы можете удалить все там и перезапустить VS2012. После этого все работало намного лучше (хотя бы некоторое время!)

Ответ 2

Удалить все в ShadowCache

C:\Users\имя пользователя\AppData\Local\Microsoft\VisualStudio\11,0\Конструктор\ShadowCache\

Лучший способ открыть эту папку:

% LOCALAPPDATA%\Microsoft\VisualStudio\11,0\Конструктор\ShadowCache\

\ 11.0\= VS2012, замените, если другая версия

Если вы разрабатываете ASP.NET, удалите

% LOCALAPPDATA%\Microsoft\WebsiteCache

% LOCALAPPDATA%\Temp\VWDWebCache

Ответ 3

Я не уверен, что это исправит все случаи, но это то, что сработало для меня (все время сейчас).

У меня есть VS2012, используя конструктор Blend в среде IDE, создав приложение x64, когда я бы определил новую ICommand и добавлю атрибут Command, я бы получил, что дизайнер не поддерживается в ошибке x64 (я забыл точное предупреждение). Если я переключусь на x86, я бы получил недопустимые ошибки разметки XAML, жалуясь на то, что ICommand не был признан или недоступен, независимо от того, сколько раз я перестраивал его в x64. Если я переключусь на x86, выполните сборку, а затем вернитесь к x64, вуаля, а не проблемы с дизайнером.

Теперь я вспоминаю аналогичные проблемы с VS2008 и Blend версии 3 и 4. Из того, что я читал в других сообщениях, использование любого процессора также может решить проблему.

Ответ 4

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

Ответ 5

У меня такая же проблема при использовании элементов управления с настраиваемым конструктором (без параметров).

Убедитесь, что конструктор Custom/User Control не требует каких-либо данных, которые нет у дизайнера WPF. Быстрое ожидание проверки того, что окружает все это с помощью попытки уловить, очистить, перестроить, а затем проверить, не решена ли проблема.

Если это не так, попробуйте прокомментировать все, кроме значка WPF Init по умолчанию, очистить, перестроить и протестировать его.

Ответ 6

В Visual Studio 2013 это обходной путь, который я использую для моего проекта Windows Phone, http://danielhindrikes.se/visual-studio/workaround-for-invalid-markup-problems-when-developing-for-windows-phone/. Я думаю, что это тот же дизайнер, который используется при написании XAML для WPF.

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

Ответ 7

Немного поздно, но что-то еще, чтобы рассмотреть: если ваш конструктор no-parameter выполняет какую-то другую работу, например, получение данных, которых нет, потому что вы находитесь в дизайнере, добавьте это в начале вашего конструктора:

if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.

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

И, независимо от того, что говорят другие, это не ошибка Parser VS или WPF XAML. Сегодня я столкнулся с этой проблемой, используя VS 2015,.Net 4.5.2.

Ответ 8

У меня была такая же проблема (компиляция и работа с программой отлично, дизайнер XAML сообщает о недопустимой разметке), проблема заключалась в том, что я случайно изменил имя сборки одного из проектов в своем решении, я изменил его и мой XAML дизайнер вернулся к жизни, поэтому проверьте страницу свойств каждого проекта в своем решении и убедитесь, что имя сборки так же, как вы ожидаете.

Ответ 9

Вам нужно заново закодировать ваш xaml, открыть прослушиваемые файлы в ide → сохранить как → сохранить кодировку (выбрать UTF8)

Ответ 10

Я думаю, что в вашем проекте нет проблем, но это проблема в VS 2012. Попробуйте установить последнее обновление для VS 2012 (обновление 2), а также проверьте этот ответ.

Привет,