2016-12-16 6 views
-1

En Debug Mode, je peux obtenir avec succès le répertoire du chemin exécutable, et voici un lien de référence sur la façon dont est atteint:Impossible d'obtenir le chemin d'application de dossier en mode Release (.NET)

Obtaining Application Folder Path

Le problème est qu'aucune de ces méthodes sont efficaces dans Mode de libération. Il ne fait pas d'erreur, mais la ligne de code est complètement ignorée. Un exemple d'un extrait de code qui ne sera pas exécuter est:

Dim strDir as String = Environment.CurrentDirectory 

En mode débogage, l'exécute correctement ci-dessus (strDir contiendra le répertoire approprié). En mode release, ce qui précède ignore complètement l'exécution, laissant strDir comme Nothing ou vide. Des idées sur ce que je peux faire?

Merci!

+1

Lors du déploiement, vous n'êtes peut-être pas autorisé à lire/écrire des fichiers ou à créer des répertoires dans un emplacement relatif à l'emplacement d'installation de l'application. Ce code n'a aucune ressemblance avec celui du lien et 'Function()' est juste ... fantaisiste. Windows fournit plusieurs dossiers pour les données de l'application. – Plutonix

+0

Par défaut, vous pouvez le configurer pour que l'application de débogage s'exécute à partir d'un dossier autre que celui où se trouvent vos dossiers VS. Utilisez l'onglet Déboguer sous Projet -> Propriétés – Plutonix

+1

Il n'y a pas de code dans la publication qui ressemble à quelque chose lié à l'utilisation du "chemin du dossier d'application" ... Veuillez consulter le guide [MCVE] et modifier le code le titre. –

Répondre

0

Le mode de libération est différent du débogage dans mode de débogage. Il n'est pas aussi simple de parcourir le code ligne par ligne en raison de l'optimisation du code; certains chemins d'écoulement peuvent être différents.

Je vais le dire ... Il est très important de compiler fréquemment votre code en mode debug et release, ce que je n'ai pas fait. Il n'y avait vraiment aucun autre problème que le fait que j'ai d'une manière ou d'une autre rencontré un autre bug non pertinent en mode release, et j'ai essayé de parcourir le code. J'ai remarqué que lorsque j'ai essayé de franchir cette ligne:

Dim strDir as String = Environment.CurrentDirectory 

Il fait un bond passé la ligne et je ne pouvais pas observer la valeur. J'ai pensé à tort que c'était un problème. Mais ce que j'ai appris en mode release est que c'est normal. Je suis désolé de poster cette question, quelqu'un peut-il s'il vous plaît le fermer?

Merci à tous.