SPMetal

Letzte Änderung: Freitag, 4. Februar 2011

Gilt für: SharePoint Foundation 2010

SPMetal ist ein Befehlszeilentool, mit dem Entitätsklassen generiert werden, die eine objektorientierte Schnittstelle zu den Microsoft SharePoint Foundation-Inhaltsdatenbanken bereitstellen. Diese Klassen kommen vor allem in LINQ to SharePoint-Abfragen zum Einsatz, werden aber auch zum Hinzufügen, Löschen und Ändern von Listenelementen zur Auflösung von Parallelitätskonflikten verwendet. Und nicht zuletzt können sie als Alternative zum regulären SharePoint Foundation-Objektmodell für das Verweisen auf Inhalte dienen.

Das Tool ist in SharePoint Foundation enthalten und befindet sich im Verzeichnis %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\BIN.

SPMetal wird in der Regel als Befehl vor dem Build in Microsoft Visual Studio ausgeführt, da der von ihm generierte Code normalerweise Teil einer Lösung ist, die einen neuen Websitetyp enthält, der sich während des Entwicklungszyklus weiterentwickelt. Da SPMetal die von ihm generierten Dateien für einen gegebenen Ausgabepfad und eine gegebene Website mit jeder Ausführung überschreibt, sollten Sie an diesen Dateien keine Änderungen vornehmen. Die von diesem Tool generierten Klassen sind partial, sodass Sie ihnen Member in separaten, manuell erstellten Codedateien hinzufügen können.

Wenn Ihre Lösung auf einem vorhandenen Websitetyp basiert, z. B. auf der in SharePoint Foundation enthaltenen Teamwebsite, und wenn sie nur auf Listen verweist, die in solchen Websites immer vorhanden sind, und nur Felder (Spalten), die in diesen Listen immer vorhanden sind, können Sie SPMetal einmal ausführen und Änderungen an der generierten Datei vornehmen, die dann nicht überschrieben werden.

Weitere Informationen zur praktischen Anwendung von SPMetal finden Sie unter Vorgehensweise: Verwenden von SPMetal.

Grundlegende Syntax

In SPMetal wird die grundlegende Syntax anderer Windows-Befehlszeilentools verwendet:

SPMetal [options]

Vor jeder Option steht ein Schrägstrich (/). Für die meisten Optionen werden Werte benötigt. In diesem Fall wird der Name der Option von einem Doppelpunkt und dem betreffenden Wert gefolgt:

SPMetal /option1 /option2:value /option3:"value with a space"

Optionen können in einer beliebigen Reihenfolge angegeben werden. Nicht jede Option ist erforderlich. Wenn Sie jedoch eine Option angeben, die einen Wert annimmt, müssen Sie ihr einen Wert zuweisen. Enthält ein Wert Leerzeichen, müssen Sie den gesamten Wert zwischen Anführungszeichen (") schreiben.

Wenn Sie die "/?"-Option alleine angeben, werden kurze Hilfeinformationen über das Tool in der Standardausgabe angezeigt.

Befehlszeilenoptionen

In der folgenden Tabelle werden die einzelnen Optionen und deren Zweck aufgelistet.

Option

Wertdefinition

Beispiel

Anmerkungen

web

Die vollständige, absolute URL der Website, deren Daten durch die Entitätsklassen modelliert werden.

/web:http://ContosoServer/Marketing

Erforderlich. Sie können im Servernamen auch Portnummern verwenden, z. B. /web:http://ContosoServer:5555/Marketing.

Schließen Sie in die URL nicht die Homepage oder eine andere Seite ein.

code

Der relative oder absolute Pfad und Dateiname der Ausgabedatei.

/code:MarketingSite.cs

Wird diese Option nicht verwendet, so wird der generierte Code in die Standardausgabe gestreamt.

Wird keine Dateinamenerweiterung angegeben, oder lautet die Dateinamenerweiterung weder CS noch VB, dann muss die language-Option verwendet werden.

Der Dateiname (ohne die Erweiterung) bildet auch den Anfang des Namens einer Klasse, die von DataContext abgeleitet wird. Im aktuellen Beispiel heißt die Klasse MarketingSiteDataContext. Die abgeleitete Klasse stellt die Listen und Daten der gesamten Website dar. Wählen Sie deshalb einen Dateinamen aus, der diese Bedeutung erkennen lässt. (Sie können dieses Verhalten bei der Benennung mit einer SPMetal-Parameter-XML-Datei überschreiben.)

language

Die Programmiersprache des generierten Codes.

/language:csharp

Die einzigen möglichen Werte sind "csharp" und "vb".

Hat der Wert der code-Option entweder "cs" oder "vb" als Dateinamenerweiterung, kann SPMetal die Sprache ableiten, und die language-Option wird nicht benötigt.

namespace

Der Namespace, der die Deklarationen der Entitätsklassen enthält.

/namespace:Contoso.TeamActivityReports

Wird diese Option nicht verwendet, gibt der generierte Code keinen Namespace an, und die kompilierte Assembly behandelt den in den Eigenschaften des Visual Studio-Projekts angegebenen Standardnamespace als den Namespace der generierten Klassen.

useremoteapi

Kein Wert.

/useremoteapi

Diese Option zeigt an, dass der Wert des web-Parameters auf einen Server zeigt, der nicht der Server ist, auf dem SPMetal ausgeführt wird. Dieser Parameter kann z. B. zum Generieren von Code für eine Website in einer Onlinebereitstellung von SharePoint verwendet werden, in die Sie Ihre Lösung als Lösung mit eingeschränkter Sicherheitsstufe hochladen möchten.

user

Der Benutzer, in dessen Kontext SPMetal ausgeführt wird.

/user:Contoso\bob

Verwenden Sie diese Option, wenn SPMetal nicht in Ihrem eigenen Kontext ausgeführt werden soll. Geben Sie die Domäne an.

password

Das Kennwort für den in der user-Option angegebenen Benutzer.

/password:$5U+ryz

Verwenden Sie diesen Parameter in Verbindung mit der user-Option.

serialization

Gibt an, ob Objekte, die die generierten Klassen instanziieren, serialisierbar sind.

/serialization:unidirectional

Die einzigen möglichen Werte sind "unidirectional" und "none". Geben Sie "unidirectional" an, wenn die Objekte serialisierbar sein sollen. SPMetal fügt den Klassen- und Eigenschaftendeklarationen geeignete Attribute aus dem System.Runtime.Serialization-Namespace sowie dem Deserialisierungsereignis entsprechende Handler hinzu.

Wird diese Option nicht verwendet, wird "none" angenommen.

parameters

Gibt den Pfad und den Namen einer XML-Datei an, die Überschreibungen von SPMetal-Standardeinstellungen enthält.

/parameters:MarketingSite.xml

In der Regel verwenden Sie für unterschiedliche Websites nicht genau die gleiche Parameter-XML-Datei wieder. Geben Sie daher der Datei den gleichen Namen wie der Website.

Weitere Informationen zur Parameterdatei finden Sie unter Außerkraftsetzen von SPMetal-Standardeinstellungen mit einer Parameter-XML-Datei.

Beispiel

Generieren Sie C#-Code:

SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.cs

Generieren Sie Visual Basic-Code mit benutzerdefinierten Parametereinstellungen:

SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.vb /parameters:MarketingSite.xml

Generieren Sie Visual Basic-Code aus einem angegebenen Benutzerkontext:

SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.vb /user:Contoso\sally /password:7Yj38d

Siehe auch

Aufgaben

Vorgehensweise: Verwenden von SPMetal

Konzepte

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

Entitätsklassen

Standardregeln für die Codegenerierung von SPMetal