2011-03-23 5 views
10

W mojej aplikacji wszystkie obrazy, lokalne strony HTML itp. Są oznaczone jako "Treść działania". Właśnie zdałem sobie sprawę, że istnieje również "Zasób".MonoDevelop: co to jest działanie kompilacji "Treść" w porównaniu do "Zasobu"?

Których należy użyć w przypadku obrazów, a które do wyświetlania stron HTML w UIWebView?

Obecnie używam obrazów tak:

this.oImgLoginLogo.Image = UIImage.FromFile ("Data/Images/ball.png"); 

Ale w Monotouch.Dialog widzę tę linię:

static UIImage arrow = Util.FromResource (null, "arrow.png"); 

Ale arrow.png jest również oznaczona jako "treści" ...?

Zaskoczony.

Jakie są wady/zalety każdej opcji?

+0

Mamy je osadzone i są wyświetlane przy użyciu widoku internetowego. Następnie - jeśli jest łączność - zaktualizowana wersja HTML jest ładowana z serwera. – Krumelur

Odpowiedz

2

W świecie .NET różnica polega na tym, że podczas procesu kompilacji plik oznaczony jako zawartość zostaje skopiowany do folderu wyjściowego, a plik zasobów staje się częścią samej biblioteki DLL.

AFAIK, MonoTouch nie zawiera zasobów do kompilacji, ponieważ nie istnieje w systemie iOS, dlatego zawsze używasz Treści. Ostatnim krokiem następnie zamienia katalog z plikiem wykonywalnym i plikami treści do pliku .app, tak jak iOS tego oczekuje. To samo dotyczy MonoDroid.

Różnica między MonoTouch i MonoDroid w interfejsie API istnieje, ponieważ idea tych frameworków polega na przetłumaczeniu niemal jednego na jeden interfejsów API dostępnych na tych platformach, zamiast tworzenia jednego interfejsu obsługującego wszystkie platformy w jednakowy sposób.

+0

Dzięki za wyjaśnienie! – Krumelur

7

Osadzone zasoby są osadzone w pliku dll lub pliku exe i dostępne z interfejsów API .NET reflection. Pliki treści to zasoby zasobów i są kopiowane do pakietu aplikacji (który jest po prostu katalogiem) i dostępne za pomocą interfejsów API plików lub MonoTouch w pakiecie Apple API.

MonoTouch obsługuje zasoby osadzone, ale nie są one proste w użyciu z interfejsów API firmy Apple, które są zaprojektowane do używania rzeczy z pakietu aplikacji. Jednak zasoby osadzone mogą mieć więcej sensu, gdy nie ma się do czynienia z interfejsami API opartymi na MonoTouch lub gdy piszemy biblioteki przenośne na inne platformy.

MonoTouch 4.0+ obsługuje pliki zawartość w bibliotekach dll - za kulisami one zniekształcone do wbudowanych zasobów, gdy biblioteka jest kompilowany, więc można udostępnić go jako pojedynczy plik dll, a następnie są one rozpakowywane do pakiet aplikacji po kompilacji aplikacji.

Domyślam się, że MonoTouch.Dialog korzystał z zasobów osadzonych i nie pakował zasobów, ponieważ jest biblioteką i poprzedza MonoTouch 4, dlatego plik oznaczony jako Content jest błędem w projekcie.

+0

Wspaniale słyszeć, że mhutch. Nigdy nie potrzebowałem używać wbudowanych zasobów, ponieważ większość zasobów to tylko obrazy i pliki tekstowe, ale zawsze dobrze jest wiedzieć, że istnieje taka opcja! –