Przechowuję plik PNG jako zasób osadzony w zestawie. Z tego samego zestawu mam taki kod:
Bitmap image = new Bitmap(typeof(MyClass), "Resources.file.png");
Plik o nazwie „file.png” jest przechowywany w folderze „Resources” (w programie Visual Studio) i jest oznaczony jako zasób osadzony.
Kod kończy się niepowodzeniem z wyjątkiem:
Nie można znaleźć zasobu MyNamespace.Resources.file.png w klasie MyNamespace.MyClass
Mam identyczny kod (w innym zestawie, ładowanie innego zasobu), który działa. Więc wiem, że technika jest dobra. Mój problem polega na tym, że spędzam dużo czasu próbując dowiedzieć się, jaka jest właściwa ścieżka. Gdybym mógł po prostu wysłać zapytanie (np. W debugerze) do zestawu, aby znaleźć właściwą ścieżkę, zaoszczędziłoby mi to mnóstwa bólu głowy.
Za każdym razem zapominam, jak to zrobić, więc po prostu zawijam dwa jednowierszowe, których potrzebuję, w małej klasie:
źródło
Domyślam się, że twoja klasa znajduje się w innej przestrzeni nazw. Kanonicznym sposobem rozwiązania tego problemu byłoby użycie klasy zasobów i zasobu o jednoznacznie określonym typie:
Użyj menedżera zasobów IDE, aby dodać zasoby.
źródło
Używam następującej metody, aby pobrać osadzone zasoby:
Następnie nazywam to ścieżką w projekcie:
źródło
Nazwa zasobu to przestrzeń nazw plus przestrzeń nazw „pseudo” ścieżki do pliku. Przestrzeń nazw „pseudo” jest tworzona przez strukturę podfolderów za pomocą \ (ukośników odwrotnych) zamiast. (kropki).
Następujące wezwanie:
zwróci strumień my.xml znajdujący się w strukturze folderów resources \ xml w przestrzeni nazw: my.namespace.
źródło