Mezcla de expresión: Obtener el error " XXX " no existe en el espacio de nombres "XXX", pero no en VS2008


Estoy tratando de usar Blend 3.0 para editar un proyecto que contiene algunos controles WPF. Este proyecto ya compila y funciona bien desde Visual Studio 2008.

En Blend sin embargo, estoy recibiendo errores misteriosos que no tienen sentido:

Por ejemplo, tengo una clase que deriva de Control:

namespace Company.WPFControls.SearchTextBox
{
    public class SearchTextBox : Control
    {
        ...
    }
}

Y trato de usarlo en un recurso, en el mismo ensamblado, para asignar un estilo:

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

Obtengo el siguiente error en la mezcla:

El nombre " SearchTextBox" no existir en el espacio de nombres "clr-namespace: Company.WPFControls.SearchTextBox".

He intentado especificar el nombre del ensamblado, agregando ;assembly=Company.WPFControls pero no elimina el error.

¿Hay alguna manera de solucionar esto o al menos averiguar de dónde viene el problema?

Author: CLaRGe, 2009-11-30

5 answers

Tuve el mismo problema con Blend 2, en un Windows Vista 64.

Normalmente compilo mi solución en VS2008, con un objetivo "Debug - x86" en todos mis proyectos, por lo que es compatible con otros proyectos de solo 32 bits.

Parece que a Blend le encantan los objetivos "Depurar - Cualquier CPU". Básicamente cambié mi administrador de configuración para que se dirija a cualquier plataforma de CPU en lugar de x86.

So...

  • Abra su solución en Blend y en VS2008
  • En VS2008, elija el menú " Build -> Configuration Manager
  • Asegúrese de que su solución la configuración tiene un " Depurar - Cualquier CPU" para todos los proyectos
  • Compilar en VS2008
  • tadaaaa Su proyecto blend debería actualizar y eliminar esos errores... bueno, lo hizo para mí

Hice lo contrario para verificar si era realmente eso, y parece que sí... Simplemente revertí los cambios de la solución a Debug-x86, limpié todo y reconstruí, y todavía estaba de vuelta con el error "no existe [...]"

En cuanto al "¿Por qué?"... No lo sé, pero al menos funciona ahora!

 30
Author: FrankyB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-10 23:07:08

El problema está en la ruta de búsqueda de ensamblado de mezcla. ¡Por defecto busca clases en ensamblados en la carpeta "bin\Debug"! Pero si establece en la configuración del proyecto el objetivo x86, su ruta de salida será "bin\x86 \ Debug". Por lo tanto, debe cambiar la ruta de salida en visual studio a "bin\Debug" y Blend encontrará todas sus clases.

 16
Author: mr_squall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-22 09:57:25

Creo que Blend utiliza la configuración/plataforma predeterminada definida en el archivo de proyecto. Deberías poder arreglar esto editándolo con un archivo de texto. Si miras en tu .archivo csproj, deberías ver algo como esto:

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

Cambie AnyCPU a x86 y debería funcionar de la manera que espera.

 13
Author: scobi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-17 00:23:31

También puede solucionar este problema de "Cualquier CPU/x86" cambiando la ruta de salida para todos sus proyectos a bin\Debug en lugar de bin\x86\Debug (lo mismo para Release).

 1
Author: Schneider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-07 09:49:26

También tuve un error como este. Pero para mí ayudó a reconstruir el proyecto directamente en Blend sin usar Visual Studio.

Para aquellos que no lo saben: Puede hacer esto en Blend en el Menú haciendo clic en "Proyecto" -> "Reconstruir proyecto". Al menos en la mezcla 4.

 1
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-15 13:55:29