SPMetal
最終更新日: 2015年3月9日
適用対象: SharePoint Foundation 2010
SPMetal は、Microsoft SharePoint Foundation コンテンツ データベースに対してオブジェクト指向のインターフェイスを提供するエンティティ クラスを生成するコマンド ライン ツールです。このクラスは、基本的に、SharePoint クエリへの LINQ で使用されますが、同時実行競合を解決する、リスト アイテムの追加、削除、変更でも使用されます。また、通常の SharePoint Foundation オブジェクト モデルの代わりに使用してコンテンツを参照することもできます。
このツールは SharePoint Foundation に付属しており、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\BIN に配置されています。
通常、SPMetal は、Microsoft Visual Studio で、ビルド前コマンドとして実行されます。その理由は、開発中に自身の発展を続ける新しいサイト タイプが含まれるソリューションに、SPMetal が生成するコードが含まれていることが多いためです。SPMetal は、実行のたびに、指定された出力パスまたは指定された Web サイトに対して、自身が生成するファイルを上書きするため、このファイルに変更を加えないでください。SPMetal が生成するクラスは partial です。したがって、手動で作成された別のコード ファイルのクラスにメンバーを追加できます。
SharePoint Foundation に付属するチーム サイトのような既存のサイトに基づくソリューションが、そのサイトに常に存在するリストおよびそのリストに常に含まれるフィールド (列) のみを参照する場合、SPMetal を一度だけ実行し、上書きされない生成されたファイルを変更できます。
SPMetal の実用性の詳細については、「[方法] SPMetal を使用する」を参照してください。
基本構文
SPMetal は、Windows コマンド ライン ツールの基本構文を使用します。
SPMetal [options]
各オプションの前にスラッシュを付けます。ほとんどのオプションに値が必要です。値が必要な場合、オプション名の後にコロンを付けて、コロンの後に値を指定します。
SPMetal /option1 /option2:value /option3:"value with a space"
オプションの順序は任意です。すべてのオプションが必要であるとは限りませんが、値をとるオプションを含める場合、そのオプションに値を指定する必要があります。値にスペースが含まれる場合、値全体を引用符 (") で囲む必要があります。
"/?" オプションを使用すると、それだけで、ツールについての簡単なヘルプ情報が標準出力に表示されます。
コマンド ライン オプション
次の表に、各オプションとその目的を示します。
オプション |
値の定義 |
例 |
コメント |
---|---|---|---|
web |
エンティティ クラスによってモデル化されるデータを含む Web サイトの完全な絶対 URL。 |
/web:http://ContosoServer/Marketing |
必須。サーバー名にポート番号を含めることができます。例: /web:http://ContosoServer:5555/Marketing URL にホーム ページまたはその他のページを含めないでください。 |
code |
出力ファイルの相対パスまたは絶対パスおよびファイル名。 |
/code:MarketingSite.cs |
このオプションを使用しない場合、生成されたコードは標準出力に書き出されます。 ファイル名拡張子を指定しない場合、またはファイル名拡張子が "cs" または "vb" のどちらでもない場合は、language オプションを使用する必要があります。 また、ファイル名 (拡張子を除く) を使用して、DataContext から派生するクラスの名前の先頭部が形成されます。この例では、クラスの名前は MarketingSiteDataContext です。派生クラスは Web サイト全体のリストとデータを表します。したがって、その意味を伝えるファイル名を選択します (SPMetal パラメーター XML file を使用してこの名前付け動作を優先できます)。 |
language |
生成されるコードのプログラミング言語 |
/language:csharp |
指定可能な値は、"csharp" と "vb" のみです。 ファイル名の拡張子として code オプションの値に "cs" または "vb" が指定されている場合、SPMetal は言語を推測できるため、language オプションを指定する必要はありません。 |
namespace |
エンティティ クラス宣言を含む名前空間 |
/namespace:Contoso.TeamActivityReports |
このオプションを使用しない場合、生成されるコードでは、名前空間が指定されないため、コンパイル済みアセンブリは、Visual Studio プロジェクトのプロパティに指定された既定の名前空間を、生成されるクラスの名前空間として処理します。 |
useremoteapi |
値なし。 |
/useremoteapi |
このオプションは、web パラメーターの値が、SPMetal を実行しているサーバーではないサーバーを指していることを伝えます。このパラメーターを使用するのは、たとえば、ソリューションをサンドボックス ソリューションとしてアップロードするときのアップロード先である SharePoint のオンライン展開上の Web サイトに対してコードを生成する場合が考えられます。 |
user |
ユーザー。このユーザーのコンテキストで SPMetal が実行されます。 |
/user:Contoso\bob |
自分のコンテキストで SPMetal を実行しない場合に、このオプションを使用します。ドメインを指定します。 |
password |
user オプションに指定したユーザーのパスワード。 |
/password:$5U+ryz |
user オプションと組み合わせて使用します。 |
serialization |
生成されたクラスをインスタンス化するオブジェクトをシリアル化可能とするかどうかを指定します。 |
/serialization:unidirectional |
指定可能な値は、"unidirectional" と "none" のみです。オブジェクトをシリアル化可能とする場合に、"unidirectional" を指定します。SPMetal は、System.Runtime.Serialization 名前空間から適切な属性をクラスとプロパティの各宣言に追加し、逆シリアル化イベント用のハンドラーを追加します。 このオプションを使用しない場合、"none" であると見なされます。 |
parameters |
SPMetal の既定設定を上書きする設定が含まれる XML ファイルのパスと名前を識別します。 |
/parameters:MarketingSite.xml |
通常、異なる Web サイトで、まったく同じパラメーター XML ファイルを再利用することはありません。したがって、ファイルに Web サイトと同じ名前を付けます。 パラメーター ファイルの詳細については、「パラメーター XML ファイルを使用して SPMetal 既定をオーバーライドする」を参照してください。 |
例
C# コードを生成する。
SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.cs
Visual Basic コードとカスタム パラメーター設定を生成する。
SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.vb /parameters:MarketingSite.xml
指定したユーザーのコンテキストから Visual Basic コードを生成する。
SPMetal /web:http://ContosoServer/Marketing /code:MarketingSite.vb /user:Contoso\sally /password:7Yj38d