2011-06-26 17 views
24

Tengo un control de usuario winform que deseo agregar al proyecto wpf.La etiqueta "xxx" no existe en el espacio de nombres XML "yyy"/No se pudo encontrar la referencia

he añadido las referencias pertinentes (WindowsFormsIntegration, SystemWindowsForms y mi control DLL de usuario) y se añadió esta fila en mi XAML:

xmlns:MyControl="clr-namespace:xx.xx.xx;assembly=xx.xx" 

Y luego esto:

<WindowsFormsHost><MyControl:control></MyControl:control></WindowsFormsHost> 

Cuando escribo "MyControl : "el" control "se muestra automáticamente que significa que VS reconoce el control y todas las referencias se agregaron bien ... pero cuando compilo el proyecto, me da el error en el título.

Editar

Es muy extrañas cuando estoy compilar el proyecto todo lo que tengo de error "El tipo o espacio de nombres "xx' no se pudo encontrar ..." pero he añadido todo el las referencias y los VS reconocen el espacio de nombres, entonces ¿por qué el compilador no los encuentra? Si este problema se resuelve, creo que el otro problema también desaparecerá.

+2

¿Están sus proyectos dirigidos al mismo .NET-Framework-Version? – Marc

+0

Me apoyé accidentalmente en el teclado y cambié el nombre de "Button3" a "Butto333333333333333n3" en el nombre del ensamblado en propiedades. Reparar eso de vuelta a lo que debería llamarse solucionó el problema. Compruebe si hay errores tipográficos tontos, eso es lo que será – Mezmer

Respuesta

0

He encontrado este problema antes y reemplazo <MyControl:control></MyControl:control> con solo <MyControl:control/> arreglado para mí.

Sin embargo, no tengo idea de por qué. Parece que la primera forma es solo para controles que pueden contener otros controles.

+0

lamentablemente no funcionaría para mí – Maya

+0

¿Le importaría pegar en su XAML real? (¿o es eso más o menos?) –

+0

@Tom Puedo pegarlo en otra computadora de todos modos es más o menos eso. ¿Ves mi edición? Creo que mi problema es que el compilador no puede encontrar la referencia de mi control – Maya

1

Me encontré con el mismo "No se encontró el tipo o el nombre del espacio de nombres 'xx' ..." issue.

Desaparece cuando Moví mis archivos de Visual Studio en una unidad local. Fueron almacenados en un directorio de red compartido antes. No sé la causa raíz de esto, pero al menos puedo tener mi diseñador ejecutándose ahora.

+1

¿Ha intentado hacer una "Limpieza" de toda la solución, y/o eliminar los directorios bin? (Por supuesto, cuídese de las dependencias externas :)) – Larry

13

Visual Studio cargará la referencia solo para la reflexión, por lo que mostrará la intellisense correcta correctamente. Pero para compilar, el compilador necesitará todos los dlls de los que dependa el dll al que se hace referencia. Así que visual studio mostrará intellisense para mycontrol ya que puede encontrarlo en referencia. Pero su myontrol puede hacer referencia a otros dlls que posiblemente no haya agregado. También deberá agregar referencias dependientes de mycontrol en su proyecto.

42

La solución es: Vaya a las propiedades de su proyecto y cambie Target Framework de Client Profile a la versión completa de .Net que está utilizando, vea la imagen a continuación. Este problema ocurre si su DLL apunta al .NET Framework completo, y su aplicación WPF (proyecto principal) se dirige a .Net Client Profile.

Change Your Target Framework to the Full Version

+1

+1 en realidad funcionó. la única pregunta es por qué? cuál es la historia con el perfil del cliente –

+1

@AdielYaacov, eso sucede si su DLL apunta al .NET Framework completo, y su Aplicación WPF apunta al Perfil del Cliente. –

+1

Tuve el mismo problema y la solución estaba muy cerca de esto. Estaba haciendo referencia a una biblioteca .NET v.4.5 de un proyecto que accidentalmente había creado como .NET V.4. Al instalar la versión del proyecto en .NET v4.5 se corrigió. – GrandMasterFlush

6

También podría ser que el marco de destino es diferente entre sus proyectos. Alojamos un dll de biblioteca de clases con las páginas de WPF, y estaba dirigido a 'Cualquier CPU', pero la aplicación de host estaba dirigida a 'x86'. Una vez que coincidieron, el problema desapareció.

21

Esto me sucedió cuando incluí el nombre del ensamblado en la definición del espacio de nombres, pero ambos controles estaban en el mismo ensamblaje. Solo se eliminó la parte del ensamblado de la declaración del espacio de nombres.

Cuestiones relacionadas