środa, 23 lipca 2008

Silverlight 2 Beta 2 w praktyce - ciąg dalszy

Kilka zagadnień, z którymi ostatnio miałem doczynienia:

1. The project type is not supported by this installation - gdy zainstalowałem narzędzia do Silverlight'a na maszynie z Visual Studio 2008 z SP1 (beta), to przy próbie otwarcia jakiekolwiek projektu VS konsekwentnie informował, że nie obsługuje takiego rodzaju projektu lub że referencja na obiekt jest nullem (!). Pomogło zresetowanie ustawień Visual Studio z linii komend.
http://www.microsoft.com/silverlight/resources/readme.aspx?v=2.0

2. Pobieranie bibliotek z kontrolkami na żądanie - przydatne, gdy:
- chcemy współdzielić kontrolki w różnych aplikacjach
- ze względów wydajnościowych, by ładować tylko potrzebne kontrolki, a pozostałe dociągać i ładować w razie potrzeby

Do projektu biblioteki pobieranej na żądanie umieszcza się referencję w taki sam sposób jak do biblioteki, która ma być powiązana w sposób statyczny. Jedyna różnica polega na tym, że we właściwościach referencji trzeba:
- w Visual Studio: propercję Copy Local ustawić na false
- w MSBuild: propercję Private ustawić na false
Wtedy assembly biblioteki nie zostanie włączone do archiwum .xap aplikacji.

http://msdn.microsoft.com/en-us/library/cc296243(VS.95).aspx. Zasugerowany podanym tu przykładem byłem przekonany, że biblioteki z kontrolkami należy pakować do archiwum .xap. Jednak jedynie projekt Silverlight Application pozawala na pakowanie do .xap, projekt Silverlight Class Library na to nie pozwala (nie pozwala też na linkowanie do aplikacji webowej za pomocą Visual Studio). Natrafiłem na stronę http://geekswithblogs.net/lbugnion/archive/2008/04/16/silverlight-packing-user-controls-in-separate-assemblies.aspx, gdzie autor umieszczał kontrolki w projekcie Silverlight Application po wyrzuceniu z niego niektórych plików. Ten pomysł w obecnym wydaniu Silverlight się nie sprawdził, co prawda strumień z .xap był odczytywany, ale ładowanie assembly kończyło się u mnie niepowodzeniem... Wtedy w adresie URI (parametr metody OpenReadAsync klasy WebClient) zamiast adresu do pliku .xap dałem adres do pliku .dll i ... zadziałało!

W obejrzanym przeze mnie później (niestety!) webcaście o dynamicznym ładowaniu bibliotek również w URI jest podawana ścieżka do pliku .dll, skopiowanego ręcznie do katalogu ClientBin aplikacji webowej.

3. W aplikacjach Windows mamy MessageBox, a co mamy w Silverlight?

HtmlPage.Windows.Alert('Message')

4. Jakiś czas temu pisałem o problemie z dodaniem referencji do serwisu WCF w Visual Studio. Gdy teraz korzystałem z Visual Studio 2008 z SP1 (beta) ten problem nie wystąpił.

Brak komentarzy: