.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • ACHTUNG - NEUES BLOG

    Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
Download .NET Essentials Installer
Trickkiste

Artikel: Das Ziel ist die Konfiguration

29.06.07 - Blog-Intern
Beitrag von Norbert Eder
  Ein klein wenig Werbung muss manchmal sein: In der Ausgabe 04/07 der visual studio one ist wieder ein Artikel von mir zu finden. Diesmal beschäftige ich mich mit dem Thema Configuration Management. Neben einer Einführung in die Grundlagen, werden Tools aufgezählt, die bei der Umsetzung helfen, als auch konkrete Beispiele geliefert.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Weitere Tunings für Visual Studio 2005

28.06.07 - .NET, Visual Studio
Beitrag von Norbert Eder
 Im Beitrag Visual Studio 2005: Refactoring-Performance verbessern habe ich bereits einige Möglichkeiten genannt, Visual Studio 2005 performancemäßig zu verbessern. Hier nun weitere Optionen, die ein schnelleres Arbeiten ermöglichen:

Animationen deaktivieren: Animiertes kann unter Environment -- General -- Animate environment tools abgeschalten werden.

Startverhalten verändern: Unter Visual Studio 2005 schneller starten habe ich bereits gezeigt, wie der Splash-Screen deaktiviert werden kann. Eine weitere Möglichkeit die Performance zu verbessern besteht darin, die Start-Seite zu deaktivieren und Content-Download nicht durchführen zu lassen. Die entsprechenden Einstellungen finden sich unter Environment -- Startup. At Startup einfach auf 'Show empty environment' stellen und 'Download content every' deaktivieren.

Navigation-Bar ausblenden: Die Navigation-Bar zeigt alle in der gerade offenen Sourcecode-Datei enthaltenen Klassen und die dazugehörigen Methoden an. Wer Tools á la ReSharper verwendet, benötigt sie daher nicht und kann sie getrost ausblenden. Wieder ein wenig Performance-Gewinn. Zu finden unter Environment -- Text Editor -- All Languages -> Navigation Bar.

Toolbox und Eigenschaften-Fenster schließen: Wenn nicht benötigt und vor allem bei Formularen mit vielen Steuerelementen empfiehlt es sich, sowohl die Toolbox als auch das Eigenschaften-Fenster zu schließen. Durch das Verstecken werden die Fenster befüllt, daher komplett schließen und bei Bedarf wieder öffnen. Auch so läßt sich ein Performance-Gewinn herbeiführen.

Server-Explorer und Class-View: Wenn nicht benötigt, empfiehlt es sich auch, diese beiden Boxen zu schließen.

Es empfiehlt sich also generell alles zu schließen, das nicht benötigt wird.

  2 Kommentare - 1271 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


ISO Dateien mit Microsoft Tools mounten

28.06.07 - Kunterbunt
Beitrag von Norbert Eder
 Ob IsoBuster oder Daemon Tools. Viele benutzen 3rd Party Tools zum Öffnen von ISO Abbildern. In manchen Fällen dürfen aber entweder nur Boardmittel, oder Tools vom Betriebssystem-Hersteller verwendet werden.

Im Falle von Microsoft bietet sich hier das Virtual CD-ROM Control Panel for Windows XP an. Das Tool muss nicht installiert werden und durch das einfache Interface sollte man ohne Probleme damit klar kommen.


  2 Kommentare - 1429 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Alles über Threading in C#

27.06.07 - .NET, Grundlagen
Beitrag von Norbert Eder
 Gerade das Thema Threading wird immer wieder in Foren angesprochen. Zahlreiche Fragen finden sich dazu. Wer sich in das Thema einlesen möchte, oder ein kleines Online-Nachschlagewerk benötigt, dem sei folgender Link ans Herz gelegt:

Threading in C#

Da sollte wohl so ziemlich alles zu finden sein.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


ASP.NET: Web Controls dynamisch laden

27.06.07 - .NET, ASP.NET
Beitrag von Norbert Eder
 In vielen Situationen ist es notwendig, Web Controls dynamisch in einen Platzhalter (Placeholder-Control) zu laden. Dies kann sehr einfach bewerkstelligt werden:
this.ContentPlaceHolder.Controls.Clear();
this.ContentPlaceHolder.Controls.Add
    (
    LoadControl("modules/TestControl.ascx")
    );

Das Beispiel geht davon aus, dass Web Controls im Verzeichnis modules gespeichert sind. Beim ContentPlaceHolder handelt es sich um ein ContentHolder-Control.

Natürlich kann dies auch entsprechend dynamischer gestaltet werden, da sich das zu ladende Control eventuell aus dem aufgerufenen Menüeintrag oder anderen Informationen definieren läßt.

  1 Kommentar - 1530 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Akronyme der Softwareentwicklung

26.06.07 - Kunterbunt
Beitrag von Norbert Eder
 Gerade in der Softwareentwicklung häufen sich Akronyme. Für alles werden sie verwendet. Liebend gerne für (vermeintliche) Paradigmen. Sei es nun Test Driven Development (TDD) oder gar Asshole Driven Development. Einfach in einer ruhigen Minute durchlesen und die Kommentare nicht vergessen.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Rude Q&A - Die etwas andere FAQ

