Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Те, кто уже разрабатывал решения для SharePoint 2010, используя Visual Studio 2010, могли заметить небольшую особенность упаковки в том, что касается настраиваемых поставщиков утверждений. В Visual Studio 2010 можно создать новый компонент, в который можно легко добавить приемник событий компонента, щелкнув компонент правой кнопкой мыши и выбрав пункт меню "Добавить приемник событий" (Add Event Receiver). Это хорошо, так как позволяет удобно и продуктивно работать над кодированием решения, а не над конфигурацией. Происходит отключение, так как добавляемый приемник событий по умолчанию наследуется от SPFeatureReceiver. Как, я уверен, известно всем читателям, приемник событий, используемый для регистрации настраиваемого поставщика утверждений, должен наследоваться от SPClaimProviderFeatureReceiver (https://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