Dienstag, 10. November 2009

Das Outlook-Fenster kann nicht geöffnet werden...

Vor wenigen Tagen begrüßte mich Outlook mit der vielsagenden Meldung "Microsoft Office Outlook kann nicht gestartet werden. Das Outlook-Fenster kann nicht geöffnet werden."

Seltsam daran war, dass im Hintergrund dieser Meldung sehr wohl ein Outlook-Fenster zu sehen war, dieses aber nach einem Klick auf OK in obiger Meldung gleich wieder verschwand.

Einige Suche brachte zu Tage, dass das Profil neu erstellt werden muss oder XML-Dateien korrupt sind oder oder oder....

Aber alle diese Hinweise brachten mich zu keinem Erfolg. In einem letzten Aufbäumen der Kreativität versuchte ich dann noch die Reparatur-Kommandozeilenoptionen von Outlook selbst und siehe da - mit outlook.exe /resetnavpane hatte ich Erfolg und Outlook startet seitdem wieder normal.
Kick It on dotnet-kicks.de

Donnerstag, 5. November 2009

Exam 70-564: Designing and Developing Applications using the Microsoft .NET Framework 3.5

Nach 3 Monaten war nun mal wieder eine Zertifizierungsprüfung dran - diesmal war es die Nummer 70-564. Das Ergebnis ist "Passed" sobald die Systeme von Microsoft aktualisiert sind darf ich mich "Microsoft Certified Professional Developer - ASP.NET Developer 3.5" nennen.

Umfang der Prüfung waren 50 Fragen aus folgenden Themengebieten:
  • Designing and Implementing Controls
  • Designing the Presentation and Layout of an Application
  • Accessing Data and Services
  • Establishing ASP.NET Solution Structure
  • Leveraging and Extending ASP.NET Architecture
  • Applying Security Principles in Application Design
Mit dabei waren Fragen, nach dem Motto "Welches Ergebnis liefert diese LINQ-Query?", "Welche DataAdapter werden wann verwendet?", "Welche datengebunden Controls haben welche spezifischen Eigenschaften?" oder "Welche Anwendungsarchitektur wählt man wenn eine Firewall mit gewissen Eigenschaften im Netz exisitiert?"

Mein Eindruck war, dass die Fragen sehr nah an die der MCTS-Prüfung 70-562 angelehnt sind und jemand der diese Prüfung bestanden hat und im täglichen Geschäft ASP.NET-Anwendungen entwickelt auch die PRO-Prüfung bestehen kann.
Kick It on dotnet-kicks.de

PowerShell: Batch-Umbennennen von Dateien

Vom Übersetzer bekam ich für ein Projekt Sprachressourcen für die Benutzeroberfläche geliefert - allerdings hatte dieser nicht nur den Inhalt geändert, sondern auch in jedem Dateinamen vor der Erweiterung das Sprachkürzel eingefügt. Um wieder die originalen Dateinamen zu erhalten - also z.B. aus Form1it.xml wieder Form1.xml - hätte ich also jeden dieser Dateinamen editieren müssen. Und genau für solche einfachen Jobs eignet sich PowerShell recht gut.

get-childitem -Path *.* | rename-item -newName {$_.name -replace "it.xml", ".xml"}

Mit einer geschickten Kombination aus get-childitem und rename-item per Pipe konnte das Problem schnell gelöst werden.
Kick It on dotnet-kicks.de

Dienstag, 3. November 2009

MSBuild: Wildcards im Copy-Task

Mit dem Copy-Task in MSBuild-Skripten kann man - wie der Name nicht anders vermuten ließ - Dateien von einem Ort zu einem anderen kopieren. Dabei gibt man im Attribut SourceFiles die zu kopierende(n) Datei(en) an und den Zielordner im Attribut DestinationFolder. Alternativ kann man auch das Attribut DestinationFiles verwenden und damit gleich eine Umbenennung der Datei(en) vornehmen.
<Copy SourceFiles="$(ProjectDir)\Resources\LanguageResourceCZ.xml;$(ProjectDir)\Resources\LanguageResourceDE.xml" DestinationFiles="$(LanguageResourcesPath)\CZ\LanguageResource.xml;$(LanguageResourcesPath)\DE\LanguageResource.xml" />
<Copy SourceFiles="$(ProjectDir)\Resources\LanguageResourceCZ.xml;$(ProjectDir)\Resources\LanguageResourceDE.xml" DestinationFolder="$(LanguageResourcesPath)" />

