2009-06-05 19 views
16

Copié tres clases desde otro proyecto de WPF y luego cambié sus espacios de nombres.Después de cambiar el espacio de nombres en los archivos UserControl, ... los archivos g.cs obtienen errores

Ahora cuando ejecuto el proyecto, recibo errores en los archivos ".g.cs" que dicen que el espacio de nombres es incorrecto. Cambio este espacio de nombres pero cuando compilo y vuelvo a ejecutar, los archivos ".g.cs" se regeneran y se sobrescriben con la versión anterior del espacio de nombres y recibo el error nuevamente.

¿Cuáles son los archivos y ¿cómo puedo hacer que se regeneran a partir de los actuales archivos en lugar de algún caché que es obviamente la celebración de algún lugar?

Eliminé los directorios \ bin y \ obj y los reconstruí pero sigo recibiendo los errores.

Respuesta

33

El archivo .g.cs se genera a partir del archivo .xaml. Necesita cambiar el atributo x: class = en su archivo .xaml para que coincida con el nuevo nombre de clase calificado de espacio de nombres; entonces los .g.cs se generarán correctamente en la siguiente compilación. (No cambie manualmente el archivo .g.cs - sólo va a frustrar a sí mismo.)

Por ejemplo, si usted tenía previamente esta en sus .cs:

namespace Foo { 
    class Bar { ... 

y esto a su .xaml:

<UserControl x:Class="Foo.Bar" ... 

Y entonces ha cambiado su espacio de nombres:

namespace Baz { 
    class Bar { ... 

entonces usted tendría que cambiar su .xaml presentar a:

<UserControl x:Class="Baz.Bar" ... 
+1

eso fue todo: solo necesitaba reducir la x: class = entradas y todo estaba bien de nuevo, gracias! –

1

¿Ha actualizado también el espacio de nombres de la clase en el atributo x:Class en UserControl en el XAML?

En su defecto, ¿ha intentado reconstruir el proyecto?

9

Veo esto es un hilo viejo, pero ya que los usuarios todavía de vez en cuando se encuentra con este problema, pensé que había que tirar en otra posible causa. Si tiene xmlns: espacios de nombres xx en su xaml que no actualizó al cambiar un espacio de nombres, esto también causará una instrucción de uso no válida en el archivo g.cs.

+0

+1 Esta fue la causa para mí. El 'xmlns: local =" clr-namespace: Some.App.Namespace "' generado automáticamente era incorrecto y apuntaba al espacio de nombres incorrecto. – finlaybob

5

Encontré otra manera de solucionar esto eliminando la carpeta 'obj' y reconstruyendo.

+0

Lo tenía todo a nivel local y fallaba en el servidor de compilación: tuve que iniciar sesión en el servidor de compilación y eliminar la carpeta obj ... –

+0

Gracias, trabajado para mí – Artiom

2

había definido atajos de espacio de nombres XML en mis AssemblyInfo.cs

[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")] 

donde el antiguo espacio de nombres todavía estaba presente. La búsqueda a través de todos mis archivos * .xaml obviamente no ayudó ...

Después de solucionar los accesos directos, el error desapareció inmediatamente.

Cuestiones relacionadas