Jaka jest różnica między zasobem a zasobem osadzonym w aplikacji C #?

89

Kiedy powinienem użyć jednego lub drugiego?

Chciałbym, aby wszystkie pliki, których używam w mojej aplikacji (obrazy, dźwięk, plik xml itp.), Znajdowały się w pliku .exe, więc nie wdrażam z wieloma folderami i plikami.

Dzięki za informację.

Sergio Tapia
źródło

Odpowiedzi:

82

Akcje kompilacji „Zasób” i „Zawartość” mają na celu uzyskanie dostępu do zasobów WPF przy użyciu Uris. Jednak „Zasoby osadzone” są przeznaczone dla wcześniejszych technologii. Jednak obie opcje osadzają zasób w zestawie, ale opcja „Zasób” ma być używana dla WPF.

MSDN zapewnia pełne wyjaśnienie tutaj .

Viky
źródło
Masz rację! Ustawiłem wszystkie obrazy w moim projekcie WPF na Resource i ponownie skompilowałem źródło. Teraz, kiedy przechodzę do folderu Debug, nie mogę nigdzie znaleźć plików, muszą one być częścią pliku .exe, dokładnie tak, jak chcę. Nie mogę ci wystarczająco podziękować! :)
Sergio Tapia,
1
Łącze MSDN jest uszkodzone. Dodatkowe wyjaśnienie tutaj byłoby bardzo miłe.
Michael Harris
7

Zasób WPF (akcja kompilacji = zasób ) wykorzystuje osadzone zasoby obsługiwane przez podstawową platformę .NET Framework, ale dodaje obsługę dostępu do osadzonego zasobu za pośrednictwem identyfikatora URI pakietu . Z MSDN :

Pliki zasobów WPF nie są tym samym, co osadzone lub połączone typy zasobów, które można skonfigurować przy użyciu podstawowej obsługi platformy .NET Framework dla zasobów zestawu. Podczas gdy pliki zasobów WPF wykorzystują podstawową obsługę zasobów osadzonych .NET Framework, możliwość uzyskiwania dostępu do plików zasobów WPF przy użyciu identyfikatorów URI pakietów jest łatwiejsza niż korzystanie z przestrzeni nazw.

Kent Boogaart
źródło
2

Jak donosi MSDN,

Zasoby osadzone to najlepszy wybór, jeśli musisz współużytkować pliki zasobów aplikacji (resx) między wieloma projektami. Na przykład, jeśli masz wspólny plik zasobów, który zawiera logo firmy, informacje o znakach towarowych itp., Użycie zasobów osadzonych oznacza, że ​​musisz skopiować tylko plik resx, a nie powiązane pliki danych zasobów.

Nie można bezpośrednio edytować osadzonych zasobów. Jeśli spróbujesz edytować osadzony zasób, otrzymasz komunikat z monitem o przekonwertowanie elementu na połączony zasób w celu jego edycji. Konwersja jest zalecana, ale opcjonalna. Musisz je wyeksportować, wprowadzić zmiany w programie zewnętrznym, a następnie zaimportować je z powrotem do projektu.

kiamlaluno
źródło
4
To nie daje odpowiedzi na pytanie: jaka jest różnica między zasobem osadzonym a zasobem? Odpowiadasz tylko na adresy Zasoby osadzone.
Grokys
3
Treść pytania brzmi: „Kiedy należy użyć jednego lub drugiego?”; Myślę, że odpowiedziałem na to. Pytania są tak naprawdę dwa.
kiamlaluno
1

Dziękuję za wszystkie raporty, które pomogły mi dokładniej określić, gdzie był problem: Dla mnie to obrazy używane jako ikona projektu na pasku zadań zostały zbudowane jako zasoby i musiały zostać utworzone jako zawartość. Wszystkie inne obrazy można tworzyć jako zasoby, bez problemu.

Mam nadzieję, że to pomoże na przyszłość.

user2064543
źródło