Sharepoint – mit Windows XP WebParts programmieren

Um einen WebPart für Sharepoint mit Hilfe der Windows Sharepoint Services 3.0 Tools entwickeln zu können, braucht man mindestens einen Windows Server 2003 als Betriebssystem. Anders lassen sich diese Extensions fürs Visual Studio leider nicht installieren. Es ist aber trotzdem möglich, WebParts unter Windows XP zu entwickeln. Wie das geht, möchte ich hier erklären:

Um einen funktionierenden WebPart mit Visual Studio 2005 zu schreiben, braucht man lediglich die Microsoft.SharePoint.dll. Zu finden ist diese auf dem Server, auf dem MOSS oder WSS installiert ist. Diese referenziert man sich in seinem eigenen Projekt, in unserem Fall ein WebCustomControl. Da man später zur Installation unseres Webparts die Versionsnummer angeben muss, schauen wir kurz in der Assembly.info vorbei und schalten das automatische hochzählen der Versionierung aus. Wir sind also ab sofort immer auf Version 1.0.0.0.  Außerdem fügen wir bei den Usings folgendes hinzu:

using System.Security;

Nun fügen wir unter der Version noch ein [assembly: AllowPartiallyTrustedCallers] hinzu und fertig ist unsere Assembly.info.

Jetzt, da wir Zugriff auf die Klassen haben, die wir brauchen, können wir uns ein eigenes WebCustomControl erstellen. In den Usings fügen wir die WebPartPages hinzu.

using Microsoft.SharePoint.WebPartPages;

Unser WebCustomControl erbt von der Klasse WebPart.

public class MyWebPart :Microsoft.SharePoint.WebPartPages.WebPart

Im Control wird die Methode protected override void RenderContents(HtmlTextWriter output) gelöscht. Dann wird die RenderWebPart Methode überschrieben.
Jetzt noch etwas Logik, und fertig ist der WebPart. Ein Beispiel:

Button saveTitle;
TextBox newTitle;

public void saveTitle_click(object sender, EventArgs e)
{
     this.Title = newTitle.Text;
     try
     {
          this.SaveProperties = true;
     }
     catch (Exception ex)
     {
          this.Title = "Error: " + ex.Message;
     }
}

Wir überschreiben die CreateChildControls:

protected override void CreateChildControls()
{
     newTitle = new TextBox();
     newTitle.Text = "";
     Controls.Add(newTitle);

     saveTitle = new Button();
     saveTitle.Text = "Set Web Part Title";
     saveTitle.Click += new EventHandler(saveTitle_click);
     Controls.Add(saveTitle);
}

In der RenderWebPart Methode wird der bisherige Code gelöscht und folgender eingefügt:

RenderChildren(output);

Um den WebPart auf dem SharePoint Server zu deployen, braucht unsere Assembly einen Strong Name. Diesen unter den Eigenschaften des Projektes bei Signing hinzufügen und die Solution noch mal builden.

Unsere fertige dll legen wird nun auf den Sharepoint Server umgezogen und im Global Assembly Cache registriert (gacutil –i).
In der web.config des Sharepoint Servers (normalerweise zu finden unter C:\Inetpub\wwwroot\wss\VirtualDirectories\PortNummer\) fügt man bei <SafeControls> einen weiteren Eintrag hinzu:

<SafeControl Assembly="<Name der dll ohne Endung>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<PublicKeyToken aus GAC>" Namespace="<Namespace der Anwendung>" TypeName="<Name der Klasse>" Safe="True"/>

Jetzt braucht man nur noch eine XML-Datei mit folgendem Inhalt zur Installation:

<?xml version="1.0" encoding="utf-8" ?>
<webParts>
  <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="<namespace>.<Klassenname>, <dll ohne .dll>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<publickeytoken aus gac>" />
      <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
    </metaData>
  <data>
    <properties>
      <property name="Title" type="string">My Web Part</property>
      <property name="Description" type="string">A test web part.</property>
    </properties>
  </data>
</webPart>
</webParts>

Dieser Datei geben wir die Endung dwp.

In unserer Sharepoint Anwendung navigieren wir nun zu Site Actions -> Site Settings und wählen unter dem Punkt Galleries Web Parts aus. Hier klickt man auf Upload und navigiert zur eben erstellten dwp Datei. Nun sollte der Webpart nutzbar sein. Achtung: Bei der Vorschau funktioniert die Logik dahinter noch nicht.

Nützliche Links:
http://msdn.microsoft.com/en-us/library/ms452873.aspx
http://www.codeproject.com/KB/sharepoint/WebParticles.aspx

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News