2011-04-05 18 views
5

Este es el error más extraño que he encontrado.El tipo o el nombre del espacio de nombres 'X' no existe en el espacio de nombres 'Y' - en el código generado por VS

Este proyecto web de MVC funcionaba bien hasta hoy. No ha sido trabajado por nadie en un par de semanas.

A pesar de que nada ha cambiado, simplemente ejecutando ahora se traduce en:

The type or namespace name 'ColourboxViewModel' does not exist in the namespace 'CMSModels.ViewModels' 

(x5)

The type or namespace name 'Colourbox' does not exist in the namespace 'CMSModels' (are you missing an assembly reference?) 

(x1)

Hay una referencia a CMSModels en el proyecto . Eliminar esta referencia me da unos 200 errores extra para cada clase en el espacio de nombres, así que sé que está funcionando, pero no para estos dos errores.

Esta es la línea de código generado el que los puntos de error a:

public class views_colorbox_index_aspx : System.Web.Mvc.ViewPage<IEnumerable<CMSModels.Colourbox>>, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler { 
... 
public class views_colorbox_content_ascx : System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourboxViewModel> { 

Intellisense es recoger la ubicación de ambos CMSModels.ColourBox y CMSModels.ViewModels.ColourboxViewModel.

Estoy completamente perplejo. Cualquier ayuda muy apreciada ya que estoy completamente perdido.


OK He encontrado el problema, pero no la solución.

La clase se define como

public class ColourBoxViewModel 

sin embargo, el código generado está buscando una clase de 'ColourboxViewModel'. Observe la letra minúscula B. ¿De dónde obtiene el código de autogen los nombres de las clases? La búsqueda en el proyecto no revela menciones con una letra minúscula b.

El problema es el mismo para la clase ColourBox.


Problema resuelto - y @ František Žiačik tenía razón. Había una carpeta que había sido excluida del proyecto (razón por la cual la búsqueda en todo el proyecto y dentro de las vistas en el estudio visual no encontró nada) que contenía la declaración de herencia tipada incorrectamente. La carpeta excluida se llamó ColorBox cuando fue creada originalmente por los subcontratistas. Esto fue copiado y renombrado como ColourBox por otro desarrollador del equipo que decidió, y cito, "deletrear todo correctamente". Dicho desarrollador ahora solo puede codificar con un hechizo Speak n '.

+2

Intente reconstruir la solución. – SLaks

+0

Esto podría ser un error ReSharper. Lo crucé un par de veces. Como dijo SLaks, trate de limpiar, reconstruir y construir su solución. Si esto no ayuda y está usando TFS, puede intentar cerrar su solución y obtener la última versión de su proyecto desde el control de soruce. – cordellcp3

+0

La reconstrucción produjo el mismo error. Usamos SVN para el control de versiones, sin embargo, obtener una nueva copia del proyecto del repositorio da como resultado el mismo problema. –

Respuesta

5

Así que aquí está mi suposición.

En su opinión content.ascx (o como se denomina) se ha declarado:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourboxViewModel>" %> 

en lugar de

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourBoxViewModel>" %> 
+5

Hmm ... ¿Puedes ayudarnos a aquellos de nosotros demasiado tontos como para ver la diferencia? –

+0

Actualización: No importa, lo veo. –

+0

Esto fue lo primero que pensé, pero puedo garantizar que todas las páginas y controles que heredan esta clase usan ColourBoxViewModel. –

5

tuve este error ayer, y me encontré con estas respuestas, pero en mi caso ellos no ayudaron En cambio, resultó que en mi cliente en las propiedades del proyecto, el marco de trabajo Target se estableció en .NET Framework 4 Client Profile. La solución fue cambiar esto a .NET 4 completo.Espero que esto pueda ayudar a alguien, porque el error en VS no es muy útil.

Cuestiones relacionadas