Упаковка настраиваемого поставщика утверждений SharePoint 2010 в проект Visual Studio 2010 SharePoint

Те, кто уже разрабатывал решения для SharePoint 2010, используя Visual Studio 2010, могли заметить небольшую особенность упаковки в том, что касается настраиваемых поставщиков утверждений. В Visual Studio 2010 можно создать новый компонент, в который можно легко добавить приемник событий компонента, щелкнув компонент правой кнопкой мыши и выбрав пункт меню "Добавить приемник событий" (Add Event Receiver). Это хорошо, так как позволяет удобно и продуктивно работать над кодированием решения, а не над конфигурацией. Происходит отключение, так как добавляемый приемник событий по умолчанию наследуется от SPFeatureReceiver. Как, я уверен, известно всем читателям, приемник событий, используемый для регистрации настраиваемого поставщика утверждений, должен наследоваться от SPClaimProviderFeatureReceiver (http://blogs.technet.com/b/speschka/archive/2010/03/13/writing-a-custom-claims-provider-for-sharepoint-2010-part-1.aspx). Кроме того, встроенные интеллектуальные элементы SharePoint в Visual Studio не приспособлены к действительно интуитивно понятному способу, которым является простое добавление класса в проект SharePoint 2010 и последующее связывание этого класса с компонентом. Но есть достаточно простой и ловкий способ обойти эту проблему.

Я прошел этот путь некоторое время назад, когда начал со своей обычной стартовой точки – у меня был написанный мной настраиваемый поставщик утверждений и соответствующий приемник компонентов, в который его нужно установить. Эти два класса были частью одного проекта. Я решил, что фактически мне нужно приклеить новую упаковку компонентов в мою среду Visual Studio 2010, поэтому вот что я сделал.

1. Выполните первый прогон для своего проекта настраиваемого поставщика утверждений и соответствующего приемника событий для регистрации, затем скомпилируйте его. Нужно взглянуть на компилированную сборку и получить строгое имя для сборки, а также имя класса для приемника событий.

2. Добавьте новый проект в свое решение, использовав в качестве его основы шаблон SharePoint 2010 “Пустой проект SharePoint”. Настройте проект, чтобы он развертывался как решение для фермы.

3. Щелкните в проекте правой кнопкой мыши узел "Компоненты" (Features) и выберите команду "Добавить компонент" (Add Feature). Созданный компонент должен быть встроен в ферму и автоматически активирован. В противном случае настройте свойства компонента соответствующим образом для предпринимаемого действия. Важный момент – настройте следующие два свойства компонента (в окне "Свойства" (Properties) Visual Studio) описанным образом:

a. Сборка приемника: введите строгое имя для сборки, описанное в шаге №1, например MyClaimProvider.ClaimTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=edb00fee02fa0701

b. Класс приемника: введите имя класса, присвоенное настраиваемому поставщику утверждений в шаге №1, например MyClaimProvider.ClaimTest.MyClaimsFeatureReceiver

4. Добавьте компилированную сборку настраиваемого поставщика утверждений в список сборок, которые будет развертывать упакованное решение. Для этого дважды щелкните узел "Пакет.пакет" (Package.package) в проекте упаковки Visual Studio. Щелкните вкладку "Дополнительно" (Advanced). Нажмите кнопку "Добавить" (Add), а затем выберите пункт "Добавить существующую сборку" (Add Existing Assembly). Найдите правильное место для своей компилированной сборки настраиваемого поставщика утверждений и оставьте установленным флажок "Цель развертывания: глобальный кэш сборок" (Deployment Target: GlobalAssemblyCache) (он установлен по умолчанию). Нажмите кнопку "ОК", чтобы сохранить свои изменения, а затем окно свойств пакета можно закрыть. Здесь нужно отметить один момент – я обычно просто создаю в своем проекте упаковки папку, куда я копирую из других проектов свои компилированные сборки, которые должны распространяться с этим решением. При настройке дополнительных сборок в пакете я просто выбираю их из папки в моем проекте упаковки. В других своих проектах я использую вызываемый после построения скрипт, который автоматически копирует компилированную сборку в эту папку сборок в моем проекте упаковки. Всего одна простая строка кода в скрипте, выполняемом после построения, копирует сборку, как при построении для отладки, так и при окончательном построении, поэтому мне не нужно заботиться о выполнении этого действия каждый раз вручную. Она выглядит примерно так:

copy "$(TargetPath)" ..\..\..\MyPackagingProject\GacFiles /Y

Ваш пакет готов. Нужно только скомпилировать проект пакета, а затем выбрать пункт "Пакет" (Package) в контекстом меню проекта. Будет создан WSP-файл, который затем можно распространять и который будет автоматически развертывать созданный настраиваемый поставщик утверждений.

Это локализованная запись блога. Исходная статья доступна по адресу: Packaging A SharePoint 2010 Custom Claims Provider in a Visual Studio 2010 SharePoint Project