2012-02-05 29 views
13

He implementado un convertidor para convertir Int32 a String para poder enlazar una propiedad a un cuadro de texto.La etiqueta 'XXX' no existe en el espacio de nombres XML 'clr-namespace: YYY'

Implemento este convertidor en el espacio de nombres MyApp.Converters y se llama Int32ToStringConverter.

Entonces, en mi axml agrego la referencia a mi convertidor de la siguiente manera:

<Window x:Class="MusicaDB.Views.PrincipalView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:i="namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     **xmlns:converter="clr-namesapce:MyApp.Converters, aseembly=MyApp**"> 

Más tarde, en windows.Resources tengo:

<Window.Resources> 
     <**converter:Int32ToStringConverter** x:Key="Int32ToStringConverter" /> 
</Window.Resources> 

me sale el error de que la etiqueta Int32ToString el convertidor no existe en el espacio de nombres MyApp.Converters, assembly = MyApp.

Tengo el proyecto en el disco duro local, en las propiedades del proyecto, el destino .NET es framework 4.0, no el perfil del cliente de framework 4.0 y trato de borrar la solución y recompilar pero el problema persiste.

Principalmente, estas son las dos soluciones que siempre encuentro, pero no resuelven mi problema.

Respuesta

24

tres correcciones para hacer aquí:

  1. Sin espacios ->xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. No hay faltas de ortografía ->xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. delimitadores derecha ->xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"

¿Qué hay de la lectura the reference antes de usar algo ?

Nota que el carácter que separa el clr-espacio de nombres contador desde su valor es de dos puntos (:), mientras que el carácter que separa el montaje contador desde su valor es un signo igual (=). El caracter a usar entre estos dos tokens es un punto y coma. Además, no incluya ningún espacio en blanco en ninguna parte de la declaración.

+0

¡El enlace de referencia ya no está! –

+2

@WaldoAlvarez: No es, eso es solo MSDN usando un estúpido valor predeterminado, si ve "Este tema ya no está disponible", seleccione una versión anterior del menú desplegable "Otras versiones". –

+0

ahh ok gracias, mejor proporcionar enlace directo https://msdn.microsoft.com/en-us/library/ms747086(v=vs.100).aspx –

3

Veo dos posibles causas. El primero es que usted "ensambló" mal escrito como "aseembly" en la primera línea marcada. Cambiar la ortografía podría ser suficiente. La segunda posibilidad es que usted no ha añadido MyApp.dll a las referencias del proyecto, que aparecen como esto

enter image description here

en Visual Studio.

11

Estoy explorando por qué ocurre esto, pero si su convertidor está en el ensamblaje principal, eliminar el ensamblado = de su etiqueta xmlns: converters debería eliminar ese error de compilación.

2

En mi situación, tuve el mismo problema con xmlns:local="clr-namespace:<mydefaultnamespace>". Lo resolví cambiando el orden de los includes. Lo puse primero y todo fue resuelto. Un comportamiento extraño, pero esta fue mi solución que encontré en mi situación.

0

En mi caso, la asamblea que contenía el espacio de nombres no era físicamente allí.

Revisé las referencias del ensamblado que tenía el error de construcción y miré las propiedades del ensamblaje al que se hace referencia en cuestión.

Navegué hasta la ruta y descubrí que faltaba realmente el ensamblaje (que me di cuenta que era mío), lo que dio lugar a un error engañoso.

18

Otra posible solución a este problema es que no está utilizando la misma versión de .Net en su proyecto y su biblioteca.

+0

Esto es muy útil: tenía mi sintaxis correcta, pero olvidé establecer la versión de marco para el nuevo ensamblaje al que hacía referencia. Gracias. –

+1

Eres un salvavidas. – MetalMikester

+0

¿Puedes elaborar más sobre esto? Más detalles –

3

Todas las respuestas son correctas. Y después de probar todos ellos y no puede configurar por qué está sucediendo, todo parece estar bien, reinicie Visual Studio.

Eso funcionó para mí después de perder casi 1 hora. Encontré que todo estaba bien, pero reinicié el VS con la administración.

+0

¡Literalmente estaba tratando de descubrir lo que estaba sucediendo durante aproximadamente 3 HORAS! Tu sugerencia de reiniciar VS hizo el truco !! –

0

utilice la etiqueta de montaje solo si está en otro proyecto. otro uso racional solo etiqueta de espacio de nombres solo. Para mí esto ha solucionado el problema

1

Hay un caso muy oscuro cuando se obtiene este error - si está usando Microsoft.mshtml.dll y actualizar a Windows 10 edición de aniversario, o como resulta que la edición creador también.

Incluso si esto no es lo que le sucede, asegúrese de que la biblioteca que contiene el componente que no se puede encontrar pueda compilarse por completo. Busque en la lista de errores (no en la cuadrícula sino en la consola de Salida) las pistas.

En mi caso yo estaba usando Microsoft.mshtml.dll como parte de un editor HTML y no estaba registrado de alguna manera (en el GAC).

el siguiente artículo explica con capturas de pantalla:

https://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html#comment-form

En resumen tuve que correr un símbolo de Visual Studio (como administrador) ejecute estos comandos:

cd C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a 
regasm Microsoft.mshtml.dll 

Yo digo oscura :-) El punto importante es leer los errores que pueden estar ocultos entre todas tus advertencias porque podría haber una pista importante.

Esto puede ser especialmente confuso si una actualización del sistema operativo interrumpe repentinamente su proyecto.

Cuestiones relacionadas