in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

odi's blog

Masterpage-Dateien und SharePoint Designer

Bei der Entwicklung mit Masterpage-Dateien sollte man eines nie, nie, nie machen:

Eine Masterpage-Datei, die im Dateisystem liegt (z.B. ans Bestandteil eines Features) mit dem SharePoint Designer editieren. Der Effekt ist grausam! Jede aspx-Datei, die diese Masterpage-Datei verwendet, wird eine Fehlermeldung "Datei nicht gefunden" verursachen. Und das, obwohl zunächst alle Dateien offensichtlich vorhanden sind.

Was passiert also beim Editieren mit dem SharePoint Designer?

Nun, er versucht einfach nur schlau zu sein. Wenn eine Datei aus dem Dateisystem geöffnet wird, dann untersucht der SharePoint Designer alle Pfad- und Dateiangaben, die in der Datei vorhanden sind. Und die Pfade, mit denen er nichts anfangen kann, die werden geändert !!! Der Effekt ist folgender:

In den meisten Masterpage-Dateien wird im Kopf der Datei folgendes Fragment zu finden sein:

<@Master language="C#"%>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<HTML dir="<%$Resources:wss,multipages_direction_dir_value%>" runat="server" xmlns:o="urn:schemas-microsoft-com:office:office" __expr-val-dir="ltr">
<HEAD runat="server">
[...]

Hier sind besonders die Register-Einträge zu beachten, die die Tagnames "Welcome" und "DesignModeConsole" definieren. Hier werden relative Pfade angegeben ("~/controltemplates/…"). Befindet sich die Datei im Dateisystem und wird dann mit dem SharePoint Designer bearbeitet und gespeichert, dann sieht das Fragment anschließend so aus:

<@Master language="C#"%>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="_controltemplates/DesignModeConsole.ascx" %>
<HTML dir="<%$Resources:wss,multipages_direction_dir_value%>" runat="server" xmlns:o="urn:schemas-microsoft-com:office:office" __expr-val-dir="ltr">
<HEAD runat="server">
[...]

Wie unschwer erkennbar ist, "optimiert" der SharePoint Designer ein wenig und entfernt aus den Pfadangaben den Teil "~/". Damit ist die Datei bei der Ausführung der Masterpage nicht mehr auffindbar, was zum Fehler "Datei nicht gefunden" führt.

Daher, wenn eine Masterpage aus dem Dateisystem editiert werden soll, dann entweder den guten alten Notepad oder das Visual Studio verwenden.

Published Mar 09 2008, 11:11 PM by odi

Comments

No Comments

Leave a Comment

(required )  
(optional )
(required )  
Add

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts