2010-11-17 14 views
8

Anteriormente tenía una subcarpeta en mi proyecto de aplicación WPF llamada "Controles". Contenía un control de usuario WPF. Decidí mover ese control de usuario a mi carpeta "Vistas". Como la carpeta original estaba vacía, decidí eliminarla del proyecto.WPF: g.cs File Pain

Como se eliminan el control de usuario y la carpeta, recibo un error de compilación porque el control de usuario usó el espacio de nombres ProjectName.Folder y ahora nada hace referencia a él. MainWindow.g.cs es lo que hace referencia al ProjectName.Controls en una declaración de uso.

Sé que * .g.cs son generados por VS y no se pueden editar porque se sobrescribirán. ¿Qué debo hacer para no permitir que ese espacio de nombres se escriba en el archivo g.cs? Intenté limpiar mi solución/proyecto y reconstruir, pero nada funcionó.

Respuesta

12

Tenía una referencia local al espacio de nombres de controles en mi código Xaml (MainWindow.xaml). Eliminé la referencia, limpié el proyecto y produje una compilación exitosa.

+1

que tenían el mismo problema, pero mucho más profundo. Tuve uso del viejo espacio de nombres en ResourceDictionary referenciado. – chopikadze

+0

gracias hombre. tuve los mismos problemas – Naresh

+0

Eres el rey @chopikadze, ese fue exactamente mi problema. He buscado durante horas sin tener suerte hasta que gané con tu pequeño comentario ... –

1

También he tenido problemas con los archivos g.cs en mis proyectos. Dado que se generan automáticamente, tiendo a simplemente eliminar el archivo manualmente y reconstruir.

+0

futura referencia: puede eliminar archivos "caducados" al limpiar un proyecto o solución. – jlafay

+0

@jlafay, gracias. A veces me olvido de eso debido a problemas que tengo con Clean en la solución de mi proyecto actual. – Jason

5

En el archivo de control de usuario,

En su ClassName.xaml, debe cambiar el espacio de nombres como se muestra a continuación

<UserControl 
    x:Class="YourOldNamespace.ClassName" 
    ... 
    ... 
/> 

Y en sus ClassName.xaml.cs, debe cambiar el espacio de nombres como se muestra debajo de

using System; 
using System.Windows; 

namespace YourOldNamespace{ 

    public class ClassName{ .... 

} 

En ambos archivos, debe reemplazar YourOldNamespace por un nuevo espacio de nombre según sea necesario.

+0

Lo siento, olvidé incluir esa información en mi pregunta. Cambié los espacios de nombres de forma apropiada en los controles de los archivos xaml y cs. El problema era que mi MainWindow.xaml hacía referencia al viejo namespace y es por eso que MainWindow.g.cs tenía una sentencia de uso generado para el antiguo espacio de nombres. Corregí el xaml y funcionó bien. – jlafay

1

No olvide también que debe verificar si la propiedad Build Action cuando hace clic en el archivo XAML afectado está configurada en PAGE (en lugar de recurso). Esto es útil para saber cuándo copia un XAML de otro proyecto usando copiar y pegar para ahorrar tiempo.

1

Consulte también App.xaml y todos sus diccionarios de recursos. Por alguna razón, la opción reemplazar archivos/"Solución completa" de VS 2012 no encontró la antigua referencia del espacio de nombres en App.xaml, tuvo que cambiarla manualmente. Me lo arregló

0

No se olvide de cambiar el archivo Generic.xaml también,

<ResourceDictionary 
        xmlns:local="clr-namespace:MyOldNameSpace"> 
</ResourceDictionary>