June 2006 Entries

Visual SourceSafe 2005 zeigt keine History an

Heute habe ich ein Projekt aus einer Gemeinschafts-Sourcesafe Datenbank in eine Projektspezifische überführt. Nach dem kopieren kam die Kontrolle, und siehe da ich konnte mir die History (Versionsgeschichte) nicht anzeigen lassen. Der entsprechende Dialog kam einfach nicht hoch, ich selbst nutzte SourceSafe 2005 unter Windows 2000. In den anderen SourceSafe Datenbanken konnte ich mir die History ohne Probleme anzeigen lassen, nur in der neuen Datenbank nicht. Das beste dann als eine Kollegin auch mal nachsah und die History ohne Probleme ansehen konnte; Verwirrung komplett, vollkommen Ratlos. Es stellte sich raus das die Kollegin jedoch mit Visual SourceSafe 6 arbeitete. Nach viel Frust und erstmal das Einstellungsstöbern, Analyse der Datenbank und vieles mehr was nicht zum Erfolg führte. Dann der Griff zur Suchmaschine. Problem gelöst. In MS KB Eintrag 910793 [1] wird der Fehler in SourceSafe 2005 beschrieben. Es gibt einen Workaround. Einfach die Timezone-Settings der SourceSafe Datenbank auf <None Specified> setzen. Dann klappt's auch wieder mit der History. Mit dem nächsten Service Pack für Visual Source Safe 2005 wird dieser Fehler unter Windows 2000 jedoch behoben sein.
[1] [url]http://support.microsoft.com/kb/910793/en-us[/url]

.NET 3.0 kommt mit Windows Vista

Tja, kein Scherz so schnell kann es gehen. Jedoch ist es nur WinFX und das .NET 2.0 Framework welches zusammengeführt und umbenannt wird, es nennt sich nun .NET 3.0 [1]. Obwohl es .NET 3.0 heisst basiert WinFX weiterhin auf dem .NET Framework 2.0. Sehr verwirrend :). Erweiterungen am Basisframework 2.0 (ASP.NET, Windows From, CLR usw.) sind also weiterhin erst im zweiten Quartal 2007 mit Visual Studio Orcas zu erwarten. Wahrscheinlich wird mit Orcas dann NET 4.0 rausgebracht um Java 5 ein weniger näher zu sein, bin gespannt ob die Versionierung von C# dann vom .NET Framework entkoppelt wird. .NET 3.0 enhält somit Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF) und Windows CardSpace (WCS). Inkl. das was .NET 2.0 auch bietet aber auch nicht mehr. Nun zurück zum Thema; Windows Vista wird mit .NET 3.0 vorinstalliert ausgeliefert.
[1] [url]http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx[/url]

Prüfen auf generisches Interface in .NET 2.0

Möchte man in .NET 2.0 ein Objekt darauf prüfen das ein generisches Interfaces implemtiert, so ist das gar nicht so einfach. Keine der üblichen Verdächtigen unter den Funktionen der Sprache C# oder der Type-Klasse führen zum Erfolg [1] Es ist der "Umweg" über Reflection nötig um rauszufinden ob ein bestimmtes generisches Interface implementiert ist. Aber auch da ist ein einfacher Typ-Vergleich nicht möglich, man muss über den Namen des Typs gehen. Mit dieser Funktion ist dies sehr einfach möglich. [c#] public static bool IsInterfaceImplemented(object obj, Type interfaceType) { if (obj == null) throw new ArgumentNullException("obj"); return obj.GetType().FindInterfaces( new TypeFilter( delegate(Type type, object filter) { return (type.Name == ((Type)filter).Name) && (type.Namespace == ((Type)filter).Namespace); }), interfaceType ).Length == 1; } [/c#] Die Anwendung (mehr oder weniger Pseudocode) [c#] public class Test1Col : List {} public class Test2Col : ILIst {...interface implementation...} public void Test() { Test1Col o1 = new Test1Col(); Test2Col o2 = new Test2Col(); IsInterfaceImplemented(o1, type(IList<>); IsInterfaceImplemented(o2, type(IList<>); } [/c#] Funktioniert natürlich auch mit allen anderen Interfaces, doch da funktioniert auch das übliche. [c#] typeof(IList).IsAssignableFrom(o1.GetType()) typeof(IList).IsAssignableFrom(o2.GetType()) [/c#]
[1] [url]http://glengamoi.com/forums/thread/5499.aspx[/url]