Vorgehensweise: Verwenden von SPMetal

Letzte Änderung: Mittwoch, 2. Februar 2011

Gilt für: SharePoint Foundation 2010

In diesem Artikel wird beschrieben, wie das Befehlszeilentool SPMetal verwendet wird, um Entitätsklassendeklarationen für Microsoft SharePoint Foundation-Lösungen zu generieren.

So konfigurieren Sie Ihr Entwicklungsprojekt für die Verwendung von SPMetal

  1. Fügen Sie auf dem Entwicklungscomputer den Pfad zur Datei SPMetal.exe am Ende der Windows-Umgebungsvariablen %PATH% hinzu. In der Regel ist dies %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\BIN.

    1. Klicken Sie im Startmenü des Computers unter Windows Server mit der rechten Maustaste auf Computer, und klicken Sie dann auf Eigenschaften.

    2. Klicken Sie im Dialogfeld System auf Erweiterte Systemeinstellungen.

    3. Klicken Sie im Dialogfeld Systemeigenschaften auf die Registerkarte Erweitert, und klicken Sie dann auf Umgebungsvariablen.

    4. Markieren Sie in der Liste Systemvariablen den Eintrag Pfad, und klicken Sie dann auf Bearbeiten.

    5. Fügen Sie im Dialogfeld Systemvariable bearbeiten ein Semikolon am Ende des Werts unter Variablenwert hinzu, und fügen Sie dann den Pfad zu dem Ordner hinzu, der die Datei SPMetal.exe enthält. Klicken Sie dreimal auf OK.

    HinweisHinweis

    Falls Microsoft Visual Studio geöffnet ist, während Sie diesen Schritt ausführen, müssen Sie das Programm schließen und erneut starten. Erst dann wird die neue %PATH%-Variable erkannt.

  2. Erstellen Sie auf dem Entwicklungscomputer eine SharePoint Foundation-Website als Testumfeld, für das Sie den LINQ to SharePoint-Code entwickeln. Soweit sich dies zum aktuellen Entwicklungsstand sagen lässt, sollte diese Website dieselben Listen, Spalten und Suchfelder wie der endgültige Websitetyp aufweisen, den Sie mit der Lösung bereitstellen möchten. Diese Informationen werden von SPMetal gelesen. Sie können das Tool jedoch erneut ausführen, sodass es mit fortschreitender Entwicklung möglich ist, den Entwurf zu ändern.

  3. Öffnen Sie das Visual Studio-Projekt, und fügen Sie eine Textdatei mit dem Namen Prebuild.bat zum Projekt hinzu.

  4. Öffnen Sie Prebuild.bat, falls die Datei noch nicht geöffnet ist, und fügen Sie die folgenden Zeilen hinzu.

    Echo Off
    SET SPLANGEXT=cs
    
    Echo Backing up previous version of generated code ... 
    IF NOT EXIST .\PreviousVersionGeneratedCode MkDir .\PreviousVersionGeneratedCode
    IF EXIST SiteName.%SPLANGEXT% xcopy /Y/V SiteName.%SPLANGEXT% .\PreviousVersionGeneratedCode
    
    Echo Generating code ...
    SPMetal /web:http://MyServer/MySite /code:SiteName.%SPLANGEXT%
    

    Nehmen Sie je nach Bedarf die folgenden Änderungen am Code vor:

    • Ersetzen Sie in der zweiten Zeile "cs" durch "vb", wenn Sie Microsoft Visual Basic verwenden.

    • Ersetzen Sie "MyServer/MySite" durch den Pfad zur Website auf Ihrem Entwicklungscomputer, auf dem Sie den LINQ to SharePoint-Code ausführen werden.

    • Ersetzen Sie alle drei Vorkommen von "SiteName" durch den Namen der Website. Diese Zeichenfolge ist nicht nur ein Dateiname, sondern wird auch Teil eines Klassennamens, der alle Listen und Daten auf der Website repräsentiert. Verwenden Sie eine Zeichenfolge, die zum Ausdruck bringt, dass die Klasse die ganze Website repräsentiert, beispielsweise die Zeichenfolge "MySite", die am Ende der URL steht, oder eventuell auch den Wert des PlaceHolderPageTitle-Inhaltsplatzhalters auf der Homepage.

    In dieser Batchdatei werden die vorherigen Versionen des generierten Codes gespeichert, sodass Sie sie mit der neuen Version vergleichen können, falls dies zum Debuggen notwendig sein sollte.

  5. Speichern Sie die Datei, aber verwenden Sie hierfür nicht die Symbolleistenschaltfläche Speichern oder Alle speichern oder den Befehl Speichern im Menü Datei. Die Standardcodierung für Textdateien in Visual Studio ist nicht mit Systembatchdateien kompatibel. Wählen Sie stattdessen im Menü Datei die Option Prebuild.bat speichern unter aus. Klicken Sie im Dialogfeld Datei speichern unter auf den Dropdownpfeil der Schaltfläche Speichern. Wählen Sie Mit Codierung speichern aus. Wählen Sie im Dialogfeld Erweiterte Speicheroptionen in der Dropdownliste Codierung die Option Unicode (UTF-8 ohne Signatur) - Codepage 65001 aus, und klicken Sie dann auf OK. Stellen Sie sicher, dass Sie die UTF-8-Version "ohne Signatur" auswählen.

    TippTipp

    Wenn Sie die Datei versehentlich falsch speichern, können Sie sie erneut öffnen, eine kleine Änderung vornehmen (wie beispielsweise das Hinzufügen eines Leerzeichens) und die Datei erneut, dieses Mal mit der richtigen Codierung, speichern. Die Datei wird faktisch nicht erneut gespeichert, wenn Sie keine Änderung vornehmen.

  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann Eigenschaften aus. Öffnen Sie die Registerkarte Buildereignisse.

  7. Geben Sie im Feld Befehlszeile für Präbuildereignis (nicht für Postbuildereignisse) die beiden folgenden Zeilen ein.

    cd $(ProjectDir)
    Prebuild.bat
    

    Klicken Sie auf Alle speichern.

  8. Nachdem Sie erstmalig einen Build für ein Projekt erstellt haben, befindet sich die Datei SiteName.cs (oder SiteName.vb) im Projektverzeichnis in Windows, wird jedoch nicht im Projektmappen-Explorer angezeigt. Fügen Sie sie als Vorhandenes Element zum Projekt hinzu.

