Expression Blend: Получение ошибки "XXX" не существует в пространстве имен "XXX", но не в VS2008
Я пытаюсь использовать Blend 3.0 для редактирования проекта, который содержит некоторые элементы управления WPF. Этот проект уже компилируется и отлично работает с Visual Studio 2008.
В Blend, однако, я получаю загадочные ошибки, которые не имеют никакого смысла:
Например, у меня есть класс, который происходит от элемента управления:
namespace Company.WPFControls.SearchTextBox
{
public class SearchTextBox : Control
{
...
}
}
И я пытаюсь использовать его в ресурсе, в той же сборке, для назначения стиля:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Company.WPFControls.SearchTextBox"
<Style TargetType="{x:Type local:SearchTextBox}">
...
</Style>
</ResourceDictionary>
В Blend появляется следующая ошибка:
Имя "SearchTextBox" не существуют в пространстве имен "CLR-имен: Company.WPFControls.SearchTextBox".
Я попытался указать имя сборки, добавив ;assembly=Company.WPFControls
, но не удалив ошибку.
Есть ли способ исправить это или, по крайней мере, выяснить, откуда возникла проблема?
Ответы
Ответ 1
У меня была такая же проблема с Blend 2, на Windows Vista 64.
Я обычно компилирую свое решение в VS2008 с целью "Отладка - x86" во всех моих проектах, так что он совместим с некоторыми другими 32-битными проектами.
Похоже, Blend любит цели "Отладка - любой процессор".
Я в основном изменил свой менеджер конфигурации, чтобы он нацелился на любые платформы процессора вместо x86.
Итак...
- Откройте свое решение в Blend и VS2008
- В VS2008 выберите меню Сборка → Configuration Manager
- Убедитесь, что ваше решение
у конфигурации есть "Debug - Any CPU",
для всех проектов
- Скомпилировать в VS2008
- tadaaaa Ваш проект blend должен обновлять и удалять эти ошибки...
хорошо это сделало для меня
Я сделал противоположное, чтобы проверить, действительно ли это так, и кажется да... Я просто вернул решение обратно в Debug-x86, очистил все и перестроил, и я все еще был с ошибкой "Делает не существует [...]"
Что касается "Почему?"... Я не знаю, но по крайней мере сейчас это работает!
Ответ 2
Проблема заключается в пути поиска сборки Blend. По умолчанию он ищет классы в сборках в папке "bin\Debug"! Но если вы установите в целевой конфигурации проекта x86, то ваш путь вывода будет "bin\x86\Debug". Поэтому вам нужно изменить свой выходной путь в visual studio на "bin\Debug", а Blend найдет все ваши классы!
Ответ 3
Я думаю, что Blend использует конфигурацию/платформу по умолчанию, определенную в файле проекта. Вы должны исправить это, отредактировав его с помощью текстового файла. Если вы посмотрите в свой .csproj файл, вы должны увидеть что-то вроде этого:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
...
Измените значение AnyCPU на x86 и оно должно работать так, как вы ожидаете.
Ответ 4
Вы также можете исправить эту проблему "Любой процессор /x 86", изменив путь вывода для всех ваших проектов на bin\Debug
вместо bin\x86\Debug
(то же самое для Release).
Ответ 5
У меня также была ошибка. Но для меня это помогло перестроить проект непосредственно в Blend без использования Visual Studio.
Для тех, кто не знает: вы можете сделать это в Blend в меню, нажав "Project" → "Rebuild Project".
По крайней мере, в Blend 4.