2011-06-24 4 views
4

J'ai ajouté un dossier avec un tas d'images dans mon projet vs2010. Je veux faire référence à ce dossier via le code. Depuis le prog final peut être déployé dans un emplacement différent chemin absolu ne fera pas!visual studio 2010 comment référencer un dossier dans un projet?

Quelle est la méthode standard pour obtenir le chemin relatif des dossiers? Je suis assez nouveau à ce sujet, donc désolé si je demande quelque chose de trop évident! Merci.

Répondre

2

Vous pouvez ajouter des images au fichier de ressources, de sorte que vous puissiez travailler directement avec une image sans écrire de code pour trouver le fichier.

Quoi qu'il en soit, vous pouvez obtenir le chemin d'application:

string appFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 

Et vous pouvez utiliser des méthodes de Path classe, comme Path.Combine de se référer au dossier.

+0

le point est que l'utilisateur de l'application doit être en mesure d'ajouter de nouvelles images dans le dossier « Images » dans le dossier de l'application manuellement. –

+0

La chaîne retournée par '.CodeBase' commence par' 'file: \" ', ce qui n'est pas souhaitable. Vous devriez utiliser '.Location' à la place, qui est le chemin d'accès pur. –

0

Si ces images sont par rapport à votre exécutable, vous pouvez utiliser argv [0] de main() (si elle est la ligne de commande), ou même mieux suivre ce que MSDN est advicing:

Par convention , argv [0] est la commande avec laquelle le programme est appelé. Cependant, il est possible de lancer un processus utilisant CreateProcess et si vous utilisez la première et la deuxième arguments (lpApplicationName et lpCommandLine), argv [0] ne peut pas être le nom de l'exécutable ; utilisez GetModuleFileName pour récupérer le nom de l'exécutable et son chemin d'accès complet.

+0

Je travaille sur une application wpf ... –

+0

Je suppose que vous pouvez toujours accéder à cette information, mais à partir de .NET (je ne suis pas sûr maintenant comment - mais tout ce qui vous donne les arguments de ligne de commande, serait proche d'un fonction qui vous donne le nom du processus) ... En fait, il a été posté ci-dessous - juste vu - le "AI W" post. – malkia

1

Ressources est une bonne idée. Une alternative consiste à écrire l'emplacement du dossier installé de l'application dans le registre lorsque l'application est installée. OU faire quelque chose comme

string dir = System.IO.Path.GetDirectoryName(Application.ExecutablePath); 
+0

cela semble être une bonne idée, mais je travaille sur vb.net dans wpf et ExecutablePath n'existe pas dans l'application –

Questions connexes