style microsoft guide example code c# namespaces designer subclass

c# - microsoft - El nombre de tipo{myUserControl} no existe en el tipo{myNamespace.myNamespace}



interface naming convention c# (7)

Dado que este fue un resultado de búsqueda superior cuando tuve este error, solo quiero publicar mi causa y 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 enlace, usé su código dentro del primero y obtuve el error.

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

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

Nota para uno mismo: preste más atención a la columna del proyecto de la lista de errores :)

Tengo un problema (obviamente la pregunta :)

Tengo un proyecto: MyProject ... por lo tanto, el resto del proyecto usa un valor predeterminado de cualquier clase como espacio de nombres "MyProject" ... no hay problema.

En mi proyecto, creé un control de usuario personalizado que tiene muchos otros controles (etiqueta, cuadros de texto, etc.). Por lo tanto, esa clase también se encuentra dentro del espacio de nombres 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 del DISEÑADOR y el Código subyacente (Mi código) estén AMBOS dentro del mismo espacio de nombres "MiProyecto" (que son), Y ambos son, respectivamente, CLASE PARCIAL PÚBLICA .

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

Guarde todo, compile, falle ... El Diseñador está agregando una referencia de "MyProject" adicional, lo que hace que parezca que el control de usuario se encuentra realmente en MyProject.MyProject.MyUserControl .. en lugar de MyProject.MyUserControl.

Tan pronto como elimine manualmente el "MyProject" extra, guardar y compilar, todo está bien. Sin embargo, si reedito el formulario, cambio algo, M $ lo cambia de nuevo 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 de MyUserControl tengo ...

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

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

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

Gracias por la ayuda...


El nombre del espacio de nombres y el nombre de la 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á.


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

Puede resolver este problema fácilmente al pasar el cursor sobre la palabra clave culpable (nombre de la clase) y en Visual Studio 2013, le dirá exactamente dónde está el conflicto.


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

-> Tiene en alguna parte en su proyecto un espacio de nombres llamado MyProject.MyProject .

(Intenta encontrarlo en "Vista de clase")


Me acabo de encontrar esto donde tuve una MasterPage que tenía un explícito

<%@ Import Namespace="MyNamespace" %>

en el archivo .master


Nombre de usuario de control y formulario son los mismos. El uso de diferentes nombres resolverá el problema.


PD. a cualquiera que tenga el mismo problema pero no haya encontrado ninguna solución ...

Suponiendo que ha creado una nueva aplicación WindowsFormApplication;

  1. Cree un nuevo proyecto WindowsFormApplication con el mismo nombre que su nombre de solución.
  2. El nombre predeterminado predeterminado del formulario viene llamado "Form1". Y cambia su nombre igual que el nombre del proyecto.
  3. Agregar nueva clase UserControl en el proyecto.
  4. Genere / reconstruya el proyecto y verifique que el control de usuario se encuentra en Toolbox.
  5. Arrastre el control de usuario al formulario y comience a depurar.
  • Error: el nombre de tipo ''userControlName'' no existe en el tipo ''projectName.FormName''

Tuve una investigación en la red para cualquier solución, pero no pude encontrar ninguna respuesta ...

Pero si cambia el nombre del formulario de forma diferente al nombre del proyecto, se resolverá.

Si insiste en que el nombre del formulario y el nombre del proyecto deben 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.

Luego, para usarlo como control, agregue el archivo DLL a "ToolBox" usando "Elegir elementos ..."

Finalmente estará listo para su uso.

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