Treffen der dodned User Group Franken

February 23rd, 2009 Bernd No comments

Am 26. Februar ist es wieder soweit. Die Winterpause ist vorbei und die dodned User Group Franken trifft sich zum ersten mal im Jahr 2009. Und zwar am Donnerstag den 26. Februar. Diesmal wird Daniel Zeiss über Dynamic Linq sprechen. Für regelmäßige DNUG Teilnehmer winkt beim diesjährigen Gewinnspiel eine MSDN Premium Lizenz!

Treffpunkt ist um 19 Uhr bei netlogix GmbH & Co. KG, Andernacher Straße 53, 90411 Nürnberg.

Kick it on dotnet-kicks.de
Categories: Neuigkeiten Tags:

Uncle Bob schreibt über SOLID

February 15th, 2009 Bernd No comments

Robert C. Martin alias Uncle Bob gibt Tipps zum erfolgreichen Start mit den SOLID Prinzipien. SOLID besteht aus fünf Prinzipien, die uns Entwicklern helfen wartbaren, lesbaren, erweiterbaren, kurz qualitativ hochwertigen Code zu schreiben.

In der vor kurzem ins Leben gerufenen Initiative Clean Code Developer (CCD), sind alle diese Prinzipien in den verschiedenen Graden verankert. Dort findet man noch viel mehr Informationen zu professioneller Softwareentwicklung – nix wie hin!

Kick it on dotnet-kicks.de

Tools für WPF und Silverlight Entwickler

February 14th, 2009 Bernd No comments

Ich sehe schon die Gedanken in euren Köpfen : “Oh je, schon wieder einer der ‘ne Toolliste postet”, “Nicht schon wieder. Scott Hanselman macht das doch schon seit Jahren”. Ihr habt ja recht – trotzdem tue ich es, in der Hoffnung Ergänzungsvorschläge zu bekommen.

  • KAXAML – Ein super XAML Editor, mit dem mal schnell mal was ausprobieren kann ohne gleich das Visual Studio zu starten. Er bietet ein geteiltes Fenster, so dass der XAML Code und das gerenderte Ergebnis auf einem Blick zu sehen sind. Syntax-Highlighting und Codevervollständigung gehören auch zum Funktionsumfang. In der aktuellen Beta Version wird auch Silverlight 2 unterstützt.
  • Snoop – Snoop könnte man als “Visual Debugger” bezeichnen. Das Tool kann sich zur Laufzeit an eine WPF Anwendung “attachen” und zeigt dann den Visual Tree derselben an. Dort lassen sich z.B. Properties verändern und Routed Events verfolgen. Wie man Databindingprobleme mit Snoop findet, habe ich hier beschrieben.
  • ShowMeTheTemplate – Zeigt die Templates (ControlTemplate, DataTemplate und ItemsPanelTemplate) für alle mit WPF ausgelieferten Controls an. Auf MSDN gibt es auch Beispiele für ControlTemplates: “Control Template Examples”.
  • Crack.Net – Crack.Net ist zwar kein Tool das speziell für WPF entwickelt wurde, es wurde aber mit WPF entwickelt. Ähnlich wie Snoop “attached” sich Crack.Net an eine laufende .Net Anwendung. Es ist möglich, den managed Heap der Applikation zu untersuchen, Objekte können direkt verändert werden und mit IronPython ist sogar Scripting Support vorhanden. Der Entwickler Josh Smith hat hier konsequent das M-V-VM Pattern verwendet. Ein Blick auf den Sourcecode kann hier nicht schaden.
  • Performance Profiling Tools for WPF – Sammlung von fünf Tools von Microsoft, die helfen sollen Performanceprobleme bei WPF Anwendungen zu finden bzw. zu vermeiden. Mit dem enthaltenen Visual Profiler lässt sich auch mal schnell ein Performancevergleich zwischen zwei Rechnern machen.
  • Mole – Ein Visualizer für Visual Studio mit dem während des Debuggens nicht nur sämtliche Eigenschaften eines Objekts editiert werden können, sondern bei WPF Anwendungen auch der Logical/Visual Tree betrachtet werden kann.
  • Dr. WPF’s Code Snippets – sind zwar kein Tool, aber auch sehr hilfreich. Momentan sind Snippets für Dependency Properties, Routed Commands und Routed Events enthalten. Wer selber Code Snippets schreibt, findet mit dem Snippet Editor einen Helfer.
  • Microsoft Expression Blend – Das Design Tool für WPF und Silverlight (mit SP1 für Expression Blend). Bisher habe ich es nur rudimentär verwendet. Ich glaube aber, dass es auch für Entwickler sehr hilfreich ist, dieses Tool zumindest in den Grundzügen zu beherrschen.

