Glengamoi (Forum) · AspHeute (Artikel) · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Robert Wachtel: Visual Studio 2008 SP1 Beta

VS 2008 SP1 BETA: http://download.microsoft.com/download/7/3/8/7382EA08-4DD6-4134-9B92-8585A5B07973/VS90sp1-KB945140-ENU.exe .NET 3.5 SP1 BETA: http://download.microsoft.com/download/8/f/c/8fc1fe13-55de-4bf5-b43e-375daf01452e/dotNetFx35setup.exe Express 2008 with SP1 BETA: http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vbsetup.exe http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vcssetup.exe http://download.microsoft.com/download/F/E/7/FE754BA4-140B-413C-933F-8D35FB150F12/vnssetup.exe TFS 2008 SP1 BETA: http://download.microsoft.com/download/a/e/2/ae2eb0ff-e687-4221-9c3e-9165a942bc1c/TFS90sp1-KB949786.exe “Visual Studio 2008 SP1 delivers various improvements to Visual Studio 2008 such as support SQL Server 2008 and new ADO.NET features such as the Entity Framework, numerous improvements to the WPF designers, WCF Templates for [...]

Torsten Weber: Kooperation mit dem Mediencampus Villa Ida in Leipzig

Alex, Marcel und ich waren gestern beim Mediencampus zu Besuch. Der Mediencampus ist ein Projekt der Medienstiftung der Sparkasse Leipzig und wahrscheinlich mir schon aus diesem Grund symphytisch; ich bin ja u. a. ein gelernter Bankkaufmann. Als wir gestern zu Besuch waren, wurde das positive Gefühl bestätigt. Alle Mitarbeiter dort sind wirklich sehr angenehm und wir haben eine Kooperation zwischen dem Mediencampus und der .NET User Group Leipzig vereinbart.

Die .NET User Group Leipzig darf am Mediencampus ihre Veranstaltungen durchführen und ist damit in einer wirklich sehr eleganten Umgebung. Der Mediencampus liegt in einer hervorragenden Umgebung, ist z. B. mit einem eigenen Tonstudio, Dolmetscher-Plätzen in Sälen, einem Roundtable-Computerpool, einem Mac-Pool ;), einem Restaurant / Cafe bis hin zu Appartements für Dozenten ideal ausgestattet.

Derzeit nehmen wir nach der gründlichen Überarbeitung unserer Webseite¹ die Gründung eines Vereins in den Angriff. Diese Kooperation passt perfekt in unser Konzept, in Leipzig und Umgebung der .NET Community weiter zu einem beständigen Wachstum zu verhelfen. Und das ist erst der Anfang...

¹ Danke noch mal an Alex!

Code-Inside Blog: Der trend geht zum zweit-iPod

zumindest wenn es nach Amazon geht. Als ich heute mal wieder beim Internet Gemischtwarenladen vorbeischaute war ich erstaunt amüsiert was mir am neuen Produkten empfohlen wurde. Das solche automatischen Produktvorschläge fast nie sinnvolle ergebnisse liefern ist ja bekannt, bei Amazon kann man sich sogar anschauen warum der Artikel vorgeschlagen wurde:

amazon

Weil ich einen iPod + Tasche erstanden habe könnte mir der 80 GB iPod auch gefallen - tut er auch, kaufen werde ich ihn aber nicht.

Robert Wachtel: RemObjects kündigt RO für Mac OS X und iPhone an

Im Blog von marc hoffman gibt es einen kurzen Ausblick auf “RemObjects SDK for Mac OS X” (Arbeitstitel), eine 100%ige Objective-C Cocoa Applikation mit Xcode 3 entwickelt. Und mehr oder weniger deutlich hat er einen iPhone-/iPod-Touch-Client angekündigt. Der entsprechende Server ließ sich ja schon immer als .NET-Applikation auch gegen Mono linken und läuft somit unter Windows, [...]

Dirk Primbs [MS]: Pixar und Co

Anläßlich einer Diskussion gestern auf der fmx:

Monsters Inc - Pixar!
Shrek - Dreamworks
Ice Age - 20th century fox

Und mal ganz ehrlich: Ist ja wohl klar, wer in dieser Liste gottgleichen Status hat, oder? :)

Jens Häupel [MS]: VSTO 3.0 Add-Ins für alle User installieren

Das Office 2007 Security Modell erlaubt es nicht, unter HKLM registrierte Managed Add-Ins zu verwenden. Was nicht heißt, dass mit einem Trick das Ganze dennoch erreicht werden kann. Misha Shneerson, Senior Software Design Engineer im Microsoft BizApps Team, hat die notwendigen Aspekte in seinem Blog (Teil 1, Teil 2, Teil 3) beschrieben. Ich will mir hier die Zeit nehmen und das Ganze etwas erläutern.

Die Basis ist ein Registry-Replikations-Mechanismus von Office, durch welchen bestimmte Einträge von HKLM nach HKCU repliziert werden, wenn eine der Office Anwendungen gestartet wird.

Definiert werden diese Einträge unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings mittels eines Create bzw. Delete Keys.

Ein Beispiel:

