2013-02-26 7 views
7

Używam zdjęć nad niektórymi z moich przycisków i nie chcę, aby te obrazy były zawarte w wynikach.Czynność budowania obrazu: różnica między brakiem a zasobem osadzonym?

Obrazy te są ustawiane za pomocą właściwości przycisków, dlatego są zdefiniowane w pliku Resource.resx.

Powiedziano mi, aby ustawić działanie kompilacji na osadzone zasoby, ale jestem ciekawy, dlaczego to robi różnicę. Mam teraz ustawioną akcję budowania na "Brak" i żaden z plików nie jest ustawiony do kopiowania. I mogę przenieść zbudowaną aplikację w dowolnym miejscu i uruchomić go i wszystkie obrazy pokazują dobrze. (Tylko po to, aby wyjaśnić, obrazy zdecydowanie nie znajdują się w katalogu programu podczas jego uruchamiania i nadal wyglądają dobrze).

Spojrzałem go na MSDN i mam to:

None - plik nie jest zawarty w grupie wyjściowej projektu i nie jest skompilowany w procesie budowania. Przykładem jest plik tekstowy zawierający dokumentację , na przykład plik Readme.

Osadzony zasób - Ten plik jest osadzony w głównym projekcie jako plik DLL lub plik wykonywalny. To jest zwykle używane do plików zasobów.

Ale z tego brzmi, jak gdyby wszystkie ustawione w "Żadna" nie powinny nawet działać (ale tak się dzieje).

Ciekaw jestem, jakie korzyści daje ustawienie Embedded Resource. Testowałem to i nie było żadnej różnicy. Miałam nadzieję, że ktoś może wyjaśnić, co się dzieje.

Moje jedyne założenie jest takie, że po ustawieniu właściwości obrazu za pomocą przycisku, a pozycja zostanie dodana do pliku zasobów, nie jest ona w żaden sposób połączona z plikiem dodanym do projektu (nawet jeśli są one takie same). Jeśli więc ustawiasz właściwość obrazu w ten sposób, to nie trzeba włączać obrazów do projektu (np. Do eksploratora rozwiązań).

Dziękujemy!

Odpowiedz

8

Wygląda na to, że natknąłeś się na dwa różne sposoby wyświetlania obrazu.

  1. Jeśli korzystasz z pliku zasobów następnie plik zasobów będzie się zawierają obrazy i pliki zostaną skopiowane do katalogu wyjściowego. Będziesz wtedy , a następnie odwołasz się do obrazu z tego pliku zasobów, a wszystko będzie dobrze . Rzeczywiste ustawienie obrazu dla none/embedded/content nie będzie miało znaczenia. Dzięki temu można tworzyć pliki zasobów dla różnych języków i lokalizacji i zmieniać, który obraz jest używany w oparciu o kulturę użytkową .

  2. Innym sposobem odniesienia do obrazu jest jego osadzenie lub ustawienie go jako treści w projekcie. Jeśli ustawisz go jako zawartość, to zostanie on skopiowany do katalogu wyjściowego i może być fizycznie odwołany na podstawie lokalizacji lub jeśli go osadzisz, plik będzie zlokalizowany wewnątrz utworzonej biblioteki dll i możesz pobrać strumień zasobów z tym plik w nim za pomocą wbudowanych funkcji.

Używasz Sposób nr 1 tak kiedyś trzeba umieścić go w pliku zasobów nie mieć go w projekcie ponieważ plik zasób jest już w projekcie i że jest gdzie plik zostanie pochodzić z.

+0

Dziękuję. O to mi chodziło. W mojej głowie, kiedy ustawiałem źródło obrazu, wszystko, co robiłem, polegało na mapowaniu do miejsca, w którym obraz byłby wyświetlany po uruchomieniu programu. Nie rozumiałem, co się stało, kiedy zostało dodane do pliku zasobów. Wszystko zostało wyjaśnione. – Wrightboy

Powiązane problemy