Empacotando um Provedor de Declarações Personalizadas do SharePoint 2010 em um projeto do Sharepoint no Visual Studio 2010
Quem desenvolve soluções para o SharePoint 2010 com o Visual Studio 2010, talvez já tenha notado uma pequena peculiaridade no empacotamento no caso de provedores de declarações personalizadas. No Visual Studio 2010, é possível criar um novo recurso e é muito fácil adicionar um novo receptor de recursos a ele clicando com o botão direito nele e selecionando o menu Adicionar Receptor de Recursos. Isso é muito bom porque é muito fácil e produtivo trabalhar na codificação da solução, em vez de na configuração. A desconexão ocorre porque o receptor de eventos que é adicionado por padrão herda do SPFeatureReceiver. Estou certo que todos já sabem que o receptor de eventos usado para registrar um provedor de declarações personalizadas deve herdar do SPClaimProviderFeatureReceiver (https://blogs.technet.com/b/speschka/archive/2010/03/13/writing-a-custom-claims-provider-for-sharepoint-2010-part-1.aspx). Além disso, os smarts do SharePoint no Visual Studio não se emprestam de maneira muito intuitiva para adicionar somente uma classe a um projeto do SharePoint 2010 e depois a associar a um recurso. No entanto, há uma maneira muito fácil e simples para contornar esse problema.
Eu experimentei isso há algum tempo quando estava começando do ponto de partida habitual; Eu tinha um provedor de declarações personalizadas que havia escrito e um receptor de eventos correspondente para instalá-lo. Essas duas classes faziam parte de um único projeto. Decidi que realmente queria que o empacotamento do novo recurso no Visual Studio 2010 funcionasse para mim, então vejam as etapas.
1. Conclua a primeira execução do projeto do provedor de declarações personalizadas e o receptor de eventos correspondente para registro, e em seguida faça a compilação. Trabalhe no assembly compilado e obtenha o nome forte para o assembly, assim como o nome de classe para o receptor de eventos.
2. Adicione um novo projeto à solução e baseie-o em um template vazio do SharePoint 2010 “Empty SharePoint Project”. Configure o projeto para ser implantado como uma solução de farm.
3. Clique com o botão direito no nó Recursos do projeto e selecione Adicionar Recurso. O recurso deverá receber o escopo de Farm e deverá ativar automaticamente. Caso contrário, configure as propriedades do recurso conforme apropriado para o que você está tentando fazer. O ponto mais importante é configurar essas duas propriedades no recurso (na janela Propriedades do Visual Studio Properties) conforme descrito abaixo:
a. Assembly do receptor: coloque o nome forte no assembly descrito na etapa 1, por exemplo MyClaimProvider.ClaimTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=edb00fee02fa0701
b. Classe do receptor: coloque o nome da classe em que você escreveu o provedor de declarações personalizadas na etapa 1, por exemplo MyClaimProvider.ClaimTest.MyClaimsFeatureReceiver
4. Adicione o assembly do provedor de declarações personalizadas compilado à lista de assemblies que a solução de empacotamento vai implantar. Para fazer isso, clique com o botão direito no nó Package.package do projeto de empacotamento do Visual Studio. Clique na guia Avançado. Clique no botão Adicionar e depois no menu Adicionar Assembly Existente. Encontre o local correto para o assembly do provedor de declarações personalizadas compilado e deixe Destino da Implantação: GlobalAssemblyCache selecionado (opção padrão). Clique no botão OK para salvar as alterações e feche a janela de propriedades Pacote. Uma observação importante: normalmente eu crio uma pasta no meu projeto de empacotamento onde eu copio os assemblies compilados de outros projetos que quero distribuir com a solução. Quando configuro os outros assemblies do Pacote, eu simplesmente seleciono da pasta do meu projeto de empacotamento. Em meus outros projetos, tenho um script pós-criação que copia automaticamente cópias do assembly compilado para essa pasta de assembly do meu projeto de empacotamento. É uma linha simples de pós-construção de código que copia o assembly de um build de depuração ou publicação, então não tenho que me lembrar de fazer isso toda vez. Ele se parece com esse:
copie "$(TargetPath)" ..\..\..\MyPackagingProject\GacFiles /Y
O seu pacote agora está concluído. Você só precisa compilar o projeto do pacote e selecionar o menu Pacote do menu do botão direito do projeto. No final você terá um arquivo WSP que poderá distribuir e lançar automaticamente no seu provedor de declarações personalizadas.
Esta é uma postagem de blog traduzida. O artigo original pode ser encontrado em Packaging A SharePoint 2010 Custom Claims Provider in a Visual Studio 2010 SharePoint Project