次の方法で共有


方法: SharePoint ソリューションのフィーチャーとパッケージのカスタム検証規則を作成する

Visual Studio で生成されたソリューション パッケージを検証するために、カスタム検証規則を作成できます。 パッケージング エクスプローラーでパッケージまたはフィーチャーのコンテキスト メニューの [検証] をクリックすると、フィーチャーまたはパッケージの全体に対する完全検証を実行できます。 新しい SharePoint プロジェクト項目またはフィーチャーをプロジェクトに追加する場合に、パッケージまたはフィーチャーが有効な状態になるかどうかを確認するには、部分検証を実行します。

カスタムのパッケージ検証規則を作成するには

  1. クラス ライブラリ プロジェクトを作成します。

  2. 次のアセンブリへの参照を追加します。

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

  3. 次のいずれかのインターフェイスを実装するクラスを作成します。

    • パッケージ検証規則を作成するには、IPackageValidationRule インターフェイスを実装します。

    • フィーチャー検証規則を作成するには、IFeatureValidationRule インターフェイスを実装します。

  4. クラスに System.ComponentModel.Composition.ExportAttribute を追加します。 この属性によって、Visual Studio で検証規則を検出し、読み込むことができます。 この属性のコンストラクターに IPackageValidationRule 型または IFeatureValidationRule 型を渡します。

次のコード例は、カスタムのフィーチャー検証規則を作成する方法を示しています。

Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Validation
Imports System.ComponentModel.Composition

<Export(GetType(IFeatureValidationRule))> _
Public Class CustomFeatureValidationRule
    Implements IFeatureValidationRule

    Public Sub ValidateFeature(ByVal context As IFeatureValidationContext) _
        Implements IFeatureValidationRule.ValidateFeature
        For Each projectItem In context.Feature.ProjectItems
            ValidateProjectItem(context, projectItem)
        Next projectItem
    End Sub

    Public Sub ValidateProjectItem(ByVal context As IFeatureValidationContext, _
        ByVal projectItem As ISharePointProjectItem) _
        Implements IFeatureValidationRule.ValidateProjectItem
        If projectItem.Name = "" Then
            context.RuleViolations.Add( _
                "CustomFeatureValidationRule001", _
                ValidationRuleViolationSeverity.Warning, _
                "SharePoint project items must have a name.")
        End If
    End Sub
End Class
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Validation;
using System.ComponentModel.Composition;

namespace Extension
{
    [Export(typeof(IFeatureValidationRule))]
    internal class CustomFeatureValidationRule : IFeatureValidationRule
    {
        public void ValidateFeature(IFeatureValidationContext context)
        {
            foreach (var projectItem in context.Feature.ProjectItems)
            {
                ValidateProjectItem(context, projectItem);
            }
        }

        public void ValidateProjectItem(
            IFeatureValidationContext context,
            ISharePointProjectItem projectItem)
        {
            if (projectItem.Name == "")
            {
                context.RuleViolations.Add(
                    "CustomFeatureValidationRule001",
                    ValidationRuleViolationSeverity.Warning,
                    "SharePoint project items must have a name.");
            }
        }
    }
}

コードのコンパイル

この例は、次のアセンブリへの参照を必要とします。

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

拡張機能の配置

拡張機能を配置するには、アセンブリと、拡張機能に同梱する必要のあるその他のファイルを提供するための Visual Studio Extension (VSIX) パッケージを作成します。 詳細については、「Visual Studio での SharePoint ツールの拡張機能の配置」を参照してください。

参照

その他の技術情報

SharePoint のパッケージ化と配置の拡張