2009-06-05 14 views
16

Ho copiato tre classi in un altro progetto WPF e quindi hanno cambiato i loro spazi dei nomi.Dopo aver modificato lo spazio dei nomi nei file UserControl, ... i file g.cs ricevono errori

Ora quando eseguo il progetto, ottengo gli errori nei file ".g.cs" che dicono che lo spazio dei nomi non è corretto. Io cambio questo spazio dei nomi, ma quando compilo ed eseguo di nuovo, i file ".g.cs" vengono rigenerati e sovrascritti con la vecchia versione dello spazio dei nomi e ottengo nuovamente l'errore.

Quali sono i file e come posso farli essere rigenerano dai attuali file al posto di qualche cache che la sua, ovviamente tenendo da qualche parte?

Ho eliminato le directory \ bin e \ obj e ho ricostruito, ma ottengo ancora gli errori.

risposta

33

Il file .g.cs viene generato dal file .xaml. Devi modificare l'attributo x: class = nel tuo file .xaml in modo che corrisponda al nuovo nome della classe qualificata nello spazio dei nomi; quindi il file .g.cs verrà generato correttamente alla successiva compilazione. (Non modificare manualmente il file .g.cs - vi vanificare solo a te stesso.)

Ad esempio, se in precedenza avuto questo nella vostra cs:

namespace Foo { 
    class Bar { ... 

e questo nella vostra XAML:

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

E poi hai cambiato lo spazio dei nomi:

namespace Baz { 
    class Bar { ... 

allora si avrebbe bisogno di cambiare il vostro XAML file per:

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

era proprio questo: bastava modificare le voci x: class = e tutto andava bene, grazie! –

1

Hai aggiornato lo spazio dei nomi della classe nell'attributo x:Class su UserControl anche nell'XAML?

In caso contrario, hai provato a ricostruire il progetto?

9

vedo questo è un vecchio thread, ma dal momento che gli utenti ancora occasionalmente incorrere in questo problema, ho pensato di buttarmi in un'altra possibile causa. Se avete xmlns: xx namespaces nel vostro xaml che avete trascurato di aggiornare quando si cambia uno spazio dei nomi, anche questo causerà un'istruzione using invalid nel file g.cs.

+0

+1 Questa è stata la causa per me. Il 'xmlns: local =" clr-namespace: Some.App.Namespace "' generato automaticamente non era corretto e puntava allo spazio dei nomi errato. – finlaybob

5

Ho trovato un altro modo per risolvere questo eliminando la cartella 'obj' e ricostruendo.

+0

Ho avuto tutto a posto localmente e in mancanza sul server di build - ho dovuto accedere al server di build ed eliminare la cartella obj ... –

+0

Grazie, ha lavorato per me – Artiom

2

avevo definito scorciatoie namespace XML nei miei AssemblyInfo.cs

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

dove il vecchio spazio dei nomi era ancora presente. La ricerca attraverso tutti i miei file * .xaml ovviamente non ha aiutato ...

Dopo aver corretto le scorciatoie, l'errore è andato via immediatamente.

Problemi correlati