Sto scrivendo un .Net WinForms e cambio continuamente tra le configurazioni DEBUG e RELEASE e ho alcuni file per i quali ho bisogno di entrambe le configurazioni.Environment.CurrentDirectory vs System.IO.Directory.GetCurrentDirectory
Quello che stavo pensando di fare era di mettere i file in una directory comune nella cartella bin quindi sarebbe simile a questa:
MyProject/Bin/CommonFiles
MyProject/Bin/Debug
MyProject/Bin/Release
e stavo pensando su come accedere alle file utilizzando qualcosa sulla falsariga di:
System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory).FullName
la mia domanda è se questo è pericoloso, in quanto, da quello che ho letto, System.IO.Directory.GetCurrentDirectory
potrebbe cambiare a causa all'utente la selezione di una nuova directory corrente, per esempio, una finestra di dialogo file aperto.
Dovrei piuttosto usare qualcosa sulla falsariga di:
System.IO.Directory.GetParent(Environment.CurrentDirectory).FullName
O c'è un modo migliore per arrivare alla cartella /Bin
in modo da poter passare da lì o un generalmente accettato modo/posizione per archivi i file che il programma di solito ha bisogno di raggiungere e il modo per fare riferimento più facilmente (forse qualcosa che è fatto per funzionare con qualsiasi tipo di app e non solo WinForms)?
La directory bin è un dettaglio di implementazione del sistema di VS costruire . Poiché è improbabile che spedirai il tuo progetto con codice sorgente al cliente e non sarai in grado di salvare i file in c: \ program files \ bin, questa non è una buona pratica. Utilizzare% appdata% per i file scrivibili, la directory EXE o% programdata% per i file di sola lettura. –
Grazie a @HansPassant ... Come ho detto a Christian di seguito, sono un po 'titubante a copiarli costantemente nella cartella appdata sul computer di ciascun utente, poiché molti utenti dovranno utilizzare questo programma una sola volta e sarà su un'unità condivisa nella mia organizzazione a questo punto ... qualche pensiero a riguardo ?? –