Bei jeder Neuerstellung des Projekts generiert SPMetal die Deklarationen der Entitätsklassen und ihrer Eigenschaften neu. Da die generierte Datei jedes Mal überschrieben wird, sollten Sie keine Änderungen an ihr vornehmen. Die von SPMetal generierten Klassen werden jedoch mit "partial" markiert, damit Sie weitere Member in einer separaten, manuell erstellten Codedatei hinzufügen können, die nicht von SPMetal überschrieben wird.

Konfigurieren von SPMetal

Bei dem vorherigen Verfahren werden nur die SPMetal-Parameter verwendet, die zum Generieren einer Codedatei unbedingt notwendig sind. Außerdem wird angenommen, dass Sie SPMetal mit den Standardeinstellungen zum Bestimmen der im generierten Code zu modellierenden Listen und Spalten verwenden möchten. Im folgenden Verfahren wird beschrieben, wie Sie die Funktionsweise von SPMetal abwandeln können.

So passen Sie die Parameter und Standardeinstellungen für SPMetal an

  1. Wenn Sie einen Namespace für die generierten Klassen angeben möchten, wenn Sie angeben möchten, ob auf der Basis der Klassen erstellte Objekte serialisierbar sind, oder wenn Sie angeben möchten, dass die URL im Schalter /web ein Remotecomputer (also nicht der Entwicklungscomputer) ist, können Sie die Optionen /namespace, /serialization oder /useremoteapi zur SPMetal-Befehlszeile in der Datei prebuild.bat hinzufügen. Weitere Informationen zu diesen Optionen finden Sie unter SPMetal.

  2. Wenn Sie SPMetal in einem anderen als dem eigenen Benutzerkontext ausführen möchten, können Sie die Optionen /user und /password zur SPMetal-Befehlszeile in der Datei prebuild.bat hinzufügen. Weitere Informationen zu diesen Optionen finden Sie unter SPMetal.

  3. Wenn Sie eine andere Dateinamenerweiterung als CS oder VB für die generierte Codedatei verwenden möchten, können Sie die Option /language zur SPMetal-Befehlszeile in der Datei prebuild.bat hinzufügen. Weitere Informationen zu dieser Option finden Sie unter SPMetal.

  4. Untersuchen Sie die generierte Datei nach dem ersten Ausführen von SPMetal und erneut, nachdem Sie die letzten Änderungen an den Listen, Inhaltstypen und Feldern (Spalten) der Website vorgenommen haben. In jeder der folgenden Situationen kann das Standardverhalten von SPMetal zum Generieren von Code führen, der Ihre Anforderungen nicht erfüllt oder dessen Lesbarkeit beeinträchtigt ist. In diesen Fällen sollten Sie das Erstellen einer XML-Datei mit SPMetal-Parametern und das Hinzufügen der Option /parameters zur SPMetal-Befehlszeile in der Datei prebuild.bat in Erwägung ziehen. Weitere Informationen zum Standardverhalten von SPMetal, zur XML-Parameterdatei oder zur Option /parameters finden Sie unter Standardregeln für die Codegenerierung von SPMetal, Außerkraftsetzen von SPMetal-Standardeinstellungen mit einer Parameter-XML-Datei und SPMetal.

    • Eine oder mehrere der Eigenschaften, die Listen repräsentieren, weist einen ungeeigneten Namen auf.

    • Sie müssen eine abweichende Menge von Listen, Inhaltstypen und Spalten in die von SPMetal modellierte Standardmenge einbeziehen oder aus dieser Menge ausschließen.

Siehe auch

Referenz

SPMetal

Konzepte

Außerkraftsetzen von SPMetal-Standardeinstellungen mit einer Parameter-XML-Datei

Standardregeln für die Codegenerierung von SPMetal