Interessant wird es dann, wenn man versucht, die Quelldateien per Wildcard auszuwählen. Der Versuch wird mit einer Fehlermeldung quittiert:
Error MSB3021: Unable to copy file "C:\Entwicklung\Resources\*.*" to "C:\Deploy\Resources". Illegal characters in path.

Wie für alles gibt es auch hierfür eine Lösung. Man erzeugt zunächst ein Item - denn hier kann man Wildcards verwenden - und übergibt dieses dann dem Copy-Task.
<CreateItem Include="$(ProjectDir)\Resources\*.*">
<Output TaskParameter="Include" ItemName="ResFiles" />
</CreateItem>
<Copy SourceFiles="@(ResFiles)" DestinationFolder="$(LanguageResourcesPath)" />

Damit sind Wildcards auf einer Ebene möglich. Manchmal möchte man auch rekursiv kopieren. Dazu gibt es einen guten Eintrag im MSBuild Team Blog. Zunächst werden die Dateien in einer ItemGroup zusammengefasst und dann dem Copy-Task übergeben. Dabei bestimmt der Wildcard **, dass eine rekursive Auswahl erfolgen soll. Das Metadatum %(RecursiveDir) wird dann verwendet, um die Daten auch wieder rekursiv in der korrekten Ordnerstruktur ablegen zu können.

<ItemGroup>
<Compile Include="$(ProjectDir)\Resources\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(Compile)" DestinationFolder="$(LanguageResourcesPath)\%(RecursiveDir)" />
Kick It on dotnet-kicks.de

Donnerstag, 29. Oktober 2009

Treffen der .NET UserGroup Dresden

Im gestrigen Treffen der .NET Usergroup ging es um das Thema Silverlight. In einem Workshop haben wir gemeinsam eine kleine mehrschichtige datengebundene Applikation zusammengebaut. Mit dabei waren Silverlight-Newbees, aber auch Professionals und Grafiker. So war es für alle recht interessant, da jeder seine Erfahrungen mit einbringen konnte und auch auf den ein oder anderen Stolperstein aufmerksam gemacht wurde oder Tricks verraten wurden.

Beim anschließenden Stammtisch-Treffen im Newtown kam dann die soziale Komponente noch etwas mehr zum tragen und bei dem ein oder anderen Bier kam es dann zu tiefgreifenden philosophischen Erkenntnissen.

Eine Downloadmöglichkeit für den Beispielcode wird sicher in den nächsten Tagen noch im Blog der Usergroup bereitgestellt.
Kick It on dotnet-kicks.de

Dienstag, 20. Oktober 2009

MSBuild-Messages im Output-Window anzeigen lassen

Das Output-Window von Visual Studio kann mittels einer Option dazu gebracht werden, detaillierter anzuzeigen, was bei der Ausführung der internen aber auch von angepassten MSBuild-Skripten eigentlich gemacht wird. Die Einstellung dafür findet man unter Tools -> Options -> Projects and Solutions -> Build and Run.

Die "MSBuild project build output verbosity" bestimmt, wie geschwätzig sich MSBuild verhalten soll.
Kick It on dotnet-kicks.de

Sonntag, 18. Oktober 2009

.NET OpenSpace 2009 Leipzig - ein Rückblick

Am 17./18.10. fand in Leipzig der .NET OpenSpace statt. Über 150 Teilnehmer waren angemeldet und auch fast so viele sind erschienen, um sich mit anderen Gleichgesinnten auszutauschen.

Dabei ging es zum einen um eher fachlich orientierte Themen wie TDD, BDD, AOP, T4, ASP.NET MVC, Entity Framework, Deployment, Architektur von Anwendungen, Neuigkeiten für das Team System, Anforderungsanalyse, Refactoring, CCD, Silverlight in Business Anwendungen. Aber es ging auch um Engagement in der Community, Weiterbildung, Attraktivität des Berufes Softwareentwickler.

Für alle Technik-Affinen (und welcher Softwareentwickler ist das nicht): Live-Eindrücke aus den verschiedenen Sessions konnte jeder an der Twitter-Wall verfolgen, an der alle Tweets mit dem Hashtag #netos2009 angezeigt wurden.

Innerhalb der Sessions aber auch während der Kaffeepausen dazwischen konnte man mit anderen ins Gespräch kommen und neue Kontakte knüpfen und alte wiederaufleben lassen.

Zusammengefasst: Es war eine gelungene Veranstaltung. Vielen Dank an die Organisatoren, die Sponsoren und Teilnehmer. Ich freue mich schon auf eine Fortsetzung.
Kick It on dotnet-kicks.de