106 votes

Comment obtenir le chemin relatif d'un fichier dans Visual Studio ?

J'essaie d'obtenir le chemin d'un fichier image que j'ai ajouté dans l'explorateur de solutions de Visual Studio, mais je n'ai pas pu obtenir le chemin relatif de cette image. H est la structure des fichiers de mon projet :

/BulutDepoProject
    /FolderIcon
        Folder.ico
        Main.cs

Je peux obtenir l'image comme ceci :

"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico" 

Mais je devrais être capable de l'obtenir avec quelque chose comme :

"~\\FolderIcon\\Folder.ico"

Je suppose que je ne connais pas la syntaxe exacte et que je ne peux pas récupérer l'image.

64voto

Tolga Evcimen Points 1476

Lorsque vous souhaitez utiliser n'importe quel type de fichier externe, il existe certainement un moyen de les placer dans un dossier au sein de votre projet, mais pas aussi valable que de les obtenir à partir des ressources. Dans un projet Visual Studio ordinaire, vous devriez avoir un dossier Resources.resx sous l'onglet Properties sinon, vous pouvez facilement ajouter votre propre Resource.resx dossier. Et ajoutez-y n'importe quel type de fichier, vous pouvez accéder au guide pour ajouter des fichiers de ressources à votre projet. aquí .

Une fois que vous avez des fichiers de ressources dans votre projet, les appeler est facile comme ceci :

var myIcon = Resources.MyIconFile;

Bien sûr, vous devez ajouter le using Properties une déclaration comme celle-ci :

using <namespace>.Properties;

48voto

AdamInTheOculus Points 543

Je suis un peu en retard, et je ne suis pas sûr que ce soit ce que vous recherchez, mais j'ai pensé l'ajouter au cas où quelqu'un d'autre le trouverait utile.

Supposons que ceci soit la structure de votre fichier :

/BulutDepoProject
    /bin
        Main.exe
    /FolderIcon
        Folder.ico
        Main.cs

Vous devez écrire votre chemin relatif au Main.exe fichier. Ainsi, vous voulez accéder à Folder.ico dans votre Main.cs que vous pouvez utiliser :

String path = "..\\FolderIcon\\Folder.ico"

Cela a semblé fonctionner pour moi !

33voto

David Lively Points 16026

Oubliez le "~" :

var path = @"FolderIcon\Folder.ico";

~\ ne signifie rien en termes de système de fichiers. Le seul endroit où je l'ai vu utilisé correctement est dans une application web, où ASP.NET remplace le tilde par le chemin absolu vers la racine de l'application.

Vous pouvez généralement supposer que les chemins sont relatifs au dossier où se trouve l'EXE. Assurez-vous également que l'image est spécifiée comme "contenu" et "copier si plus récent"/"copier toujours" dans l'onglet propriétés de Visual Studio.

19voto

GeorgeT Points 181

J'ai également rencontré le même problème et j'ai réussi à le faire passer. Laissez-moi donc vous expliquer les étapes que j'ai appliquées. Je vais l'expliquer en fonction de votre scénario.

Selon ma méthode, nous devons utiliser la classe 'Path' et la classe 'Assembly' afin d'obtenir le chemin relatif.

Commencez par importer System.IO et System.Reflection dans les instructions using.

Puis tapez la ligne de code ci-dessous.

        var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);

En fait, la ligne ci-dessus stocke le chemin du répertoire de sortie de votre projet (ici, le répertoire de sortie se réfère à l'arborescence du projet). Déboguer de votre projet).

Maintenant, copiez votre répertoire FolderIcon dans le dossier Debug. Puis tapez la ligne ci-dessous.

var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");

Cette variable "iconPath" contient le chemin d'accès complet de votre fichier Folder.ico. Tout ce que vous avez à faire est de le stocker dans une variable de type chaîne. Utilisez la ligne de code ci-dessous pour cela.

string icon_path = new Uri(iconPath ).LocalPath;

Vous pouvez maintenant utiliser cette variable chaîne icon_path comme chemin relatif vers l'icône.

Merci.

8voto

Marcin Points 139

Dans Visual Studio, veuillez cliquer sur le fichier 'Folder.ico' dans le volet de l'explorateur de solutions. Vous verrez alors le volet Propriétés. Changez le comportement 'Copier dans le répertoire de sortie' en 'Copier si plus récent'. Cela permettra à Visual Studio de copier le fichier dans le répertoire de sortie.

Maintenant, pour obtenir le chemin du fichier en utilisant le chemin relatif, il suffit de taper :

string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";

J'espère que ça vous a aidé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X