Próbuję uzyskać ścieżkę do pliku obrazu, który dodałem w eksploratorze rozwiązań w programie Visual Studio, ale nie mogłem uzyskać względnej ścieżki tego obrazu. H to struktura plików mojego projektu:
/ BulutDepoProject / FolderIcon Folder.ico Main.cs
Mogę uzyskać taki obraz:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
Ale powinienem być w stanie uzyskać to za pomocą czegoś takiego:
"~\\FolderIcon\\Folder.ico"
Chyba nie znam dokładnej składni, więc nie mogę pobrać obrazu. :(
c#
visual-studio
Tolga Evcimen
źródło
źródło
Odpowiedzi:
W przypadku, gdy chcesz użyć dowolnego rodzaju pliku zewnętrznego, z pewnością istnieje sposób na umieszczenie go w folderze w projekcie, ale nie tak ważny, jak pobranie ich z zasobów. W zwykłym projekcie programu Visual Studio powinieneś mieć
Resources.resx
plik wProperties
sekcji, jeśli nie, możesz łatwo dodać własnyResource.resx
plik. I dodaj do niego dowolny rodzaj pliku, możesz przejść do przewodnika dodawania plików zasobów do projektu tutaj .Po umieszczeniu plików zasobów w projekcie wywołanie ich jest proste:
var myIcon = Resources.MyIconFile;
Oczywiście należy dodać takie
using Properties
stwierdzenie:using <namespace>.Properties;
źródło
readonly
tak będzie , więc ...Trochę się spóźniłem i nie jestem pewien, czy tego właśnie szukasz, ale pomyślałem, że dodam to na wypadek, gdyby ktoś inny uznał to za przydatne.
Załóżmy, że to jest twoja struktura plików:
Musisz wpisać swoją ścieżkę względem
Main.exe
pliku. Więc chcesz uzyskać dostępFolder.ico
, w swoimMain.cs
możesz użyć:String path = "..\\FolderIcon\\Folder.ico"
To wydawało się działać dla mnie!
źródło
string path = ".\\FileName.txt"
<Project>/Debug
działa w środowisku VS Debug. Ale jeśli wyjdziesz z IDE ... lub uruchomisz EXE z innego katalogu roboczego, na pewno się zepsuje.Pomiń „~ \”:
var path = @"FolderIcon\Folder.ico";
~\
nie ma żadnego znaczenia w zakresie systemu plików. Jedyne miejsce, które widziałem, że jest poprawnie używane, to aplikacja internetowa, w której ASP.NET zastępuje tyldę bezwzględną ścieżką do katalogu głównego aplikacji.Zwykle można założyć, że ścieżki są względne w stosunku do folderu, w którym znajduje się plik EXE. Upewnij się również, że obraz jest określony jako „zawartość” i „kopiuj, jeśli nowszy” / „kopiuj zawsze” na karcie właściwości w programie Visual Studio.
źródło
Spotkałem też ten sam problem i udało mi się go przezwyciężyć. Pozwól więc, że wyjaśnię kroki, które zastosowałem. Wyjaśnię to według twojego scenariusza.
Zgodnie z moją metodą musimy użyć klasy „Path” i „Assembly”, aby uzyskać ścieżkę względną.
A więc najpierw Import System.IO i System.Reflection w używaniu instrukcji.
Następnie wpisz poniższą podaną linię kodu.
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
Właściwie powyższa linia przechowuje ścieżkę do katalogu wyjściowego twojego projektu (tutaj katalog 'output' odnosi się do folderu Debug twojego projektu).
Teraz skopiuj katalog FolderIcon do folderu Debug. Następnie wpisz poniższą podaną linię.
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
Teraz ta zmienna „iconPath” zawiera całą ścieżkę do twojego Folder.ico. Wszystko, co musisz zrobić, to zapisać go w zmiennej łańcuchowej. W tym celu użyj poniższego wiersza kodu.
string icon_path = new Uri(iconPath ).LocalPath;
Teraz możesz użyć tej zmiennej łańcuchowej icon_path jako względnej ścieżki do ikony.
Dzięki.
źródło
file:
przed ścieżkąAssembly.GetExecutingAssembly().Location
jeśli masz do czynienia z plikiem (EXE / DLL)Myślę, że użycie tego będzie najłatwiejsze
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
lub ten kod będzie działał na każdym komputerze, którego folder jest w projekcie głównym, jeśli chcesz go zmienić ... po prostu zmień tę sekcję @ ".. \"
public static string bingPathToAppDir(string localPath) { string currentDir = Environment.CurrentDirectory; DirectoryInfo directory = new DirectoryInfo( Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath))); return directory.ToString(); }
źródło
W programie Visual Studio kliknij plik „Folder.ico” w okienku Eksplorator rozwiązań. Następnie zobaczysz panel Właściwości. Zmień zachowanie „Kopiuj do katalogu wyjściowego” na „Kopiuj, jeśli nowszy”. Spowoduje to, że program Visual Studio skopiuje plik do wyjściowego katalogu bin.
Teraz, aby uzyskać ścieżkę do pliku przy użyciu ścieżki względnej, po prostu wpisz:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
Mam nadzieję, że to pomogło.
źródło