Смесь выражений: ошибка «XXX» не существует в пространстве имен «XXX», но отсутствует в VS2008 - PullRequest
29 голосов
/ 30 ноября 2009

Я пытаюсь использовать Blend 3.0 для редактирования проекта, который содержит некоторые элементы управления WPF. Этот проект уже компилируется и отлично работает из Visual Studio 2008.

Однако в Blend я получаю загадочные ошибки, которые не имеют смысла:

Например, у меня есть класс, производный от Control:

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, но это не устранило ошибку.

Есть ли способ исправить это или хотя бы выяснить, откуда возникла проблема?

Ответы [ 5 ]

30 голосов
/ 11 декабря 2009

У меня была такая же проблема с Blend 2 в Windows Vista 64.

Обычно я компилирую свое решение в VS2008 с целью «Debug - x86» для всех моих проектов, чтобы оно было совместимо с некоторыми другими 32-битными проектами.

Похоже, что Blend любит цели "Debug - Any CPU". Я в основном изменил свой менеджер конфигурации так, чтобы он предназначался для Любых платформ процессора вместо x86.

Итак ...

  • Откройте ваше решение в Blend и VS2008
  • В VS2008 выберите меню Build -> Диспетчер конфигурации
  • Убедитесь, что ваше решение Конфигурация имеет «Отладка - Любой процессор» для всех проектов
  • Компиляция в VS2008
  • tadaaaa Ваш проект blend должен обновить и удалить эти ошибки ... хорошо это сделало для меня

Я сделал обратное, чтобы проверить, действительно ли это так, и кажется, что да ... Я просто вернул изменения решения обратно на Debug - x86, все очистил и пересобрал, и я все еще вернулся с ошибкой "Делает не существует [...] "

Что касается "Почему?" ... Я не знаю, но, по крайней мере, сейчас это работает!

16 голосов
/ 22 ноября 2010

Проблема в пути поиска сборки Blend. По умолчанию это поиск классов в сборках в папке "bin \ Debug"! Но если вы установите в конфигурации проекта цель x86, тогда ваш выходной путь будет «bin \ x86 \ Debug». Поэтому вам нужно изменить путь вывода в visual studio на «bin \ Debug», и Blend найдет все ваши классы!

13 голосов
/ 17 сентября 2010

Я думаю, что Blend использует конфигурацию по умолчанию / платформу, определенную в файле проекта. Вы должны быть в состоянии исправить это, отредактировав его с помощью текстового файла. Если вы посмотрите в свой файл .csproj, вы должны увидеть что-то вроде этого:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    ...

Измените AnyCPU на x86, и он должен работать так, как вы ожидаете.

1 голос
/ 15 декабря 2011

У меня тоже была такая ошибка. Но для меня это помогло перестроить проект прямо в Blend без использования Visual Studio.

Для тех, кто не знает: это можно сделать в Blend в меню, нажав «Проект» -> «Перестроить проект». По крайней мере, в смеси 4.

1 голос
/ 07 октября 2011

Вы также можете исправить эту проблему «Any CPU / x86», изменив путь вывода для всех ваших проектов на bin\Debug вместо bin\x86\Debug (то же самое для Release).

...