Ein Add-In für Excel 2007 wird hier registriert (ich gehe davon aus, dass die Manifests digital signiert wurden und eine Trust Chain auf der Zielmaschine existiert (siehe hier):

   HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\MyAddIn

Die erforderlichen Einträge wären:

Name   Type    Value   
Description REG_SZ Ein Add-In für Excel ...
FriendlyName REG_SZ MyAddIn
LoadBehavior DWORD 3
Manifest REG_SZ C:\\Program Files\\MyCompany\\MyAddin.vsto|vstolocal

Um jeden an der Maschine angemeldeten Benutzer in den Genuß des Add-Ins kommen zu lassen, wird dieser Pfad im Prinzip auf die UserSettings von Office 2007 in HKLM "kopiert". Der gesamte Pfad würde dann so aussehen:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Office
            12.0
               User Settings
                 MyCompany.MyAddIn
                     Create
                        Software
                           Microsoft
                              Office
                                 Excel
                                    Addins
                                       MyAddIn

Unter MyAddIn stehen dann die in der o.g. Tabelle angegebenen Werte.

Nicht genug

Das reicht aber noch nicht. Repliziert wird der Pfad nur, wenn eine vorhandene Count Property (DWORD) auf dem im obigen Pfad fett formatierten Key (MyCompany.MyAddIn) gefunden wird und deren Wert vom Wert derselben am Zielort (HKCU\Software\Microsoft\Office\Excel\Addins\MyAddIn) abweicht.

Der Wert am Zielort wird unter HKCU\Software\Microsoft\Office\12.0\User Settings\MyAddIn geführt. Das wird getan, um nicht bei jedem Start die Replikation durchzuführen, sondern nur bei Änderungen. Deshalb muß auch diese Count Property nach dem Deinstallieren erhalten bleiben. Am besten. man zählt bei jeder Änderung per Custom Action den Wert um eins hoch. Der Wertebereich eines DWords sollte für einige Zeit ausreichen.

Da die Installation mittels MSI stattfinden sollte, müssen einige Dinge beachtet werden:

  1. Der unter Manifest angegebene Pfad muß so aussehen: [TARGETDIR]MyAddin.vsto|vstolocal
    Der MSI setzt den ausgewählten Zielpfad automatisch ein.
  2. Der Create Key muß mit dem Flag DeleteAtUninstall versehen sein, damit er wieder entfernt wird.
  3. Beim Deinstallieren muß ein Delete Subkey geschrieben werden, der dafür sorgt, daß beim nächsten Start der Hostapplikation die Registrierung des Add-Ins aufgehoben wird. Der sieht vom Aufbau her genauso aus wie der Create Key. Allerdings - da dieser in der Registry verbleibt - muß beim erneuten Installieren ein evtl. vorhandener Delete Key gelöscht werden.
  4. Und natürlich muß beim Installieren wie auch beim Deinstallieren die Count Property erzeugt bzw. hochgezählt werden.

Im anfangs referenzierten Blog findet sich der Code für diese Aktionen. Das klingt kompliziert, aber man muß sich vor Augen halten, daß hier per User und per Machine Aktionen koodiniert werden müssen und der Sicherheitsmechanismus von VSTO der von ClickOnce ist - einer Technologie, die per User funktioniert.

Natürlich kann man das auch auf Basis der Inclusion List tun, Misha Shneerson erklärt das in Teil 3. Das sollte aber nur bei nichtverwalteten Netzwerken getan werden, da die zu erwartende Sicherheit geringer ist.

Christian Binder [MS]: Visual Studio Extensibility Event am 26 Mai

wer einen Überblick zu den Erweiterungsmöglichkeiten von Visual Studio sucht, sollte sich dieses Event nicht entgehen lassen. Bauen Sie z.B. Ihre Application auf Basis der Visual Studio Shell.
Inhaltlich werden folgende Themen von Ken Levy, Program Manager Visual Studio, behandelt:

  • Visual Studio Shell
  • Visual Studio SDK
  • Erweiterung von Visual Studio wie
    • Packages,
    • Add-Ins,
    • Makros und
    • Visualizer

    Anmeldung hier 

    Hinweis: Die Veranstalltung ist in Englischer Sprache und es gibt maximal 20 Plätze.

    Chris

    Swiss DPE Team [MS]: Scrolling through large resultsets with Silverlight 2 Beta1 and LINQ to SQL

    In this 15 minutes video blog I will show you how you can scroll through large resultsets using the SL DataGrid and LINQ to SQL.


    I will show:
    -  paging server side using .Skip and .Take methods in LINQ to SQL
    -  templating the DataGrid for adding the paging vertical scrollbar

    You should watch first this video blog that teach you the basics how to get data from SQL in to SL:  http://blogs.msdn.com/swiss_dpe_team/archive/2008/03/17/silverlight-2-beta1-wcf-linq-to-sql-a-powerfull-combination.aspx

    Attached the sample solution

    Have fun

    Ronnie Saurenmann

    double click the player to play in fullscreen

    Dariusz Parys [MS]: Veranstaltung zu Visual Studio Extensibility

    Peter Kirchner hat mich auf diese Veranstaltung aufmerksam gemacht. Sicherlich für jeden interessant der sich schon mal mit den Erweiterungsmöglichkeiten von Visual Studio beschäftigt hat und hier auch das ein oder andere Fragen möchte.

    Dariusz Parys [MS]: Yet Another Windows Live Demo Video

    Daniel Walzenbach and myself are demoing Windows Live with all its possibilities. In this scenario we have a mom, missing her son, but she always knows where he is! How this magic works, see and guess who is playing Daniel's mom? Enjoy!

    Jan Geisbauer: Wieviel User kann ich per RPC über HTTPS auf meine Front Ends lassen?

    Kürzlich diskutierte ich mit einem "emailphilen" Mitstreiter darüber wieviel Remote User man eigentlich auf einen Exchange 2003 Front End Server per RPC/HTTPS lassen kann. Entgegen erster Vermutungen kamen wir zu dem Schluß, dass hier nicht die CPU sondern das RAM ein Nadelöhr darstellt.

    Aufgrund der begrenzten RAM Möglichkeiten von 32 Bit Systemen (max. 4 GB ohne Tricks) empfiehlt Microsoft pro Front End Server nämlich nur maximal 2.000 simultane User. Das hängt damit zusammen, dass der IIS (über den nunmal HTTPS Connections gehen) nicht mehr Kernel Memory allokieren kann. Genauer kann man das hier nachlesen:

    http://technet.microsoft.com/en-us/library/bb124771(EXCHG.65).aspx

    Um also mehr User pro "Front End" zu ermöglichen brauchen wir also eine 64bit Version von Exchange und die gibt es bekanntlich erst mit Exchange 2007 und heisst dann Client Access Server.

    Wie man die Auslastung eines Exchange 2007 Servers in Sachen Outlook Anywhere (RPC/HTTPS) auslotet wird hier beschrieben:

    http://technet.microsoft.com/en-us/library/cc540453(EXCHG.80).aspx

    Jan Geisbauer: Rollup 2 für Exchange 2007 SP1 verfügbar

    Download

    KB Artikel

    Jens Peter Kleinau: silverlight.js - the hardcoded Version 0.9 kills Beta Applications

    Für Microsoft Silverlight v1.0 Beta gab es das JavaScript Helper File "Silverlight.js", welches im Zusammenhang mit der Javascript Datei "createSilverlight.js" verwendet werden sollte. Leider haben zu wenig Entwickler die Remarks gelesen. Ich habe den wichtigen Teil davon mal rot markiert. //  Silverlight.js   version 0.9 // //  This file is...

    [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

    Code-Inside Blog: XNA Game Studio 3.0 CTP: Endlich VS 2008 & .NET 3.5

    image

    Für alle die, die sich für “Spieleentwicklung” interessieren gibt es nun ein neu Version (CTP) vom XNA Game Studio:

    Es integriert sich in Visual Studio 2008 - von der Express bis zu den Prof. und bietet .NET 3.5 Unterstützung.

    Hier die komplette Ankündigung von Microsoft und der Download Link.

    TDD, Unit-Tests & XNA \o/ :)

    Lars Keller: Guides to the 2007 Office system user interface

    Unter diesem Titel bietet Microsoft eine interaktive Führung an, wo Umsteigern (Office 2003 -> Office 2007) geholfen wird, die alten Menüpunkte aus Office 2003 wiederzufinden.

    If you want to explore the rich, new design with some guidance, try the interactive guides to help you quickly learn where things are. You can run the guides right here, or you can download them to your own computer for use any time you like.

    If you prefer to see just a list of all Office 2003 menu and toolbar commands and their locations in the 2007 Office system, open one of the Microsoft Office Excel mapping workbooks, which you can browse, customize, print, and save on your computer. Instructions on the first tab of each workbook provide tips for customizing, finding, and printing the lists.

    Link:



    This weblog is sponsored by netcreate OHG.

    Lars Keller: Übersicht über die Änderungen im Object Model von Outlook 2003 & Outlook 2007

    Eric Carter hat in seinem Post einige MSDN Links zusammengetragen, welche die Änderungen im Object Model von Outlook 2003 und Outlook 2007 aufzeigen. Des Weiteren hat er sich die Mühe gemacht und zwei Interface Definition Language (IDL) Files für die beiden Outlook Versionen erstellt. Ein "must have" für alle VSTO Outlook-Entwickler! :-)

    Link:



    This weblog is sponsored by netcreate OHG.

    Peter Nowak: What's new in the .NET Compact Framework 3.5

    Paul Yao präsentierte gestern bei der WE-DIG session () die Neuerungen des .NET Compact Frameworks 3.5. Die Session ist als Onlinevideo bei Channel 9  abrufbar.

     

    - English Version -

     

    Paul Yao presented yesterday the news on the .NET Compact Framework 3.5 at the WE-DIG session. The session can be viewed on Channel 9.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Peter Nowak: Smart Device Development Chat (Windows Embedded and Windows Mobile)

    Treten Sie mit Experten für Windows Mobile, Windows CE, SQL Server CE und dem .NET Compact Framework Communities in Kontakt rund um Anwendungsentwicklung für mobile Geräte. Diese Chats bieten eine gute Möglichkeit Fragen durch weltweite Experten beantortet zu bekommen.

    ------------------------------------------------
    Nehmen Sie mit uns online teil für unsere interaktive Fragen- und Antwortrunde am Dienstag dem 13. Mai um
    10 am US Pacific Time
    11 am US Mountain Time
    12 pm US Central Time
    1 pm US Eastern Time
    6 pm BST
    19 Uhr deutscher Zeit

    ------------------------------------------------
    Um am Chat teilzunehmen folgen Sie bitte dem Link:
    http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx

    - English Version -

    Please join experts from the Windows Mobile, Windows CE, SQL Server CE and .NET Compact Framework communities in a chat around application development for smart devices. These chats are a great opportunity to have your questions answered by experts from around the world.

    ------------------------------------------------
    Join us online for our live interactive developer Q&A Tuesday 13th May at
    10 am US Pacific Time
    11 am US Mountain Time
    12 pm US Central Time
    1 pm US Eastern Time
    6 pm BST
    To convert from GMT to your local time, use the link below:
    http://www.worldtimeserver.com/current_time_in_RU-MOW.aspx
    ------------------------------------------------
    To join the chat use the following link:
    http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Peter Nowak: TechNet Radio - Get More Security and Control with Mobile Device Manager

    Ein interessantes Interview zum Thema Mobile Device Manager in MP3 und WMA Format hier(http://blogs.msdn.com/hegenderfer/archive/2008/05/06/now-live-technet-radio-get-more-security-and-control-with-mobile-device-manager.aspx).

    - English Version -

    an interesting interview on the Mobile Device Manager in MP3 und WMA Format can be found here(http://blogs.msdn.com/hegenderfer/archive/2008/05/06/now-live-technet-radio-get-more-security-and-control-with-mobile-device-manager.aspx).



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Peter Nowak: Mobile Tracks @ TechEd Orlando

     

     

    Wer in der glücklichen Lage sein sollte an der TechEd in Orlando vom 3. bis zum 6. Juni teilnehmen zu können, der wird sich freuen eine Menge an Tracks zum Thema Mobility zu finden. Der Grund liegt darin, daß dieses Jahr keine MEDC statt findet.

    Zu den ausgewählten Speakern gehören Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten Struys, Daniel Moth, Jim Wilson, Paul Yao und Alex Yakhnin. Eine Liste der Sessions finden Sie hier.

     

    - English Version -

     

    The lucky ones, who will be beable to attend at the TechEd TechEd in Orlando June 3rd to June 6th, will be glad to hear that a lot of mobile sessions will be offered. The reason for this is, that there will be no MEDC this year. Beside other speakers following ones will have a session: Nickolas Landry, Rabi Satter, Loke Uei Tan, Maarten Struys, Daniel Moth, Jim Wilson, Paul Yao and Alex Yakhnin. A list of session can be found here.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Jens Peter Kleinau: Silverlight 2.0: DeepZoom

    Eines der rockigen Features von Silverlight 2.0 ist das so genannte DeepZoom. Auf der MVP Summit konnte ich von den Entwicklern erfahren, wie es aufgebaut ist und mich von den Beispielen begeistern lassen. Besonders gut gefallen hat mir die Memorablia Sammlung des Hard Rock Café gefallen. Wer von den etwas älteren Menschen erinnert sich nicht an Bladerunner oder anderen moderneren Filmen. Bei...

    [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

    Code-Inside Blog: Wer ist unter uns oder whos.amung.us

    Durch einfaches einbinden eines kleinen Buttons von whos.amung.us kann man sehen wer gerade den eigenen Blog durchstöbert und wo die Leute so herkommen. Zur auswahl gibts schicke Karten, z.b.

    Besucherkarte

    Besucherkarte

    Die Aktuellen Karten für code-inside.de kann man hier finden, der Button auf code-inside ist rechts oben unter “Counter”.

    Dariusz Parys [MS]: Shuffle Extension Method für IList

    Ich schreibe momentan eine kleine Anwendung und benötige hierfür eine zufällig durcheinandergeworfene Liste. Nach einigen Recherchen nach bestehenden Shuffle Methoden, habe ich mich entschieden, für mein kleines Szenario, die von Steven Smith zu nehmen. Gekapselt in einer Extension Method kann man es einfach anwenden.

    Extension Method Shuffle:

       1: public static class MyExtension
       2: {
       3:     public static void Shuffle<TSource>( this IList<TSource> source )
       4:     {
       5:         Random rnd = new Random();
       6:  
       7:         for( int i = source.Count - 1; i > 0; i-- )
       8:         {
       9:             int position = rnd.Next( i + 1 );
      10:             TSource value = source[ i ];
      11:             source[ i ] = source[ position ];
      12:             source[ position ] = value;
      13:         }
      14:     }
      15: }

    Anwendung:

       1: List<string> list = new List<string> { "Eins", "Zwei", "Drei", "Vier", "Fünf", "Sechs" };
       2:  
       3: for( int i = 0; i < list.Count; i++ )
       4: {
       5:     Console.WriteLine( list[ i ] );
       6: }
       7:  
       8: list.Shuffle();
       9:  
      10: for( int i = 0; i < list.Count; i++ )
      11: {
      12:     Console.WriteLine( list[ i ] );
      13: }

    Möchte man das ganze mit einem besseren Zufallszahlengenerator ausstatten, so kann man System.Security.Cryptography.RNGCryptoServiceProvider benutzen.

    Wie immer gilt, dieser Code ist nur ein Beispiel. Bei Schäden wird keinerlei Haftung übernommen. Benutzung auf eigene Gefahr!

    Torsten Weber: Post von der Student Technology Conference (STC) 2008

    Henrike Röse ist Academic Event Managerin in der Hochschulbetreuung bei Microsoft Deutschland

    Die Student Technology Conference ist eine Technologie-Konferenz für alle Studierenden. Sie findet in diesem Jahr am 15.05.2008 in der Kalkscheune in Berlin statt. Solche Konferenzen sind sonst teuer, diese aber für Studenten kostenlos!

    Neben der fetzigen Location gibt es spannende Vorträge wie zur X360-Spieleprogrammierung. Doch es gibt auch noch etwas mehr – einen Kontakt zum HR-Recruitment von Firmen aus dem Microsoft-Umfeld und auch natürlich zu Microsoft selber. Bei wem bald ein Abschluss wie ein Diplom ansteht und .NET mag – unbedingt teilnehmen!

    Die Anmeldung gibt es hier: www.studentconference.de.

    Jade Raymond steht hinter Assassin's Creed und hat dort für Aufregung gesorgt. Hinter dem Imagine Cup steht u. a. Henrike Röse und tut das genauso. Für eine Teilnahme am Imagine Cup ist es zu spät, da bei der Student Technology Conference der deutsche Gewinner gekürt wird, der dann in Frankreich zum Finale fährt. www.imaginecup.info. Ist das schlimm? Nö, einfach dieses Jahr zuschauen, wer hinter dem Imagine Cup steht, am besten lernen, wie man gewinnt und wie man dann auch etwas macht. ;)

    Mehr Informationen zum Imagine Cup gibt es auch hier bei Lori.

    Norbert Eder: Visual Studio 2008 SP1: Was bringt es für WPF?

    Im Service Pack 1 zu Visual Studio 2008 wird es einige Änderungen bzw. Erweiterungen zum Thema WPF geben. Eine genaue Übersicht gibt diese Veröffentlichung von Microsoft.

    Hier eine Liste der neuen Funktionalitäten:

    • The Properties window now contains the Events tab. The Events tab lets you create events, assign events, and review events.
    • The Properties window now includes a category sort option and an alphabetical sort option to allow for faster property location.
    • Code changes have been made to the XAML Refactor/Rename definition and to the Go to definition. These changes allow XAML rename operations to occur automatically. Additionally, you can navigate the XAML definition by pressing F12.
    • You can now drag controls or create controls from the toolbox in XAML view or in Design view. You can do this even if you use a split view configuration.
    • Snaplines are now implemented for control margins. This lets the designer control a fixed distance from other controls, from container edges, or from gridlines.
    • Tab controls now support TabItem activation and TabItem design. To do this, click the tab that you want to design.
    • The Expander control now expands conditionally based on what is selected. You can design the contents of the Expander control at design time with affecting the IsExpanded attribute of the runtime.

    Im Paket sind also durchaus Features, die bereits zu Beginn dabei hätten sollen. Vor allem Umbenennungen waren bisher ein wahrer Graus.

    Einiges dürfte mit diesem SP1 zukünftig leichter fallen, dennoch fehlen mir immer noch ein paar Punkte, die hauptsächlich nur Bug-Fixes behoben werden können. Dieses SP bietet jedoch nur Erweiterungen und Verbesserungen an, keine Bug-Fixes ...

    Jan Geisbauer: Microsoft: Organisches Wachstum mit Müsli

    Die vergangenen Wochen kann man aus der Sicht Microsoft's Großeinkäufer knapp zusammenfassen:

    1. Microsoft will Yahoo kaufen.
    2. Microsoft will Yahoo nicht kaufen.
    3. Microsoft will jetzt organisch wachsen.


    Aber was ist das genau? Schätzungsweise möchte man nun nicht mehr durch einen "großen Brocken" an Volumen zulegen, sondern durch "kleine Bröckchen". Wie man sie eben im Müsli findet:

    http://kara.allthingsd.com/?p=1926&ak_action=printable

    Jan Geisbauer: Diamonds are a boy's best friend

    oder? :-)

    http://www.htc.com/de/product.aspx?id=46038

    Thomas Schissler: Zeitzonen in DataSets

    Verwendet man ein DataSet mit DateTime-Werten in unterschiedlichen Zeitzonen, wird man zu seiner Überraschung feststellen, dass das DataSet eine Umrechnung der Zeiten vornimmt. Bei uns war das Problem konkret, dass ein DataSet per WCF zu einem Service übertragen wurde. Der Service war aber in einer anderen Zeitzone als der Client. In einem DateTime-Feld wurde ein Datumswert abgelegt, also z.B. 08.05.2008. Die automtische Umrechnung hat davon jedoch eine Stunde abgezogen, so dass am Service 07.05.2008 23:00 ankam. Damit war das Datum immer um einen Tag verschoben.

    Das Problem kann aber behoben werden, indem man auf dem Client und auf dem Service den DateTime-Wert vor bzw. nach der Serialisierung konvertiert.

    Auf dem Client sieht das dann z.B. so aus:

     1: foreach (DataSet1.DataTable1Row
    dr in ds.DataTable1.Rows)
     2: {
     3: dr.Date
    = dr.Date.ToLocalTime();
     4: }

    Und dann auf dem Service das Gegenstück:

     1: foreach (DataSet1.DataTable1Row
    dr in ds.DataTable1.Rows)
     2: {
     3: dr.Date
    = dr.Date.ToUniversalTime();
     4: }

    Damit kommt genau der Wert, der im Client eingetragen wurde auch im Service an. Zwar gibt es wohl auch eine Möglichkeit, die Datumskonvertierung zu unterdrücken, aber das hat bei mir nicht sauber funktioniert. Wenn also jemand eine elegantere Lösung kenn, nur her damit ;-)

    Update:

    Wir habe doch noch eine elegantere Lösung gefunden. Auf dem DataSet kann man auf der DateTime Column das Property DateTimeMode auf Unspecified umstellen. Dann wird die Zeitzonen-Konvertierung nicht durchgeführt. Danke an Luke für den Tipp.

    image

    Jens Peter Kleinau: .NET GUI Community

    Seit Anfang April 2008 entsteht auf auf .NET GUI, eine .NET Community, die sich speziell mit der Entwicklung von grafischen Oberflächen auseinandersetzt.Ich zitiere mal von der Homepage: "Gerade mit dem Aufkommen der Windows Presentation Foundation und Silverlight, haben sich viele neue Möglichkeiten ergeben. Der Gestaltung von Oberflächen wird höhere Priorität zuteil. Diese Community...

    [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

    Jens Peter Kleinau: .Net User Group Braunschweig: Pac-Man meets Silverlight

    Wer in der Nähe von Braunschweig lebt oder arbeitet, sollte sich diesen Termin merken: Pac-Man meets Silverlight Datum: 17.06.2008 19:00:00 Ort: Kilian's Raffinerie   Beschreibung: Mit Version 2.0 von Silverlight geht für viele Webentwickler ein Traum in Erfüllung: Animierte Webanwendungen bauen ohne Flash und das auch noch in der eigenen .NET Lieblingssprache. Karim El Jed zeigt in...

    [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

    Alexander Zeitler: Für alle RegEx-Verweigerer ;-)

    Wer sich bisher aufgrund der Komplexität gegen die Verwendung von Regulären Ausdrücken gesperrt hat, sollte sich Josh Flanagan's Readable Fluent Regex Api bzw. was Roy Osherove mit LINQ to Regex daraus gemacht hat, angucken.

    Damit lassen sich RegExen künftig wie folgt abbilden:

    linq to regex

    Peter Nowak: Guitar Zero

    Fast jeder kennt doch mittlerweile Guitar Hero. Aber kennt ihr auch Guitar Zero?
    Bei dem Spiel handelt es sich um einen freien Klon für den PC, welcher neben der Tastatur und Joysticks auch diverse Guitar Hero Controller unterstützt.
    Ob dieses Spiel auch auf die XBox360 portiert wird, da es auf dem XNA Framework basiert, ist nicht bekannt.
    In den Foren gibt es neben den Songs der Guitar Hero Serie auch jede Menge weiterer Songs.

    Danke Simon für diese Info.

    Link: Guitar Zero Forums

     

    (Quelle / Source: http://guitar-zero.en.softonic.com/)

     

    - English Version -

    Almost everybody knows already Guitar Hero. But do you know Guitar Zero?
    This game is a free clone for the PC, which supports besides keyboards and joysticks original Guitar Hero Controllers.
    As the game is developed with the XNA Framework a port to XBox360 would be possible but not known.
    In the Forums all songs from the Guitar Hero series as well as tons of other songs as well.

    Thanks Simon for this info.

    Link: Guitar Zero Forums



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Peter Nowak: Artikel Mai 2008 / Articles May 2008

    In der neuen Ausgabe der Visual Studio One gibt es dieses Mal 2 neue Artikel meinerseits.

    Thema: Elemente für den Heute-Bildschirm. Dieser Artikel zeigt, wie sich mit wie mit ein wenig Hilfe Elemente für den Heute-Bildschirm in C# und VB.NET erstellen lassen. Dieser Artikel basiert auf diesem vorherigen Post (http://blogs.compactframework.de/Peter.Nowak/2008/02/17/Elemente+Fuumlr+Den+HeuteBildschirm+Mit+C+Und+VBNET+Today+Screen+Items+With+C+And+VBNET.aspx).

    Thema: Wer hat an der Uhr gedreht? - Zeitsynchronisation für die eigene Anwendung. Da es mitunter sehr teuer werden kann, wenn eine Systemuhr nicht richtig konfiguriert ist und wie dies in der eigenene (mobilen) Anwendung verhindert werden kann zeigt dieser Artikel.

    Zu lesen sind die Artikel in der Visual Studio One, Ausgabe 03/2008.

     

    - English version -

     

    The new issue of the Visual Studio One magazine offers 2 new articles written by myself.

    Topic: Elements for the Today Screen. This article shows, how with a little bit of help elements for the Today Screen can be created in C# and VB.NET. This article is based on my previous post here(http://blogs.compactframework.de/Peter.Nowak/2008/02/17/Elemente+Fuumlr+Den+HeuteBildschirm+Mit+C+Und+VBNET+Today+Screen+Items+With+C+And+VBNET.aspx).

    Topic: Who played around with the clock? - Sytem Time Sync for your own application. As it can become very expensive under specific cirumstances, if a system clock is set incorrectly this article shows how the system time can be set from your (mobile) application.

    These articles can be read in the Visual Studio One magazine, issue 03/2008.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Peter Nowak: New Team blog for VSD/NETCF and Silverlight Mobile

    Da die Struktur des Teams für Visual Studio for Devices und des .NET Compact Framework Teams sich geändert haben und teilweise auch zusammengefasst wurden, gibt es aus diesem Grund auch einen neuen übergreifenden Teamblog, welcher ab sofort hier zu finden ist.
    Auch das Thema Silverlight Mobile soll an dieser Stelle Platz finden.

     

    - English Version -

     

    As the structuir of the Vuisual Studio for Device Team and the .NET Compact FFramework Team has changed and partly combined, a new team blog has been created, which can be found here.
    As well the topics on Silverlight Mobile will be covered there as well.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    Stefan Lieser: Zugriff auf die Session in ASP.NET MVC Controllern

    Bei Verwendung des ASP.NET MVC Frameworks besteht meist die Notwendigkeit im Controller auf die HTTP Session zuzugreifen um dort den Zustand abzulegen. Eine naive Implementierung sieht z.B. so aus:

    public RenderViewResult Warenkorb() {
        const string key = “warenkorb”;
        if (HttpContext.Session[key] == null) {
            HttpContext.Session.Add(key, “”);
        }
        string warenkorb = (string)HttpContext.Session[key];
    
        ViewData[key] = warenkorb;
        return RenderView(“Warenkorb”, ViewData);
    }

    Dass diese Implementierung nicht die beste ist erkennt man (spätestens) wenn man versucht die Methode Warenkorb zu testen:

    [TestFixture]
    public class HomeControllerTests
    {
        private HomeController homeController;
    
        [SetUp]
        public void Setup() {
            homeController = new HomeController();
        }
    
        [Test]
        public void Action_Warenkorb() {
            RenderViewResult renderViewResult = homeController.Warenkorb();
            Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
        }
    }

    Ergebnis bei Testausführung: System.NullReferenceException beim Zugriff auf den HttpContext. Dieser wird vom ASP.NET MVC Framework zur Laufzeit bereitgestellt, nicht jedoch wenn wir nur den Controller per Konstruktor instanziieren.

    Nun kann man natürlich hingehen und mit Hilfe eines Mock Frameworks die Infrastruktur des Controllers bereitstellen. Die Tests sind dann jedoch sehr aufwendig, schlecht lesbar und dazu noch sehr zerbrechlich:

    [SetUp]
    public void Setup() {
        homeController = new HomeController();
    
        mocks = new MockRepository();
        HttpContextBase httpContext = mocks.DynamicMock<HttpContextBase>();
        session = mocks.DynamicMock<HttpSessionStateBase>();
        SetupResult.For(httpContext.Session).Return(session);
        ControllerContext controllerContext = new ControllerContext(
            httpContext, new RouteData(), homeController);
        homeController.ControllerContext = controllerContext;
    }
    
    [Test]
    public void Action_Warenkorb() {
        using (mocks.Record()) {
            Expect.Call(session[“warenkorb”]).Return(“5 Äpfel”);
        }
        using (mocks.Playback()) {
            RenderViewResult renderViewResult = homeController.Warenkorb();
            Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
        }
    }

    Viel eleganter lässt sich das Problem lösen in dem wir dem Controller im Konstruktor ein IStateProvider Objekt übergeben mit dessen Hilfe der Controller auf die Session zugreift. Der State Provider lässt sich im Test leicht durch ein Mock Objekt ersetzen:

    public interface IStateProvider<T>
    {
        T GetState(Controller controller);
    
        void SetState(Controller controller, T state);
    }
     
    Eine Implementierung des IStateProvider Interface könnte dann z.B. so aussehen:
     
    public class StateProvider<T> : IStateProvider<T> where T : new()
    {
        private const string StateKey = “state”;
    
        public T GetState(Controller controller) {
            if (controller.HttpContext.Session[StateKey] == null) {
                SetState(controller, new T());
            }
            return (T)controller.HttpContext.Session[StateKey];
        }
    
        public void SetState(Controller controller, T state) {
            if (controller.HttpContext.Session[StateKey] == null) {
                controller.HttpContext.Session.Add(StateKey, state);
            }
            else {
                controller.HttpContext.Session[StateKey] = state;
            }
        }
    }
     
    Im Test wird der State Provider durch ein Mock Objekt ersetzt. Der Test ist auf das wesentliche reduziert, gut lesbar und leicht verständlich:
     
    [SetUp]
    public void Setup() {
        mocks = new MockRepository();
        stateProvider = mocks.DynamicMock<IStateProvider<string>>();
        homeController = new HomeController(stateProvider);
    }
    
    [Test]
    public void Action_Warenkorb() {
        using (mocks.Record()) {
            Expect.Call(stateProvider.GetState(homeController)).Return(“5 Äpfel”);
        }
        using (mocks.Playback()) {
            RenderViewResult renderViewResult = homeController.Warenkorb();
            Assert.That(renderViewResult.ViewName, Is.EqualTo(“Warenkorb”));
        }
    }
     
    Zum Instanziieren der Controller verwende ich Castle Windsor und das MvcContrib Projekt. Eine gute Beschreibung wie die Initialisierung in der global.asax erfolgt findet man bei Mike Hadlow. Damit der Controller instanziiert werden kann muss der Typ StateProvider<> in Windsor bekannt gemacht werden. Andernfalls kann der Konstruktorparameter nicht erzeugt werden.
     
    container.AddComponentWithLifestyle(“stateProvider”,
      typeof(IStateProvider<>), typeof(StateProvider<>),
      LifestyleType.Transient);
     
    Technorati-Tags: ,

    Torsten Weber: Graffiti-UserGroups für .NET User Groups

    Graffiti-UserGroups bei der Webpräsenz .NET User Group LeipzigAlex hat vor nicht allzu langer Zeit die Webpräsenz der .NET User Group Leipzig überarbeitet. Herausgekommen ist nicht nur ein sehr schönes Layout, sondern eine Lösung für eine häufige Frage bei den User Groups: Wie bekommen wir bei vernünftigen Aufwand eine Webpräsenz?

    Mit Graffiti-UserGroups, basierend auf dem Graffiti CMS, ist die Beantwortung dieser Frage ab sofort kein Problem. Per Plug-In ist das Graffiti CMS gut erweiterbar und Alex hat für die typischen Aufgabenstellungen bei User Groups ein paar codiert.

    Also z. B.

    • Veranstaltungen anzeigen,
    • für Veranstaltungen registrieren,
    • Vortragsmaterialien anbieten.

    Am besten einfach selbst ausprobieren! Hier gibt es mehr Infos und hier den Quellcode.

    Dirk Primbs [MS]: XNA 3.0 CTP Online! Downloaden!

    xnalogo Ich bin gerade auf der fmx in Stuttgart und konnte dort mit Boyd Multerer (Dev Manager der XBox Live Truppe) ein paar Worte wechseln. Dabei erzählte er mir, dass es dieser Tage eine CTP der neuen Version geben wird, INCL. ZUNE Support (!) :-)

    Tja... und dann 2h später, sozusagen noch warm, kommt die Info, sie währen vor Plan mit dem CTP fertig und er stünde online. Nix wir los! Mein persönliches Feature-Highlight: Integration in VS 2008...

    Offizielles Announcement:
    http://blogs.msdn.com/xna/archive/2008/05/07/announcing-xna-game-studio-3-0-community-technical-preview-ctp.aspx 

    Download:
    http://www.microsoft.com/downloads/details.aspx?FamilyId=DF4AF56A-58A7-474C-BFD0-7CF8ED3036A3&displaylang=en

    Thomas Schissler: Visual Studio Team System Licensing

    Microsoft ist ja ein Meister darin, das Thema Lizenzierung zu einer WIssenschaft zu machen und inzwischen gibt es wohl Leute, die ihr Geld damit verdienen, Firmen durch den Lizenz-Dschungel von MS zu führen. Für alle, die Fragen bezgl. der Lizenzierung von Visual Studio Team System 2008 haben, sei dieses Dokument empfohlen. Fragen dazu aber bitte nicht an mich ;-)

    Download details: Visual Studio Team System Licensing

    msdn Austria [MS]: Case Study - Big Days Key Note Video, Stadt Graz

    Wer auf den BigDays war, der hat es unter anderem in der Key Note gesehen: das Video zur Mandatars-Verwaltung der Stadt Graz. Dieses Projekt wurde vollständig auf Basis von Visual Studio 2008 und .NET Framework 3.x Komponenten umgesetzt und während der Wahlen in der Stadt Graz auf Windows Server 2008 Release Candidate betrieben - und sie ist durchgehend stabil gelaufen;) Klicken Sie auf den "Play-Button" weiter unten um das Silverlight-Video zu starten.

    Umgesetzt wurde die Lösung von den Entwicklern der Stadt Graz gemeinsam mit unserem Partner Solvion nach einem gemeinsamen Architekturworkshop mit uns sowie einem Training mit Johann Grabner zu den Themen Windows Workflow Foundation und Windows Communication Foundation nachdem beide Technologien zum Einsatz kamen. Nun ist ein weiterer Ausbau der Anwendung mit Portal-Integration (SharePoint) sowie die Entwicklung zusätzlicher Services geplant.

    Einige Basis-Informationen zur Architektur der Anwendung

    Ziel der Stadt Graz war es, eine möglichst hohe Wiederverwendbarkeit von Funktionalität zu erreichen. Natürlich stand Service Orientierung damit auch zur Diskussion. Allerdings haben sich im Laufe der Architektur-Diskussionen zwei Ebenen der Wiederverwendung ergeben - nämlich die Wiederverwendung auf Ebene von "Geschäftsfunktionen" hinter welchen sich komplexe Prozesse verbergen und die Wiederverwendung von Aspekten innerhalb von Geschäftsfunktionen. Erste Ebene wird klar durch die Prinzipien der Service Orientierung adressiert und beschäftig sich eher damit, "Geschäftsfunktionen" für zum Business passender Granularitäts-Ebene zu identifizieren. Für zweite Ebene haben wir gezielt den Aufbau einer Activity Library für die Windows Workflow Foundation vorgeschlagen. D.h. hinter jedem Business Service (im Sinne der SO) verbirgt sich ein durch die Windows Workflow Foundation abgebildeter Prozess, der nach einer Werkzeug-Material Metapher implementiert wurde und sich aus Custom Activities zusammensetzt, die natürlich in verschiedenen Prozessen wiederverwendet werden können. Folgende Abbildung stellt dies schematisch dar:

    image

    Gehostet wurden die Services im Windows Server 2008 (damals noch der Release Candidate des Servers) mit Hilfe von Internet Information Services 7.

    Wenn Sie mehr Details über die Implementierung und den Betrieb erfahren möchten, können wir gerne den Kontakt mit unserem Entwicklungspartner Solvion herstellen.

    marioszp_VerySmall

    mszCool

    Swiss DPE Team [MS]: .NET Framework 3.5 Enhancements Training Kit (preview)

    Vor wenigen Tage ist das .NET Framework 3.5 Enhancements Training Kit als preview veröffentlicht worden. Noch in diesem Jahr werden Neuerungen im Bereich von ASP.NET und ADO.NET erscheinen, welche in Ergänzung zum .NET Framework 3.5 zu verstehen sind. Das .NET Framework 3.5 ist im November 2007 zusammen mit Visual Studio 2008 erschienen.

    Die Neuerungen umfassen:

    • ASP.NET controls for Silverlight
      Vereinfachen das Einbinden von Silverlight Applikationen (z.B. Video) in ASP.NET Applikationen
    • ASP.NET MVC
      Ein Framework, welches es einfach macht, das model-view-controller Pattern in Web Applikationen umzusetzen
    • ASP.NET Dynamic Data
      Ein Framework, welches das Erstellen von datengetriebenen Applikationen ohne Code erlaubt. Beispielsweise kann aufgrund eines bestehenden Datenmodells eine Web Applikation generiert werden, welche CRUD Operationen unterstützt. Im Kern vergleichbar mit Access, jedoch flexibel erweiterbar mit .NET.
    • ASP.NET AJAX
      Erweiterungen, welche Unterstützung für die Browser History (back Button) bieten.
    • ADO.NET Entity Framework
      Ein OR Mapper, welcher das Definieren eines konzeptionellen Datenbankmodells erlaubt. Das ADO.NET Entity Framework ist somit  mächtiger der OR Mapper, welcher in LINQ to SQL integriert ist. Auch ist es unabhängig von der verwendeten Datenbank.
    • ADO.NET Data Services
      Diese Dienste erlauben das Finden und Manipulieren von Daten über das Web durch simple URIs.

    Die Neuerungen werden hier inkl. Webcasts ausführlich vorgestellt: http://www.asp.net/downloads/3.5-extensions/

    Das .NET 3.5 Enhancement Training Kit, welcher hier zu finden ist, enthält zu allen Bereichen ein Hands-on Lab inkl. Beispielcode. Nachfolgend die ADO.NET Data Services in Aktion:

    image

    PowerPoint Präsentationen und Demos werden noch nachgeliefert.

    Die Erweiterungen selber, also die sogenannten ASP.NET 3.5 Extensions Preview, können hier runtergeladen werden.

    Sicherlich werden wir die Neuerungen an einer unserer zukünftigen MSDN Veranstaltungen vorstellen. Eine Übersicht über die kommenden Veranstaltungen finden Sie jeweils hier: http://www.microsoft.com/switzerland/msdn/de.

    Robert Wachtel: Borland: CodeGear-Verkauf perfekt

    In einer Pressemitteilung hat Borland heute zusammen mit den Ergebnissen des ersten Quartals diesen Jahres den endgültigen Abschluss einer Vereinbarung zum Verkauf der Tochterfirma CodeGear an Embarcadero Technologies bekannt gegeben. Der Verkaufspreis liegt bei ungefähr 23 Millionen US-$. Quelle: http://phx.corporate-ir.net/phoenix.zhtml?c=112793&p=irol-newsArticle&ID=1141119 Interessantes Detail ist, dass Embarcadero Technologies letztes Jahr wohl selbst erst von Thoma Cressey Bravo - einer Private [...]

    Jan Geisbauer: Neues von Xing

    Eigentlich ein alter Hut in den Web 2.0 Zeiten aber in der Praxis dann aber doch beeindruckend - Xing hat jetzt eine Kartenansicht der Kontakte (beta) eingebaut:


    Hardy Pickert: ObjectDataSource und DataObjectAttribute

    Wer in ASP.NET viel mit der ObjectDataSource arbeitet, kann von Attributen eigentlich nur profitieren.Ich benutze die Attribute in meinen Business-klassen, um mit der ObjectDataSource auf meine CRUD-Methoden zuzugreifen.

    Ein Beispiel:

    [DataObjectAttribute()]
       public class CustomerManager()
     
    DataObjectAttribute identifiziert
    einen Typ als für die Bindung an die ObjectDataSource geeignetes Objekt
     
    Als nächstes werden die CRUD-Methoden mit den Attribut DataObjectMethod ausgewiesen.
    Hier die SELECT-Methode:
     
    [DataObjectMethod(DataObjectMethodType.Select, true)]
           public static List<Customer> GetList()
          
    {
               return CustomerDB.GetList();
          
    }
     
     
    DataObjectMethod identifiziert
    eine verfügbare Methode der ObjectDataSource, wobei DataObjectMethodType 
    die Methode auswählt . In unserem Fall die SELECT-Methode.Das true gibt an, ob die Methode in der Object-
    DataSource als Standard für das SELECT gesetzt wird.
     
     
    Äquivalent werden jetzt die UPDATE-bzw. DELETE-Methode der ObjectDataSource vorgegeben.
     
    Update:
     
    [DataObjectMethod(DataObjectMethodType.Update, true)]
            public static long Save(Customer myCustomer)
           
    {
                return CustomerDB.Save(myCustomer);
           
    }
     
     
    Delete:
     
    [DataObjectMethod(DataObjectMethodType.Delete, true)]
           public static bool Delete(Customer myCustomer)
          
    {
               if (myCustomer != null)
                   return CustomerDB.Delete(myCustomer.id);
               else
                   return false;
          
    }
     
     
    Mit diesen Attributen hat man schnell die CRUD-Defaultmethoden der ObjectDataSource gesetzt. 

    Dariusz Parys [MS]: Live Mesh in Action!

    Live Mesh ist in einer TechPreview verfügbar. Registriert man sich für Live Mesh, ist man zuerst auf einer Warteliste. Für all die noch keinen Zugang erhalten haben, habe ich einfach mal einen kurzen Screencast zu der Out-of-the-Box Funktionalität mit Live Mesh gemacht. Ich werde noch einen weiteren zur Programmierung mit Live Mesh machen, allerdings erst im Juni.

    Der Live Mesh Client Dienst funktioniert in diesem TechPreview nur richtig, wenn man die Computer Locale und die User Locale auf en-US einstellt.

    Das Video (ca. 10MB) gibt es hier zum Download.

    Norbert Eder: WPF und Master Pages

    Wer bereits mit ASP.NET in Berührung kam, der kennt eventuell die Master Pages. Also eine Art Vorlage, die das grundsätzliche Aussehen aller darauf basierenden Seiten beschreibt. Vorhandene Platzhalter können je nach Seite mit dem gewünschten Inhalt befüllt werden.

    Dieses Verhalten wäre in einigen Fällen auch für WPF sehr hilfreich. Leider gibt es diese in dieser Form nicht. Wie ein derartiges Verhalten jedoch trotzdem simuliert werden kann, zeigt der Artikel WPF "Master Page" like functionality von Brad Cunningham

    Empfehlenswert!

    Edit: Ebenfalls sehr empfehlenswert ist der Artikel von Karin Huber auf CodeProject zu diesem Thema: WPF Master Pages.

    Swiss DPE Team [MS]: Developing in Silverlight 2? Try the new Deep Zoom Composer!

    If you are working with Silverlight 2 Beta 1 already, I urge you to have a look at the new, second preview version of the Deep Zoom composer.

    The basic concept has stayed the same (thankfully), you create a new Deep Zoom project, you add your pictures, position them on a work surface and then create the parts needed for the Silverlight "MultiScaleImage" control to show your Deep Zoom composition.

    Improvements are numerous and great. First, when composing images, there are now guidelines to help you position the pictures relative to each other.