Creazione del pacchetto di un provider di attestazioni personalizzate di SharePoint 2010 in un progetto di Visual Studio 2010 per SharePoint
Chi di voi abbia sviluppato soluzioni per SharePoint 2010 con Visual Studio 2010 avrà notato un aspetto piuttosto singolare dei pacchetti in presenza di provider di attestazioni personalizzate. In Visual Studio 2010 è possibile creare una nuova caratteristica e aggiungervi facilmente un ricevitore di eventi di caratteristiche semplicemente facendo clic con il pulsante destro del mouse sulla caratteristica e quindi scegliendo Aggiungi ricevitore di eventi dal menu. Si tratta di un aspetto interessante, in quanto consente di utilizzare in modo facile e produttivo il codice per la soluzione anziché la configurazione. La disconnessione ha luogo in quanto il ricevitore di eventi aggiunto per impostazione predefinita eredita da SPFeatureReceiver. Come sicuramente già saprete, il ricevitore di eventi utilizzato per la registrazione di un provider di attestazioni personalizzate deve ereditare da SPClaimProviderFeatureReceiver (https://blogs.technet.com/b/speschka/archive/2010/03/13/writing-a-custom-claims-provider-for-sharepoint-2010-part-1.aspx). Gli smart object di SharePoint incorporati in Visual Studio non si prestano a modalità realmente intuitive per aggiungere una classe a un progetto di SharePoint 2010 e quindi fare in modo che venga associata a una caratteristica. È comunque disponibile una soluzione piuttosto facile ed efficace a questo scopo.
Mi sono trovato in questa situazione qualche tempo fa, quando ho iniziato dal mio solito punto di partenza, ovvero la scrittura di un provider di attestazioni personalizzate e un ricevitore di caratteristiche corrispondente per installarlo. Queste due classi facevano parte di un singolo progetto. Decisi di impegnarmi davvero a far sì che la nuova funzionalità di creazione di pacchetti di caratteristiche di Visual Studio 2010 risultasse efficace per il mio caso. Di seguito spiego i passaggi necessari.
1. Completate la prima esecuzione nel progetto del provider di attestazioni personalizzate e nel ricevitore di eventi corrispondente per la registrazione, quindi compilatelo. Potreste voler osservare l'assembly compilato e ottenere il nome complesso per l'assembly, nonché il nome di classe per il ricevitore di eventi.
2. Aggiungete un nuovo progetto alla soluzione e basatelo su un modello "Progetto SharePoint vuoto" di SharePoint 2010. Configurate il progetto per la distribuzione come soluzione farm.
3. Fate clic con il pulsante destro del mouse sul nodo Caratteristiche nel progetto e quindi scegliete Aggiungi caratteristica. Per la caratteristica è consigliabile definire Farm come ambito e abilitare l'attivazione automatica. In caso contrario, configurate le proprietà della caratteristica nel modo appropriato per i risultati che desiderate ottenere. Accorgimento importante: configurate queste due proprietà nella caratteristica (nella finestra Proprietà di Visual Studio) come descritto di seguito:
a. Assembly ricevitore: aggiungete all'assembly il nome complesso descritto nel passaggio 1, ad esempio MyClaimProvider.ClaimTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=edb00fee02fa0701
b. Classe ricevitore: aggiungete il nome della classe con cui avete scritto il provider di attestazioni personalizzate nel passaggio 1, ad esempio MyClaimProvider.ClaimTest.MyClaimsFeatureReceiver
4. Aggiungete l'assembly del provider di attestazioni personalizzate compilato all'elenco degli assembly che verrà distribuito dalla vostra soluzione di creazione del pacchetto. A tale scopo, fate doppio clic sul nodo Package.package nel progetto di creazione del pacchetto di Visual Studio. Fate clic sulla scheda Avanzate. Fate clic sul pulsante Aggiungi e quindi sul menu Aggiungi assembly esistente. Individuate la posizione corretta per l'assembly del provider di attestazioni personalizzate compilato e lasciate selezionata (impostazione predefinita) la destinazione di distribuzione GlobalAssemblyCache. Fate clic sul pulsante OK per salvare le modifiche. Sarà quindi possibile chiudere la finestra Proprietà pacchetto. Un aspetto da notare a questo punto è che in genere creo una cartella nel progetto, in cui copio gli assembly compilati da altri progetti che desidero vengano distribuiti con la soluzione. Quando configuro gli assembly aggiuntivi nel pacchetto, mi basta selezionarli dalla cartella creata nel progetto di creazione del pacchetto. Negli altri progetti dispongo di uno script successivo alla compilazione che copia automaticamente l'assembly compilato nella cartella degli assembly nel progetto di creazione del pacchetto. È un'unica semplice riga di codice successivo alla compilazione che copia l'assembly, sia che si tratti di una build di debug o di versione, così che non devo preoccuparmi di farlo io stesso ogni volta. La riga di codice è simile alla seguente:
copy "$(PercorsoDestinazione)" ..\..\..\MyPackagingProject\GacFiles /Y
Il pacchetto è completo. Dovete soltanto compilare il progetto e quindi scegliere Pacchetto dal menu di scelta rapida per il progetto. Otterrete un file WSP che potrete quindi distribuire e configurare in modo da implementare automaticamente il provider di attestazioni personalizzate.
Questo è un post di blog localizzato. Consultate l'articolo originale: Packaging A SharePoint 2010 Custom Claims Provider in a Visual Studio 2010 SharePoint Project