ho costruito un programma di installazione per la mia app, e tutta la mia dll e file di contenuto sono sempre correttamente copiato nella directory C:\Program Files\MyCompany\MyApp
. Quando eseguo la mia app da Visual Studio, tutto funziona alla grande. Quando eseguo la versione installata della mia app, tuttavia, ottengo uno DirectoryNotFoundException
. Il problema sembra essere con Environment.CurrentDirectory
.
mi aspettavo di essere Environment.CurrentDirectory
...
"C:\\Program Files\\MyCompany\\MyApp"
... ma era in realtà ...
"C:\\Documents and Settings\\DanThMan"
cosa sta succedendo qui? Come lo risolvo?
Grazie.
EDIT:
Va bene, hmm. Questo problema si verifica solo se eseguo il collegamento del menu Start. Se eseguo direttamente MyApp.exe, è tutto a posto.
EDIT 2:
penso che ho ottenuto fino in fondo questo momento. Nel mio programma di installazione (che è un SetupProject di Visual Studio), il collegamento del menu Start ha una proprietà denominata WorkingFolder
, che "Specifica la cartella in cui verrà installata l'applicazione di destinazione per il collegamento". Avevo accidentalmente impostato WorkingFolder
in "MyCompany". Dovrebbe essere "Cartella dell'applicazione". Ora che ho impostato correttamente, Environment.CurrentDirectory
sta funzionando di nuovo come previsto. Grazie per tutto il vostro aiuto.
EDIT 3:
Tuttavia, leggendo le avvertenze di seguito, ho deciso di andare con il seguente come una sostituzione per Environment.CurrentDirectory
:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
Sono andato con la seconda soluzione perché la prima non funzionerà con un'app WPF (a meno che non si includa l'assembly per Windows Form). – devuxer