2012-03-12 17 views
22

Devo memorizzare alcune stringhe nel file Impostazioni del mio progetto. Tuttavia, non sono in grado di accedere al file delle impostazioni per memorizzare le stringhe.Le proprietà non esistono nel contesto corrente

Ho sicuramente accesso al file delle proprietà in un progetto precedente senza problemi di memorizzazione dei valori.

Properties.Settings.Default.test = ...
MyApp.Properties.Settings.Default.test = ...

Ma qui, nel progetto attuale, sto costantemente guidato pazza ottenendo il Properties does not exist in the current context C'è qualche impostazione o qualcosa che è cambiato a causa del quale Properties non appare in Intellisense?

+0

Può essere controllato il file di codice generazione dei vostri .settings? –

+0

@Adriano: Proprietà del file settings.settings. Generatore di codice: 'SettingsSingleFileGenerator' e il file settings.cs viene generato correttamente. – Cipher

risposta

33

Ho avuto questo stesso problema quando avevo copiato e incollato il codice per i plug-in. Risulta che avevo accidentalmente lasciato il namespace dell'altro progetto sul posto quando l'ho copiato. Cambiando lo spazio dei nomi al progetto appropriato, sono stato in grado di utilizzare le proprietà.

+4

Un modo semplice per vedere tutti gli spazi dei nomi nel progetto è aprire la Vista Classe in Visual Studio. Apri un file nel vecchio spazio dei nomi e rifatta il nome. – downeyt

4

Assicurati che il tuo progetto abbia un file di impostazioni andando alle proprietà del progetto e facendo clic sulla scheda Impostazioni. Se non ci sono file di impostazioni, ti dirà questo e ti fornirà l'opzione per crearne uno.

+0

Sì, ha il file delle impostazioni e il file settings.cs viene generato correttamente. Controllato le proprietà del file 'Settings.settings' e il generatore di codice è uguale a' SettingsSingleFileGenerator' – Cipher

+0

E il tuo progetto riconosce il file delle impostazioni quando vai alle proprietà del progetto -> Impostazioni? –

+0

Sì, lo fa.Posso inserire manualmente le stringhe qui, ma queste non sono accessibili all'interno del mio codice MainWindow.xaml.cs – Cipher

14

in fase di compilazione, Visual Studio genera una classe C# che consente l'accesso alle impostazioni utente e dell'applicazione. la classe generata è definita nel namespace predefinito specificato nelle impostazioni del progetto .

  • potrebbe essere necessario precedere qualsiasi accesso allo spazio dei nomi Proprietà con lo spazio dei nomi predefinito definito nelle impostazioni del progetto;
  • oppure è possibile modificare lo spazio dei nomi predefinito: andare alle impostazioni del progetto, scheda dell'applicazione e modificare lo spazio dei nomi predefinito del progetto.
+1

Questo problema completamente risolto, ho appena dovuto cambiare lo spazio dei nomi predefinito per abbinare quello che era nella classe in cui stavo consumando il codice. Grazie! –

1

Ho appena avuto lo stesso problema. Ma il problema si è verificato quando ho aggiunto una nuova impostazione a un file di impostazioni già definito (creato molto tempo fa). In qualche modo aggiungendo un'impostazione al file delle impostazioni, Visual Studio ha modificato lo spazio dei nomi dell'impostazione nello spazio dei nomi predefinito del progetto (che era cambiato rispetto alle impostazioni modificate l'ultima volta).

Quindi, poiché il modificatore di accesso alle impostazioni è stato impostato su Interno, e la classe sta tentando di accedere alle impostazioni ancora nel vecchio spazio dei nomi precedente (comunque nello stesso progetto), le impostazioni sono diventate invisibili da quella classe.

4

Nel mio caso, ho fatto riferimento a una risorsa che ha un modificatore di accesso interno/pubblico. Ho cambiato il suo modificatore di accesso in Pubblico e il problema era sparito.

+0

Anche questo era il mio problema, inoltre avevo bisogno di dichiarare la variabile di proprietà al di fuori del metodo Property prima che il set accessor lo riconoscesse. – Doreen

0

Nel mio caso, ho fatto riferimento a un progetto (A) da un altro (B). Entrambi nella stessa soluzione.

  • A ha una classe pubblica (AClass) con un metodo statico pubblico. (AMethod)
  • Volevo testare i risultati di questo AClass.AMethod (...)
  • Visual Studio "colorato" AClass nella chiamata AClass.AMethod (...)
  • e ho potuto fare clic destro AClass e "Vai a definizione",

    • che mi ha portato direttamente alla fonte, se ho aggiunto fatto riferimento al progetto "Soluzione"
    • O per la DLL "outline" se ho aggiunto riferimento alla DLL creato da costruzione progetto "a"
  • Ma quando ho cercato di costruire progetto "B" ho avuto l'errore "AClass non esiste nel contesto attuale"

  • Si scopre Progetto B si indirizzava a 4,5 e Project A si indirizzava 4.5.2
  • Questa risposta ha aiutato: https://stackoverflow.com/a/15556365/1175496
2

ho avuto questo errore quando ho accidentalmente avuto lo spazio dei nomi sbagliato, come lo spazio dei nomi predefinito nelle proprietà del progetto .

Per scegliere lo spazio dei nomi di default, fare clic destro sul progetto nella ExplorerProperties- Soluzione> Applicazioni tabulazioni> namespace predefinito e verificare che corrisponda lo spazio dei nomi dei file Cs:

[...] 
using System.Text; 
using System.Threading; 

    namespace Correct.Namespace //<-- should match Default namespace field 
    { 
     static class Program 
     { 
      [...] 
0

assicurarsi la possibilità di vedi le tue impostazioni nel file Settings.Designer.cs. In caso contrario, prova a eliminare e reindirizzare l'impostazione. Per qualche ragione, a volte, il codice generato automaticamente dallo strumento non include le tue impostazioni. In tal caso, l'impostazione non sarà disponibile in intellisense.

+1

Si prega di non pubblicare risposte identiche a più domande. Pubblica una buona risposta, quindi vota/contrassegna per chiudere le altre domande come duplicati. Se la domanda non è un duplicato, aggiungi le tue risposte alla domanda – kleopatra

2

Primo, provare a ricreare il progetto da zero, se si tratta dell'ambiente di test. Questo passaggio ricrea correttamente lo spazio dei nomi predefinito. È possibile saltare questo passaggio se si è sicuri delle configurazioni del namespace.

Secondo, se si ottengono ancora Proprietà non riconosciute come nel mio esempio dove sto cercando di ottenere dati da sqlCon.

string connectionString = Properties.Settings.Default.sqlCon; 

enter image description here

andare a Progetto ->EventsandDelegates Proprietà come mostrato nella foto qui sotto. Assicurati di creare il file delle impostazioni di default.

enter image description here

Non appena si creano le impostazioni predefinite sotto le impostazioni delle applicazioni, nel mio caso si tratta di variabili di connessione SQL. L'errore Properties andrà via.

enter image description here

Problemi correlati