Tools können sehr hilfreich sein, sind aber natürlich kein Allheilmittel! Bei vielen Problemen kann es auch helfen, einfach einen Kollegen über den Code schauen zu lassen.

Welche Tools verwendet ihr bei der WPF Entwicklung?

Kick it on dotnet-kicks.de
Categories: Softwareentwicklung Tags:

The type reference cannot find a public type named ‘InsertYourType’

January 31st, 2009 Bernd No comments

Heute hatte ich eine interessante Diskussion mit Norbert auf .NET GUI. Unter anderem habe ich gelernt, dass es Probleme geben kann, wenn beim Import eines lokalen Namespace in ein XAML File der Assemblyname mit angegeben wird. Hier ein Beispiel:

In der Assembly DataTemplateDemo gibt es eine Klasse Data:

namespace DatatemplateDemo
{
    public class Data
    {
        private string _name;

        public Data(string name)
        {
            _name = name;
        }

        public string Name
        {
            get { return _name; }
        }
    }
}

Im UI wird ein DataTemplate für diesen Typ definiert:

<Window x:Class="DatatemplateDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DatatemplateDemo;assembly=DatatemplateDemo"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <DataTemplate x:Key="DataTemplate_Data" DataType="{x:Type local:Data}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Margin="2" Text="Name: "/>
                <TextBlock Margin="2" Text="{Binding Path=Name}"/>
            </StackPanel>
        </DataTemplate>

    </Window.Resources>

    <Grid>
        <ListBox x:Name="_listBox" ItemTemplate="{StaticResource DataTemplate_Data}"/>
    </Grid>
</Window>

Wenn man nun versucht diesen Code zu übersetzen wird man mit dieser Fehlermeldung konfrontiert:

error MC3066: The type reference cannot find a public type named ‘Data’. Line 8 Position 80.

Nach einigem Rumprobieren hat sich herausgestellt, dass die Übersetzung wunderbar klappt, wenn bei der Deklaration des XML Namespace die Assembly weggelassen wird:

<Window x:Class="DatatemplateDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DatatemplateDemo"
    Title="Window1" Height="300" Width="300">

    ...

</Window>

Der Fehler tritt nicht nur mit DataTemplates auf, sondern z.B. auch wenn man einen Style definiert und der TargetType entsprechend angegeben wird.

Ich merke mir: wenn ein Namespace aus einem lokalen Assembly in ein XAML File mit xmlns importiert wird, gebe ich den “assembly” Parameter NICHT mit an! Vielleicht erspart die Info ja dem einen oder anderen die Fehlersuche. Ach ja, das Intellisense des Visual Studio macht es automatisch so und gibt den “assembly” Parameter nicht mit an, wenn der importierte CLR Namespace im gleichen Assembly liegt.

Kick it on dotnet-kicks.de
Categories: Softwareentwicklung Tags:

Blog wird umziehen

January 31st, 2009 Bernd No comments

Ich hatte es hier ja schon angedeutet, jetzt wird es wahr. Das (oder heißt es der?) Blog wird demnächst umziehen. Bisher gibt es eine Umleitung von http://berndhengelein.de auf diese Seite. Mein “Domain Basic” Paket bei Host Europe habe ich um ein WebPack erweitert. Dort richte ich gerade WordPress ein und ziehe alle Beiträge dahin um. Wenn ich damit fertig bin (ich schätze irgendwann nächste Woche), wird direkt auf den WordPress Blog umgeleitet.

[Update - 05.02.2009]

Der Umzug ist mittlerweile abgeschlossen. Den alten Blog findet man hier.

Kick it on dotnet-kicks.de
Categories: Verschiedenes Tags: