Sigo teniendo un problema extraño, preguntándome si es porque uso tipos con el mismo nombre que el espacio de nombres.

ACTUALIZACIÓN:

Terminé resolviendo esto de una manera que no esperaba: aparentemente no fue la colisión de espacio de nombres / nombre de tipo que pensé que era (para mi sorpresa cuando lo volví a hacer y falló exactamente de la misma manera). I pensar tal vez este sea un error menor de VS, esto es lo que sucedió:

-> La ruta del error

  • Agregué un proyecto de Winforms
  • Agregué una referencia a Lib1
  • Lib1 apareció como una referencia adicional
  • (Reviso mi estimación de exactamente cuándo VS se "confunde") La próxima vez que compilo, las cosas se rompen y es como si nunca hubiera agregado la referencia a Lib1.

-> Sorprendente forma en que terminé resolviendo el problema:

  • Estaba tomando fotos al azar porque estaba confundido y decidí agregar la biblioteca de una manera (ligeramente) diferente.
  • En lugar de hacer clic con el botón derecho en el nodo Referencias en el Explorador de soluciones y elegir Lib1 en la pestaña "soluciones", lo elegí en la pestaña "Recientes".
  • Cuando lo agregué, para mi sorpresa, VS se quejó de que no pudo agregar la biblioteca
  • La razón fue que mi biblioteca estaba configurada en .NET 4 y mi aplicación Winforms estaba predeterminada en el perfil de cliente.

-> el problema se resolvió cuando cambié mi aplicación winforms a .NET 4

Antecedentes / Motivación:

Soy un desarrollador solitario, por lo que cuando tengo estrangulamientos como este, a veces paso 20 minutos y si no puedo resolverlo, lo soluciono por completo. A veces, estos problemas se repiten y paso otros 20 minutos y me molesto con la solución por segunda vez, lo que finalmente me hace querer resolverlo. Este es el caso ahora.

Descripción del problema:

Estoy codificando, en este caso, estaba creando un prototipo de un sitio web ASP.NET con VS10.

  • nuevo proyecto, sitio web ASP.NET: Web1 (crea solución)
  • agregar Proyecto, biblioteca C #, Lib1 (agrega a la solución)
  • Lib1: agregue Model.cs, View.cs, Presenter.cs, ... etc
  • Web1: agregue un DataList a Default.aspx, vincule datos a través de Lib1
  • Pruébalo, funciona

---> Ahora quiero ver que mi Lib1 funcione para un proyecto winforms, básicamente probándome a mí mismo que puedo escribir código de biblioteca que no se preocupa por la interfaz de usuario

  • agregar Proyecto, WinformsApp1 (agrega a la solución)
  • agregue un DataGridView a Form1, vincule datos a través de Lib1

Entonces sucedió lo más extraño (al menos para mí): al principio, agregar una referencia a Lib1 e implementar la interfaz IView en Form1 funciona bien, pero tan pronto como VS rellena automáticamente los stubs para IView, todo pasa a un estado como si yo no agregó la referencia a Lib1. Es decir, el compilador me dice que no conoce la definición de IView, y me recuerda amablemente que podría haberme olvidado de agregar una referencia, pero el truco es que está hablando del código que acaba de generar y que no habría sido poder sin esa referencia.

NOTA: Si nadie sabe exactamente qué es esto y me equivoco al decir que es un síntoma del síndrome del desarrollador solitario, trabajaré con el ejemplo nuevamente y publicaré el código (lo acabo de borrar).

preguntado el 16 de mayo de 11 a las 16:05

Entonces, ¿se puede compilar el código? -

No, básicamente me rendí e hice una copia de Lib1 para mi proyecto Winforms, que es una mala solución -

Vale la pena leerlo, ya que mencionas el espacio de nombres y el tipo de nomenclatura: blogs.msdn.com/b/ericlippert/archive/tags/namespaces -

Estoy empezando a sentir que debería dedicar un par de semanas a leer todas las publicaciones de ese tipo :) -

@Anthony, creo que lo lograste, si lo pones como la respuesta, lo marcaré. -

1 Respuestas

Parece que tiene un método en su interfaz que tiene el mismo nombre que el espacio de nombres, por lo que cuando completó la interfaz, el compilador ya no pudo diferenciar entre el espacio de nombres y el método.

contestado el 17 de mayo de 11 a las 00:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.