CodeSmith Generator Version 5.3.4 verfügbar

Seit Gestern Nacht steht eine neue Version des Code Generators CodeSmith zur Verfügung.

Die Neue Version 5.3.4 enthält unter anderem folgende Änderungen:

  • New Feature:
    • Added CS_IsUserDefinedTableType as an ExtendedProperty to the SqlSchemaProviders ParameterSchema object. This will return true if the type is a User-Defined Table Type.
    • Added support for Function-Based Indexes in the OracleShcemaProvider.
    • Added CS_IndexType and CS_ColumnExpression as an ExtendedProperty to the OracleSchemaProviders IndexSchema object.
  • Fehlerbehebungen
  • Geschwindigkeitsverbesserungen

Mehr Informationen gibt es in den Releas Notes auf der Web Seite von CodeSmith.

Hier geht es zum Download

Razor (CSHTML) – Neue View Engine für ASP.NET

Im Zusammenhang mit WebMatrix wird meist auch über Razor gesprochen.

Aber was ist Razor eigentlich?

Razor ist eine im letzten Jahr von Microsoft entwickelte neue View Engine, welche in Zusammenhang mit dem ASP.NET MVC Framework bzw. von WebMatrix neben einigen anderen View Engines eingesetzt werden kann.

Folgende View Engines stehen aktuell zur Verfügung:

  • ASPX (C#) == default View Engine (auch bekannt als WebFormViewEngine)
  • Razor (CSHTML)
  • NHaml
  • Spark

Eine ausführliche Beschreibung, was eine View Engine genau macht, würde den Rahmen dieses Beitrags sprengen. Daher folgt hier nur eine kurze Beschreibung der Hauptaufgaben einer View Engine.

Grundlegende Funktionalität einer View Engine:

  • Eine Vorlagen basierte Implementierung des Interface IViewEngine, welche einen Provider für die entsprechende View zur Verfügung stellt
  • Implementierung des IView Interface um den Inhalt der Vorlagen rendern zu können.
  • Die Implementierung der eigentlichen Engine, welche in der Lage ist den gerenderten Quellcode in ausführbaren Code zu übersetzen.

Wer ausführlichere Informationen  zum Thema View Engines benötigt, findet unter den nachfolgenden Links sowohl Basiswissen als auch Gegenüberstellungen der einzelnen Engines.

Coding4Fun -Developer Review – Four ASP.NET MVC View Engines (Englisch)

ScottGu’s Blog – Introducing “Razor” – a new view engine for ASP.NET (Englisch)

ASP.NET MVC (Model View Controller) – kurzer Rückblick

Im Zusammenhang mit WebMatrix und Razor taucht immer wieder der nachfolgende Begriff auf:

  • ASP.NET MVC (Model View Controller)

Dieser Model View Controller ist aber nichts neues und wird bereits seit 2007 in einem ASP.NET MVC Framework von Microsoft zur Verfügung gestellt.

Der Model View Controller ist allerdings die Voraussetzung für die Implementierung von Razor in der aktuellen Version von WebMatrix

Mehr Informationen zu ASP.NET MVC gibt es unter anderem bei den nachfolgenden Links:

ASP.NET MVC Framework (ScottGu’s Blog englisch Oktober 2007)

Erstellen von Webanwendungen ohne Webformulare (MSDN Magazin März 2008)

WebMatrix ist Heute Web Matrix war Gestern

Mitte letzten Jahres wurden die ersten Meldungen über das neue Tool „WebMatrix“ von Microsoft zur einfachen Entwicklung von Web Anwendungen veröffentlicht. Nun ist es endlich soweit und das neue WebMatrix steht seit einigen Tagen (13.01.2011) in seiner Version 1.0 zum kostenlosen Download zur Verfügung.

Ich habe hier extra vom „neuen WebMatrix“ gesprochen, denn 2003 gab es bereits einmal ein Produkt mit einem ähnlichen Namen „Web Matrix“. Damals noch in zwei Worten geschrieben, aber auch mit dem Anspruch „das neue Tool“ zur einfachen Entwicklung von ASP.NET Anwendungen zu sein. Wen es interessiert kann hier Informationen über das „alte Web Matrix“ nachlesen.

Doch wollen wir uns nicht lange an dem alten Produkt aufhalten, denn es hat nicht wirklich viel mit dem neuen WebMatrix gemein.

WebMatrix ist ein recht mächtiges Tool mit vielen Optionen und innovativen Funktionalitäten.

Hier die WebMatrix Highlights:

  • Kostenloses Entwicklungstool
  • Entwicklung in ASP.NET, Razor und PHP
  • Unterstützt HTML 5
  • Integrierter Web Server IIS Express
  • Integrierte Datenbank SQL Server Compact
  • Beinhaltet Installation und Konfiguration von PHP und MySQL für Windows
  • Beinhaltet Veröffentlichungsmethoden über FTP und Web
  • Erlaubt die Veröffentlichung sowohl an LAMP basierte als auch an Windows basierte Server
  • Beinhaltet SEO Optimierung Tools

Zusätzlich enthält WebMatrix auch noch eine Web Galerie über die ein Reihe von freien Webanwendungen wie DotNetNuke, BlogEngine.NET, Joomla, Drupal, WordPress und viele andere integriert werden können.

WebMatrix richtet sich zwar nicht ausschließlich, aber doch vornehmlich mehr an Anfänger in der Web Entwicklung als an die Hardcore Entwickler. WebMatrix könnte aber auch für Profis interessant sein, da man mit WebMatrix sehr schnell ein Grundgerüst einer Web Anwendung erstellen kann und bei Bedarf die Web Matrix Projekte in Visual Studio importieren kann.

Und wer sich WebMatrix gerne mal näher anschauen und erste Erfahrungen sammeln möchte sollte sich, solange noch Plätze frei sind, zu einem der kostenfreien Workshops in Bad Homburg oder München anmelden.

23.03.2011 in Bad Homburg

31.03.2011 in München

Vielleicht sieht man sich ja in Bad Homburg !

ReSharper Version 5.1.2 steht zum Update zur Verfügung

Seit Gestern steht eine aktualisierte Version 5.1.2 des Software Tools ReSharper zum Download zur Verfügung.
Mehr Informationen über diese Version gibt es auf der Homepage des Herstellers

Hier kann man die Version direkt herunterladen.

Tortoise SVN Kontext Menü nach Update verschwunden

Heute Morgen habe ich auf 2 verschiedenen Rechner (1 Rechner mit Windows XP Prof. 32 Bit und einem Rechner mit Windows 7 64 Bit) die Tortoise SVN Version 1.6.9.19725 mit der Version 1.6.10.19898 aktualisiert.

Nachdem die Installation/Update abgeschlossen war und die Rechner neu gestartet wurden, waren sowohl auf der XP (32 Bit Installation) als auch auf der Windows 7 (64 Bit Version) Maschine das gesamte Kontextmenü sowie die Overlay Grafiken von Tortoise SVN verschwunden.

Meine Begeisterung stieg natürlich ins unermessliche Disappointed

Das Problem konnte aber sehr einfach dadurch behoben werden, indem man die Installation noch einmal startet und den Button Repair betätigt.

image

Visual Studio – Der Projektspeicherort ist nicht vertrauenswürdig (auf lokalem Laufwerk)

Vorwort:

Ich möchte an dieser Stelle jetzt keinen Vortrag über ADS (Alternate Data Streams) im NTFS Dateisystem halten, dazu gibt es bereits eine Fülle von Informationen im Internet, wer hierzu nähere Informationen haben möchte kann diese über eine Internetrecherche mit der SDV (Suchmaschine deines Vertrauens) erhalten.

image

Hintergrund dieses Beitrags:

In letzter Zeit haben sich die Anfragen bei mir gehäuft, warum nach dem herunterladen aktueller DotNetNuke Versionen (4.9.X und 5.X) von Codeplex und dem anschließenden Entpacken des ZIP Archivs beim Öffnen der Visual Studio Solution ständig die Meldung “Der Projektspeicherort ist nicht vertrauenswürdig” erscheint, obwohl man die Projektdaten auf einem lokalen Laufwerk gespeichert hat und nicht (wo diese Meldung üblicherweise herkommt) auf einem Netzwerklaufwerk.

Zuerst sei einmal gesagt, dass dies weder etwas mit den neuen Versionen, noch mit Codeplex oder DotNetNuke zu tun hat.

Der Grund für diese Meldungen ist, dass beim herunterladen über einen Browser (Früher war das nur wenn man den IE benutzt hat, Heute ist es aber auch mit Firefox so) einer Datei auf ein NTFS Laufwerk sogenannten Alternate Data Streams erzeugt werden, die in diesem speziellen Fall eine unsichtbare Datei [Dateiname]:Zone.Identifier auf dem Laufwerk erstellt und fest verknüpft mit der heruntergeladenen Datei speichert.

Vereinfacht gesagt, teilt diese “unsichtbare” Datei dem Betriebssystem mit “Du Achtung die Datei kommt aus dem Internet und könnte gefährlich sein, gib lieber mal eine Warnung aus”.

Eine der Lösungen (die in diesem Beitrag beschriebene) ist:

Wir löschen die “unsichtbaren” Dateien [Dateiname]:Zone.Identifier.

Seit Vista gibt es zwar für den Kommandozeilenbefehl DIR eine neue Option /R welche diese “unsichtbaren” ADS Dateien anzeigt, aber leider habe ich noch keinen weg gefunden diese mit “Bordmitteln” löschen zu können (Außer die Daten auf ein nicht NTFS Laufwerk zu speichern und anschließend wieder auf das NTFS Laufwerk zu kopieren).

Aber wie so häufig gibt es dafür ein Freeware Tool (sicherlich gibt es auch noch andere, hinterlasst einfach einen Kommentar) welches genau das kann.

Das Programm AlternateStreamView von NirSoft ist so ein Tool (Das übrigens auch unter WIN 7 und da sogar auf X64 funktioniert).

AlternatStreamView

Die Verwendung des Programms ist; denke ich selbsterklären.

DotNetNuke Module – DMX von Bring2Mind Problem mit DNN 5.X – SQL Hack

Bei dem hier beschrieben Problem und deren BUGFIX handelt es sich um die DMX Version 3.5.X und dem Update eines DNN 4.9.X Portals auf DNN 5.X.

Sicherlich die einfachste Methode ist einfach ein Update des DMX Moduls zu erwerben und dieses Update zu verwenden.

Wer das aber nicht möchte und mit dem Funktionsumfang der 3.5.X Version zufrieden ist, kann mithilfe des hier einfach beschriebenen SQL Patches die Version 3.5.X unter DNN 5.3.X (und vermutlich auch höher) zum laufen bekommen.

ACHTUNG auch hier gilt:

Vor der Manipulation unbedingt eines Sicherung (in diesem Fall genügt die Sicherung der Datenbank) vornehmen.

Hier nun die Vorgehensweise, nachdem man vermutlich erst nachdem man das DNN Portal von 4.X auf 5.X aktualisiert hat, feststellt, dass das DMX Modul nicht mehr funktioniert.

Man meldet sich am Portal als Systemadministrator (host) an.

Im Systemverwalter wählt man nun den Menüpunkt SQL aus.

image

Dort kopiert man das nachfolgende SQL Script in die Eingabemaske:

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_GetExtensionsByPortal') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_GetExtensionsByPortal
GO 

CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_GetExtensionsByPortal
    @PortalId Int
AS 

SELECT
    {databaseOwner}{objectQualifier}DMX_Extensions.[AccessRights],
    {databaseOwner}{objectQualifier}DMX_Extensions.[Addon],
    {databaseOwner}{objectQualifier}DMX_Extensions.[ControlToLoad],
    {databaseOwner}{objectQualifier}DMX_Extensions.[Custom],
    {databaseOwner}{objectQualifier}DMX_Extensions.[DownloadUrl],
    {databaseOwner}{objectQualifier}DMX_Extensions.[EntryTypes],
    {databaseOwner}{objectQualifier}DMX_Extensions.[ExtensionKey],
    {databaseOwner}{objectQualifier}DMX_Extensions.[Icon16],
    {databaseOwner}{objectQualifier}DMX_Extensions.[Icon32],
    {databaseOwner}{objectQualifier}DMX_Extensions.[IsPrivate],
    {databaseOwner}{objectQualifier}DMX_Extensions.[MimeType],
    {databaseOwner}{objectQualifier}DMX_Extensions.[PortalId],
    {databaseOwner}{objectQualifier}DMX_Extensions.[ResourceFile],
    {databaseOwner}{objectQualifier}DMX_Extensions.[SettingsControl],
    {databaseOwner}{objectQualifier}DMX_Extensions.[ViewByDefault], 
    {databaseOwner}{objectQualifier}DMX_Addons.Description AS AddonsDescription, 
    {databaseOwner}{objectQualifier}vw_PortalsDefaultLanguage.Description AS PortalsDescription
FROM
    {databaseOwner}{objectQualifier}vw_PortalsDefaultLanguage INNER JOIN {databaseOwner}{objectQualifier}DMX_Addons 
     INNER JOIN {databaseOwner}{objectQualifier}DMX_Extensions ON {databaseOwner}{objectQualifier}DMX_Addons.AddonKey = 
     {databaseOwner}{objectQualifier}DMX_Extensions.Addon ON {databaseOwner}{objectQualifier}vw_PortalsDefaultLanguage.PortalID = 
    {databaseOwner}{objectQualifier}DMX_Extensions.PortalId
WHERE
    {databaseOwner}{objectQualifier}DMX_Extensions.PortalId = @PortalId 

GO

achtet darauf das die Checkbox “Run as script” markiert ist betätigt den Link “Execute”

Das war’s auch schon

Wer übrigens mehr über den Hintergrund zu diesem Problem wissen will, kann in meinem Beitrag DotNetNuke 5.2.0 – Breaking Changes – Part I – Der Begin der echten Portal Lokalisierung mehr erfahren.

c# – Windows 7 – Lokale IPV4 Adresse ermitteln

Einige meiner Tools (darunter vor allem eine Monitorprogramm zur Überwachung von Windows Diensten auf Basis eines UDP TraceListener) funktionieren unter Windows 7 nicht mehr korrekt.

Besser gesagt, beim versucht die lokale IP Adresse zu ermitteln tritt folgender Fehler auf:

{System.Net.Sockets.SocketException: Es wurde eine Adresse verwendet, die mit dem angeforderten Protokoll nicht kompatibel ist
   bei System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   bei System.Net.Sockets.Socket.Bind(EndPoint localEP)

 

Der nachfolgende Code Ausschnitt hat unter Windows XP noch einwandfrei funktioniert:

HostIP = Dns.GetHostAddresses(Dns.GetHostName())[0];
endPoint = new IPEndPoint(HostIP, _Port);
UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
UDPSocket.Bind(endPoint);

Unter Windows 7 wird aber dabei eine IPV6 Adresse zurückgegeben, mit welcher das Binden des UPD Socket nicht funktioniert.

Nachfolgend nun eine Methode die sowohl unter Windows XP (und den anderen älteren Betriebssystemen) als auch den aktuellen Betriebssystemen wie Windows 7 und W2K8 Server  funktioniert.

foreach (IPAddress address in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
    if (address.AddressFamily != AddressFamily.InterNetworkV6)
    {
        HostIP = address;
        break;
    }
}
endPoint = new IPEndPoint(HostIP, _Port);
UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
UDPSocket.Bind(endPoint);

DotNetNuke 5.2.0 – Breaking Changes – Part I – Der Begin der echten Portal Lokalisierung

Eigentlich wurde ja bereits mit der Version 5.0 erwartet, dass DotNetNuke nun endlich mehr Internationalität erhält.

Dem war aber nicht so, und mit der Version 5.0 wurden keinen echten Schritte in die Richtung Mehrsprachigkeit gegangen.

Mit der Version 5.2 beginnt nun aber tatsächlich der erste große Schritt in “diese Richtung” ich wollte eigentlich “richtige Richtung” schreiben, aber da bin ich mir noch nicht sicher, warten wir es ab. Leider, oder wie ich sagen würde, wie erwartet, geschieht dies nicht ohne das es dabei zu gravierenden Änderungen (Breaking Changes) in der Datenbankstruktur kommt.

Mit der Version 5.2.0 wird nun folgende gravierende Änderung vollzogen:

Die Tabelle Portals wird International.

Alle Informationen der Tabelle welche Lokalisierbar sein müssen wurden, in eine neue Tabelle PortalLocalization verschoben und alle Einstellungen aus der Tabelle wurden zusammen mit einem Sprachcode in die Portalsettings Tabelle verschoben.

Das ganze führt bei einigen Programmen (Beispielsweise sei hier das Document Exchange Module von Bring2Mind genannt) dazu, dass diese nicht mehr ohne Update mit DNN 5.2.X und höher betrieben werden können.

Sollte ein eigenes Modul von einer solchen Änderung betroffen sein, so sollte man sich die ebenfalls neuen Views (ja DNN verwendet nun auch Views)

  • vw_Portals (Alle Sprachen)
  • vw_PortalsDefaultLanguage (Standard Sprache entspricht der Lösung vor DNN 5.2)

ansehen.

Durch Verwendung einer dieser Views kann man durch einfache Änderung des Zugriffs von der Portals Tabelle auf eine dieser Views die notwendigen Informationen für sein Modul erhalten, ohne gleich die gesamte Lokalisierungsfunktionalität zu implementieren.

Fortsetzung folgt!!!