26.06.07 - Entwicklung, Diskussionen, Qualitätsmgmt.
Beitrag von Norbert Eder
 Frequently Asked Questions (FAQ) sind hinreichend bekannt. Was aber hat es mit dem Begriff Rude Q&A auf sich? Sehr einfach erklärt.

Zu jedem Projekt (Software oder nicht) können tonnenweise Fragen gestellt werden. Manche sind für alle von Interesse (typischer Fall für eine FAQ), manche sind unangenehm und würden am liebsten nicht beantwortet werden bzw. sind ohnehin nicht für die Allgemeinheit bestimmt (sinnvoll für eine Rude Q&A). Zusammenfassend: Eine Rude Q&A enthält alle unangenehmen Fragen zu einem Produkt, Unternehmen etc.

Was bringt das nun? Fragen sind da, um sich mit ihnen zu beschäftigen, und sie auch zu beantworten. Vor allem unangenehme Fragen werden oft nicht beantwortet, sei es aus eigener Angst heraus oder bedingt durch andere Gründe. Fakt ist jedoch, dass man auf alle Fragen eine Antwort parat haben sollte. Durch die Beschäftigung mit einer Frage wird also eine Vorbereitung betrieben, die sich im Falle des Falles auf jeden Fall auszahlt. Zudem empfiehlt es sich, die notierten Fragen von Zeit zu Zeit zu überarbeiten, denn schlechte Antworten sind oft schlimmer, als gar keine.

via Scott Berkun

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Sandcastle Help File Builder 1.5.0.0 verfügbar

26.06.07 - Tools, 3rd Party Tools
Beitrag von Norbert Eder
 Seit gestern ist die Version 1.5.0.0 des Sandcastle Help File Builders verfügbar. Großteils wurde die Version an die Sandcastle June CTP angepasst. Ebenfalls wurde einige Bugs behoben.

Sandcastle Help File Builder Homepage

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


DasBackup: Fehlermeldung bei der Synchronisation

25.06.07 - Tools, DasBackup
Beitrag von Norbert Eder
 Beim Versuch eine Synchronisation anzustarten, erscheint der Fehler Cannot synchronize as there are no properties given. Dies betrifft die aktuelle Beta-Version 1.1.3. Hier liegt ein Bug vor, der leider in diese Version hineingerutscht wird. Dadurch kann die Synchronisation nicht getestet werden. Da ohnehin in den nächsten Tagen das Release erscheinen wird, gibt es dafür kein extra Update.


  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


C#: Der as-Operator

24.06.07 - .NET, Grundlagen, Base Framework
Beitrag von Norbert Eder
 

Einführung as-Operator


Der as-Operator ist ähnlich einer Cast-Operation. Im Gegensatz zu einem Cast liefert as jedoch keine Ausnahme (Exception), sondern gibt null zurück. Ein Beispiel:
object o = new MyDemoClass();
MyDemoClass mdc = o as MyDemoClass;

Die Cast-Variante würde wie folgt aussehen:
object o = new MyDemoClass();
MyDemoClass mdc = (MyDemoClass)o;

Ein Äquivalent zum as-Operator könnte so formuliert werden:
object o = new MyDemoClass();
MyDemoClass demoClass = 
  (o is MyDemoClass) ? (MyDemoClass)o : null;

Für benutzer-definierte Konvertierungen muss ein Cast verwendet werden, da dies durch den as-Operator nicht abgebildet wird (nur Referenzen und Boxing).

Performance


Bezüglich der Performance gibt es einen kleinen Unterschied, der sich allerdings erst bei einer hohen Anzahl an Durchläufen auswirkt. Ein Test mit 1 Milliarde Iterationen zeigte einen deutlichen Unterschied, sollte jedoch in der Praxis in dieser Form nicht allzu oft vorkommen. Hier die Testanwendung:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace AsTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();

            object o = new MyDemoClass();

            sw.Start();

            for (int i = 0; i < 1000000000; i++) 
            {
                MyDemoClass mdc = o as MyDemoClass;
            }

            sw.Stop();
            Console.WriteLine("as: " + 
                sw.ElapsedMilliseconds);
            
            sw.Reset();
            sw.Start();

            for (int i = 0; i < 1000000000; i++)
            {
                MyDemoClass mdc = (MyDemoClass)o;
            }

            sw.Stop();
            Console.WriteLine("cast: " + 
                sw.ElapsedMilliseconds);

            Console.ReadKey();
        }
    }

    public class MyDemoClass 
    {
    }
}

Output
as: 6135
cast: 5583

Fazit


In vielen Fällen wäre der as-Operator einem Cast vorzuziehen, da hier einer eventuellen Exception vorgebeugt werden kann (im Falle eines Casts müsste davor via is-Operator überprüft werden, ob es sich um den gewünschten Typ handelt). Auf jeden Fall muss das Objekt anschließend auf null überprüft werden.

  1 Kommentar - 756 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter