Freitag, 29. August 2008

Microsoft StyleCop 4.3 SDK Dokumentation veröffentlicht

Wie ich gerade via Microsoft StyleCop Blog erfahren habe, wurde soeben die Dokumentation des StyleCop 4.3 SDK veröffentlicht. Zu beziehen ist diese hier.

Noch habe ich nicht in die heruntergeladene CHM-Datei geschaut, doch wird versprochen, dass erläutert wird, wie eigene StyleCop-Regeln erstellt und verwendet werden können, wie man dem Settings-Dialog des StyleCop eigene Settings hinzufügen kann und wie man den StyleCop in seine vorhandene Build-Umgebung einbetten kann.

Der erste Punkt ist dabei der, der mich am meisten freut, denn bei uns in der Firma ist es vorgeschrieben, dass auf deutsch dokumentiert wird. Da bringen mir die Regeln des StyleCop nicht wirklich viel, die mir sagen, dass ein Dokumentationskommentar für Konstruktoren gefälligst mit "Initializes a new instance of the XYZ class" anzufangen haben. Also geht es jetzt mit munterem lokalisieren und Rule-Bobbeln los. Das Wochenende ist gerettet!

Mittwoch, 20. August 2008

BizTalk Hotrod Online Magazin

Und ein drittes Mal BizTalk von mir heute... Es gibt ein interessantes freies Online PDF Magazin das sich mit BizTalk beschäftigt und vierteljährlich erscheint: http://biztalkhotrod.com/default.aspx Es ist auf jeden Fall einen Blick wert, da man als BizTalk Entwickler sowieso nicht gerade mit Publikationen erschlagen wird. Die zurückliegenden Ausgaben können unter hier heruntergeladen werden Beim Thema Publikationen sollte ich noch erwähnen dass einzige gute Buch das ich kenne: Professional BizTalk Server 2006 von Wrox (in Englisch versteht sich). Es geht nicht besonders stark in die Tiefe, behandelt eher konstruierte Aufgabenstellungen, aber man findet eigentlich immer zu einem Problem zumindestens einen Ansatz mit dem sich weiterarbeiten lässt. BizTalk Profis werden wohl etwas weniger mit dem Buch anfangen können. Das Buch ist gut strukturiert und liest sich sehr flüssig. Nach Amazon Bewertung würde ich da mal 4 von 5 Punkten für vergeben.

BizTalk Deployment OOM Probleme

Out of Memory ist so eine Totschlag Fehlermeldung beim BizTalk 2006 Deployment, die ziemlich viele Ursachen haben kann, wie diverse Googlesuchsessions bei mir ergaben. Eine kurze Checkliste woran es liegen kann und ich gegenveriferziert habe bei mir selbst: 1. Hat der Host zu wenig (Arbeits-)Speicher: Visual Studio (wenn auf dem Hostsystem) schließen und neu starten (kann schon reichen) und/oder "Services" öffnen (Run Box Command: services.msc) und ein Restart von "SQL Server (MSSQLSERVER)" mit allen daran hängenden anderen Services (geschieht automatisch). Zusammen sollte das jedenfalls den Speicher dramatisch leeren 2. Hat der Host genug (Arbeits-)Speicher, bzw. der Erste Tipp funktioniert nicht: ...dann hilft ein überprüfen der SQL Jobs. Es ist enorm wichtig das der "MessageBox_Message_Cleanup_BizTalkMsgBoxDb"-Job läuft(!!) Jede Message die mehr als EINEN Subscriber hat wird nämlich nicht sofort aus der Message Box intern gelöscht, das macht erst später dieser Job. Zu finden ist dies im "Microsoft SQL Server Management Studio", rechts unter SQL Server Agent->Jobs Langwieriges Deployment... Tipp 2 ist übrigens auch zu prüfen wenn das Deployment sehr lange dauert, bzw. es immer langsamer wird. Hier ist auch gegenfalls zu überprüfen, wenn Visual Studio sich auf dem selben System befindet, ob im Projekt unter Deployment -> BizTalk Group -> Server "(LOCAL)" eingetragen ist und nicht(!) die (lokale) IP Adresse. Warum auch immer, auch dies hat einen "bremsenden" Effekt.

Inconsistent duplicate module attribute

Ein 'Microsoft.XLANGs.BaseTypes.BPELExportable': inconsistent duplicate module attribute Error hat mich ziemlich lange geärgert in Biztalk2006 R2 beim kompilieren. Des Rätsels Lösung war das sowohl in den Projekteneigenschaften unter Build - Code Generation: BPEL Compliance True als auch in einer Orchestration unter Eigenschaften: Module Exportable auf True gesetzt war. Leider natürlich an einer völlig anderen Stelle als im Error Output angegeben. Ein setzen innerhalb der Orchestration auf False behob das Problem... Offenbar ist "doppeltgemoppelt" nicht immer gut ;)

StyleCop v4.3 erschienen

Wie ich gerade anhand des Microsoft StyleCop-Blogs erfahren habe, ist die neue Version 4.3 des StyleCop erschienen.

Unter anderem wurden in dieser Version einige Bugs gefixt sowie neue Rules eingefügt. Sehr schön finde ich auch, dass die Definition der einzelnen Rules jetzt wohl im Visual Studio verfübar sein soll. Bis jetzt musste ich immer das WWW durchforsten, wenn ich eine mir unbekannte Rule-Verletzung im Code hatte. Sehr positive Entwicklung.

Zum Download geht es hier. Unter diesem Link steht auch eine Doku zur Verfügung, die ebenfalls die Rules und deren Erklärung enthält.

Montag, 18. August 2008

Microsoft StyleCop

Vor kurzem bin ich wieder einmal über ein sehr nettes Tool gestolpert, das Microsoft den C#-Programmierern zur Verfügung stellt, um die Codequalität zu verbessern, ähnlich dem FxCop. Anders als der angesprochene FxCop analysiert der StyleCop allerdings keine Assemblies sondern den geschriebenen Code direkt im VisualStudio. Auch werden von ihm natürlich andere Themengebiete abgedeckt als vom FxCop.

Hat man den StyleCop hier heruntergeladen und installiert, hat man im VisualStudio im Menü "Extras" ("Tools" in der englischen Version) zwei neue Menüpunkte, mämlich "Run Source Analysis" und "Run Source Analysis (Rescan all)". Die erste Option kann auch durch die Tastenkombination Ctrl + Shift + Y aufgerufen werden. Führt man die Quellcode-Analyse durch, erscheint ein neues Fenster, das die Ergebnise für die Solution enthält.

Hingewiesen wird hier unter anderem auf fehlende Dokumentationskommentare, "falsche" Formatierung und ähnliches. Weiterhin bekommt man eine Meldung, wenn man beispielsweise vergessen hat, einer Klasse explizit einen Zugriffsmodifizierer zuzuweisen, was ja doch schon mal passieren kann, wenn die Klasse sowieso private sein soll.

Interessant finde ich das AddOn hauptsächlich deswegen, weil es einem die Coding-Guidelines, die (zumindest teilweise) bei Microsoft verwendet werden. Ein paar Kleinigkeiten habe ich bereits gelernt, zum Beispiel, dass Using-Direktiven innerhalb eines Namespace gemacht werden und jede Datei einen definierten Header bekommen sollte. Die Sache mit den Using-Direktiven verstehe ich zwar noch nicht wirklich, doch den Grund hierfür werde ich schon noch herausfinden.  Falls da jemand etwas Genaueres sagen kann, so möge er dies doch bitte via Kommentar tun. Header verwende ich natürlich in meinen Sourcefiles, doch nicht in der Form, wie sie der StyleCop verlangt.

Für jeden, der sich für die Optimierung seines Codings interessiert, der möge sich den StyleCop herunterladen und installieren. Bei mir wird er jedenfalls jetzt regelmäßig zum Einsatz kommen.

Nachtrag: Wie ich gerade festgestellt habe, halten sich die von VisualStudio generierten Codedateien selbst nicht an die Vorgabe des StyleCop. Interessant...

Donnerstag, 7. August 2008

Sysinternals Tools Live

Meine heißgeliebten nützlichen Helferlein kann man auch direkt ausführen von: http://live.sysinternals.com/ :)

Kenne deine .NET Werkzeuge - HttpUtility Class

Ich denke eines der größten individuellen Mankos ist, dass man (ich) nicht sein Framework und die damit zur Verfügung gestellten Werkzeuge kennt. Ich vermute mal ein ASP.NET Entwickler wird die HttpUtility Class (http://msdn.microsoft.com/en-us/library/system.web.httputility(VS.80).aspx) kennen, ich kannte sie nicht. Es war unerlässlich das ich ein XML von Hand zusammenkleben mußte und mein LoadXML in ein XmlDocument schlug grandios fehl. Das Problem war schnell gefunden im XML Editior von Visual Studio, der hat mir einen Eintrag rot unterringelt der ein & enthielt. Ich wollte schon loslegen eine Hilfsklasse zu schreiben die mir meine Values &, ä, ö, ü, <, > usw. konvertiert nach &amp; etc. ... Doch "Halt!", meinte mein Kollege, da muss es doch was im Framework schon geben. Nach etwas "googeln" fand ich dann die HttpUtility Class. Und die hat eine HtmlEncode Methode die einem das wunderbar erschlägt :)

string encodedValue = System.Web.HttpUtility.HtmlEncode(unencodedValue);

Das Ganze funktioniert auch innerhalb von Biztalk. Die System.Web dll muss hier explizit referenziert werden, das dürfte vermutlich auch für alle Nicht-ASP.NET Projekte gelten.

Montag, 4. August 2008

PowerCommands für VS2008

Gerade eben bin ich über ein sehr interessantes Projekt bei der MSDN Code Gallery gestolpert: die PowerCommands for Visual Studio 2008.

Dabei handelt es sich um ein Set von nützlichen Erweiterungen, die man - mehr oder weniger - in Visual Studio immer mal wieder vermisst. Beispielsweise erhält man einen Eintrag im Kontext-Menü, der es einem erlaubt, alle geöffneten Projekte zuzuklappen. Natürlich nichts wirklich besonderes, aber bei fünf bis zehn Projekten pro Solution schon sehr angenehm. Für sehr interessant halte ich auch die Möglichkeit, aus einem beliebigen hartkodierten Text eine Konstante zu erstellen. Warum selber bauen, wenn man auch bauen lassen kann?

Das absolute Killer-Feature für mich ist jedoch die Möglichkeit, sowohl die Recent File List als auch die Recent Project List zu leeren. Ich kann es absolut nicht leiden, wenn gerade die Recent Project List vollgestopft ist mit Projekten, die nur angelegt wurden, um "mal eben" etwas zu testen. Wenn das überhand nimmt, weiß ich in Zukunft, was ich zu tun habe!