2009-10-06 15 views
16

tengo un problema (obviamente la pregunta :)El nombre del tipo {myUserControl} no existe en el tipo myNamespace.myNamespace {}

Tengo un MiProyecto proyecto-- ... de ahí el resto del proyecto utiliza un valor predeterminado de cualquier clase como espacio de nombre "MyProject" ... no hay problema.

En mi proyecto, creé un control de usuario personalizado que tiene muchos otros controles en él (etiqueta, cuadros de texto, etc.). Entonces, esa clase TAMBIÉN está dentro del espacio de nombre predeterminado de "MyProject". Todo compila sin problema. Solo para confirmar la visibilidad del alcance, en este control de usuario, me aseguré de que el código de DISEÑADOR y el Código subyacente (Mi código) ESTÁN TANTO dentro del mismo espacio de nombres "MyProject" (son), Y ambos son, respectivamente, CLASE PARCIAL PÚBLICA MyUserControl .

Ahora el problema. Creo un formulario simple (también en el espacio de nombres "MyProject" de forma predeterminada). Desde la caja de herramientas, existe el "MyUserControl", así que lo arrastro a MyNewForm. Arrastrar/soltar está bien.

Guardar todo, compilar, fallar ... El diseñador está agregando una referencia extra "MyProject" haciendo que parezca que el control de usuario está realmente ubicado en MyProject.MyProject.MyUserControl .. en lugar de MyProject.MyUserControl.

Tan pronto como elimine manualmente el "MyProject." Adicional, guarde y compile, todo está bien. Sin embargo, si vuelvo a editar el formulario, cambie algo, M $ lo cambia a la referencia original "MyProject.MyUserControl".

Todo lo que se dice, aquí están los fragmentos de mi proyecto ...

namespace MyProject 
{ 
    partial class MyNewForm 
    { 
     ... 
     private void InitializeComponent() 
     { 
     // THIS is the line that has the extra "MyProject." reference 
     // when I manually remove it, all works perfectly 
     this.MyUserControl1 = new MyProject.MyUserControl(); 
     } 
    } 


    private MyUserControl MyUserControl1; 

} 

Luego, en la definición MyUserControl tengo ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 
} 

y desde el MyUserControl a través del Diseñador ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 

} 

Gracias por la ayuda ...

Respuesta

11

Lo que el diseñador está haciendo está bien.

-> Usted tiene en su proyecto un espacio de nombres llamado MyProject.MyProject.

(Intente encontrarlo en "Vista de clases")

+2

CARGAS de gracias. – Larry

+15

También sucede cuando tiene clase en algún espacio de nombres con el mismo nombre que su espacio de nombres. – greenskin

0

Como se trataba de un resultado de búsqueda arriba cuando tuve este error, sólo quiero publicar mi causa y la solución.

  • Tenía dos proyectos dentro de una solución, compartiendo un archivo de clase 'común' que se agregó como un enlace.
  • Agregué un segundo archivo de clase 'auxiliar' como un enlace, usé su código dentro del primero y obtuve el error.

El problema era que no había agregado la segunda clase de 'ayuda' como enlace en ambos proyectos.

Así que el otro proyecto tenía una clase 'común' actualizada, pero no tenía conocimiento de la clase 'ayudante' que ahora usa.

Nota al uno mismo: prestar más atención a la columna de proyecto de la lista de errores :)

11

PS. para cualquiera que tenga el mismo problema pero no haya encontrado ninguna solución ...

Suponiendo que ha creado una nueva aplicación WindowsForm;

  1. Cree un nuevo proyecto WindowsFormApplication con el mismo nombre que su nombre de solución.
  2. El nombre del formulario predefinido por defecto viene llamado "Form1". Y cambie su nombre igual que el nombre del proyecto.
  3. Agregue una nueva clase UserControl al proyecto.
  4. Genere/vuelva a generar el proyecto y compruebe que el control de usuario se encuentra en Toolbox.
  5. Arrastra el control de usuario en el formulario y comienza la depuración.
  • Error: The type name 'userControlName' does not exist in the type 'projectName.FormName'

tuve la investigación en red para cualquier solución, pero no pudo llegar a ninguna respuesta ...

Pero si cambia el nombre de cualquier otra forma diferente del nombre del proyecto, es Se resolverá.

Si insiste en que el nombre del formulario y el nombre del proyecto tienen que ser los mismos según las necesidades de su proyecto, se podría crear una DLL personalizada y usar el control de usuario en ella.

entonces para usar como control, agregar el archivo DLL de "caja de herramientas" con "Elegir elementos ..."

último que va a estar listo para su uso.

PS2. luchando el mismo problema durante horas, esta es la solución que encontré.

+1

Me he encontrado con un problema similar. Para mí, era una clase con el mismo nombre del espacio de nombres.Me volvió loco, pero gracias a esta respuesta lo encontré. –

1

El nombre del control de usuario y el formulario son los mismos. Usar diferentes nombres resolverá el problema.

2

El nombre del espacio de nombre y el nombre de clase deben ser diferentes. El código generado al agregar el WCF hace referencia automáticamente al espacio de nombres, pero si el nombre de la clase es el mismo que el nombre del espacio de nombres, el código generado mira a la clase y nada se compilará.

0

Sólo encontrado con este donde tuve una MasterPage que tenía una explícita

<%@ Import Namespace="MyNamespace" %> 

en el archivo .master

0

Esto también sucede cuando se utilizan diferentes páginas pero con mismo nombre. En mi caso, había creado el conjunto de datos "Grants.xsd" y la página "Grants.aspx". De alguna manera se metieron en conflicto dando como resultado este error.

Puede solucionar fácilmente este problema pasando el puntero del ratón sobre la palabra clave culpable (nombre de clase) y en Visual Studio 2013, le indicará exactamente dónde está el conflicto.

Cuestiones relacionadas