Ich versuche, den Pfad einer Bilddatei abzurufen, die ich im Solution Explorer in Visual Studio hinzugefügt habe, aber ich konnte den relativen Pfad dieses Bildes nicht ermitteln. H ist die Dateistruktur meines Projekts:
/ BulutDepoProject / FolderIcon Folder.ico Main.cs
Ich kann das Bild so bekommen:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
Aber ich sollte in der Lage sein, es mit so etwas wie:
"~\\FolderIcon\\Folder.ico"
Ich glaube, ich kenne die genaue Syntax nicht, daher kann ich das Bild nicht abrufen. :(
c#
visual-studio
Tolga Evcimen
quelle
quelle
Antworten:
Wenn Sie eine externe Datei verwenden möchten, gibt es sicherlich eine Möglichkeit, sie in einem Ordner in Ihrem Projekt abzulegen, die jedoch nicht so gültig ist wie das Abrufen aus Ressourcen. In einem normalen Visual Studio-Projekt sollten Sie eine
Resources.resx
Datei unter demProperties
Abschnitt haben. Andernfalls können Sie problemlos Ihre eigeneResource.resx
Datei hinzufügen . Und fügen Sie jede Art von Datei in ihm können Sie den Lösungsweg erreichen für das Hinzufügen von Ressourcen - Dateien zu einem Projekt hier .Nachdem Sie Ressourcendateien in Ihrem Projekt haben, ist das Aufrufen wie folgt einfach:
var myIcon = Resources.MyIconFile;
Natürlich sollten Sie die
using Properties
Aussage wie folgt hinzufügen :using <namespace>.Properties;
quelle
readonly
sowieso sein wird, also ....Ich bin etwas spät dran und nicht sicher, ob Sie danach suchen, aber ich dachte, ich würde es hinzufügen, nur für den Fall, dass jemand anderes es nützlich findet.
Angenommen, dies ist Ihre Dateistruktur:
Sie müssen Ihren Pfad relativ zur
Main.exe
Datei schreiben . Also, wollen Sie zugreifenFolder.ico
, in derMain.cs
Sie verwenden können:String path = "..\\FolderIcon\\Folder.ico"
Das schien bei mir zu funktionieren!
quelle
string path = ".\\FileName.txt"
<Project>/Debug
daher für die VS Debug-Umgebung funktioniert. Aber wenn Sie die IDE verlassen ... oder die EXE von einem anderen Arbeitsverzeichnis aus ausführen, wird sie sicherlich kaputt gehen.Lassen Sie das "~ \" weg:
var path = @"FolderIcon\Folder.ico";
~\
bedeutet nichts in Bezug auf das Dateisystem. Der einzige Ort, an dem ich gesehen habe, dass er korrekt verwendet wird, ist eine Webanwendung, in der ASP.NET die Tilde durch den absoluten Pfad zum Stammverzeichnis der Anwendung ersetzt.Sie können normalerweise davon ausgehen, dass die Pfade relativ zu dem Ordner sind, in dem sich die EXE befindet. Stellen Sie außerdem sicher, dass das Bild auf der Registerkarte "Eigenschaften" in Visual Studio als "Inhalt" und "Kopieren, wenn neuer" / "Immer kopieren" angegeben ist.
quelle
Ich bin auch auf das gleiche Problem gestoßen und konnte es durchstehen. Lassen Sie mich die Schritte erklären, die ich angewendet habe. Ich werde es gemäß Ihrem Szenario erklären.
Nach meiner Methode müssen wir die Klassen 'Path' und 'Assembly' verwenden, um den relativen Pfad zu erhalten.
Importieren Sie also zuerst System.IO und System.Reflection, indem Sie Anweisungen verwenden.
Geben Sie dann die unten angegebene Codezeile ein.
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
Tatsächlich speichert die oben angegebene Zeile den Pfad des Ausgabeverzeichnisses Ihres Projekts (hier bezieht sich das Ausgabeverzeichnis auf den Debug- Ordner Ihres Projekts).
Kopieren Sie nun Ihr FolderIcon-Verzeichnis in den Debug-Ordner. Geben Sie dann die unten angegebene Zeile ein.
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
Jetzt enthält diese 'iconPath'-Variable den gesamten Pfad Ihres Folder.ico. Sie müssen es lediglich in einer Zeichenfolgenvariablen speichern. Verwenden Sie dazu die folgende Codezeile.
string icon_path = new Uri(iconPath ).LocalPath;
Jetzt können Sie diese Zeichenfolgenvariable icon_path als relativen Pfad zum Symbol verwenden.
Vielen Dank.
quelle
file:
vor dem WegAssembly.GetExecutingAssembly().Location
wenn Sie sicher mit einer Datei (EXE / DLL) , die sich IhnenIch denke, dies zu verwenden wird am einfachsten sein
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
oder dieser Code funktioniert auf jedem Computer, auf dem sich Ihr Ordner in Ihrem Stammprojekt befindet, wenn Sie ihn ändern möchten. Ändern Sie einfach diesen Abschnitt @ ".. \"
public static string bingPathToAppDir(string localPath) { string currentDir = Environment.CurrentDirectory; DirectoryInfo directory = new DirectoryInfo( Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath))); return directory.ToString(); }
quelle
Klicken Sie in Visual Studio im Projektmappen-Explorer auf die Datei "Folder.ico". Dann sehen Sie den Eigenschaftenbereich. Ändern Sie das Verhalten "In Ausgabeverzeichnis kopieren" in "Bei neuerer Version kopieren". Dadurch kopiert Visual Studio die Datei in das Ausgabefachverzeichnis.
Um den Dateipfad über den relativen Pfad abzurufen, geben Sie einfach Folgendes ein:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
Hoffe das hat geholfen.
quelle