WPF: il nome non esiste nello spazio dei nomi

Sto costruendo un’applicazione C # / WPF usando VS2013 e ho la seguente definizione di class (nello stesso assembly dell’applicazione in esecuzione):

namespace MyNamespace { public class MyKey { public MyKey() { } public string name = ""; } } 

In MainWindow.xaml ho:

     ... 

VS continua a segnalarlo

Il nome “MyKey” non esiste nello spazio dei nomi “clr-namespace: MyNamespace”

Qualche idea?

PS Ho provato le seguenti soluzioni (dalle domande già pubblicate nello stackoverflow) ma nessuna ha funzionato:

  1. Spostare la class in un diverso spazio dei nomi, quindi utilizzare il nuovo spazio dei nomi nel riferimento xaml
  2. Riavviare VS e pulire / ribuild la soluzione
  3. pulire la soluzione, quindi rinominare la cartella e ribuild la soluzione
  4. cambiando il riferimento a:

xmlns: locale = “CLR-namespace: MyNamespace; assemblaggio =”

Modifica: Informazioni aggiuntive: Architettura di destinazione: X64, framework di destinazione: .Net 4.5

Una soluzione comune a questo bug VS noto che non è stato specificato come provato è la modifica della piattaforma di destinazione build.

  1. Se la tua attuale piattaforma di destinazione build è x64, passa a x86. Se è attualmente x86, passare a x64.

  2. Pulisci e costruisci la soluzione per la nuova piattaforma di destinazione.

  3. Ritornare alla piattaforma di destinazione desiderata e ribuild.

Ho avuto lo stesso problema in edizione Express VS2012. Risolto il problema usando il comando

“WDExpress / ResetSettings” nel prompt dei comandi vs2012.

https://stackoverflow.com/a/33706647/4855197

Una ansible soluzione è rimuovendo tutti i file .dll dalla cartella Debug e Release .

Perché a volte quando si fa riferimento al progetto si riferisce alle DLL predefinite, anche se si esegue il progetto in modalità di debug.

Rimuovi tutti i file dalla cartella di debug e release e ricostruisci il progetto, ora aggiungi il riferimento di questo progetto nel punto desiderato. Ha funzionato perfettamente bene sulla mia estremità.

Ho avuto un problema simile. Ciò che per me è stato risolto è stato il cambio delle proprietà di costruzione del progetto, che è stato aggiunto come riferimento. Risultò che il “Target della piattaforma” era stato cambiato in passato. Impostandolo su “Qualsiasi CPU” e ricostruendolo ha risolto l’errore.

Esecuzione di VS Enterprise 2017 versione 15.6.2 Targeting .Net 4.6.1

Ho avuto lo stesso problema con una pagina xaml UserControl in cui nelle sue risorse stava cercando di fare riferimento a ValueConverter. Lo spazio dei nomi era corretto, l’intellisense lo abbandonava anche per te, ma il progettista non caricava la pagina e il codice non veniva compilato. Ho persino provato a spostare uno dei convertitori di valori dal file e dallo spazio dei nomi in questione e spostarlo nel code-behind. VS stava diventando così spaventato che stava sostenendo che il metodo InitializeComponent () nel costruttore code-behind era inesistente.

Quello che penso finalmente lo ha risolto è stato quando ho capito che alla class ValueConverter mancava l’attributo leader come questo:

[ValueConversion (typeof (stringa), typeof (decimale))]

Una volta aggiunta questa linea, ho risolto e compilato una soluzione rapida, quindi ho compilato e lavorato. Quindi improvvisamente xaml potrebbe vedere tutte le regole di validazione e i convertitori di valori in quel file. E ora mi sono reso conto che anche gli altri 3 convertitori di valori in quel file non avevano un attributo ValueConversion su di essi, eppure il codice è ancora compilato ora. Forse qualcosa sui tipi in arrivo in quel primo convertitore era vago.

È ancora un po ‘un mistero. So che dovrei ritirare il mio cambiamento e vedere se l’errore è riproducibile, ma dopo aver combattuto quel codice per quasi tutto il giorno sono stufo di guardarlo. Era un vecchio progetto Prism che non era in esecuzione e l’ho aggiornato alle librerie Prism 7.0. Ho anche provato a ripristinare tutte le impostazioni del processore su “Any CPU”. Si lamentava del fatto che il bootstrapper fosse obsoleto, ma lo ignoravo. Avevo riavviato e pulito tutto più volte. Ho persino cancellato la cartella .vs. Probabilmente avrei dovuto provare prima a cancellare definitivamente le cartelle obj e bin: questa era l’unica cosa che non avevo fatto.

Questo non era il mio progetto. Normalmente costruisco sempre convertitori di valore uno su un file con il file chiamato lo stesso. Non penserei che sarebbe importante, ma l’intero errore era un po ‘pazzo in primo luogo.