Procedura dettagliata: creazione di un passaggio di distribuzione personalizzato per progetti SharePoint
Quando si distribuisce un progetto SharePoint, Visual Studio 2010 esegue una serie di passaggi di distribuzione in un ordine specifico. Visual Studio include molti passaggi di distribuzione incorporati, tuttavia è possibile crearne di personalizzati.
In questa procedura dettagliata si creerà un passaggio di distribuzione personalizzato per aggiornare soluzioni in un server SharePoint. In Visual Studio sono inclusi passaggi di distribuzione incorporati per molte attività, ad esempio la ritrazione o l'aggiunta di soluzioni, ma non per l'aggiornamento. Per impostazione predefinita, quando si distribuisce una soluzione SharePoint, Visual Studio innanzitutto ritrae la soluzione (se è già stata distribuita), quindi la ridistribuisce per intero. Per ulteriori informazioni sui passaggi di distribuzione incorporati, vedere Distribuzione di pacchetti delle soluzioni SharePoint.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Creazione di un'estensione di Visual Studio che esegue due attività principali:
Definisce un passaggio di distribuzione personalizzato per aggiornare le soluzioni SharePoint.
Crea un'estensione di progetto che definisce una nuova configurazione di distribuzione. Una configurazione di distribuzione è un set di passaggi di distribuzione eseguito per un progetto specifico. La nuova configurazione di distribuzione include il passaggio di distribuzione personalizzato e molti passaggi di distribuzione incorporati.
Creazione di due comandi di SharePoint personalizzati chiamati dall'assembly delle estensioni. I comandi di SharePoint sono metodi che possono essere chiamati dagli assembly delle estensioni per utilizzare le API nel modello a oggetti del server SharePoint. Per ulteriori informazioni, vedere Chiamate ai modelli a oggetti di SharePoint.
Compilazione di un pacchetto Visual Studio Extension (VSIX) per distribuire entrambi gli assembly.
Test del nuovo passaggio di distribuzione.
Prerequisiti
Per completare la procedura dettagliata, nel computer di sviluppo devono essere presenti i componenti elencati di seguito:
Edizioni supportate di Microsoft Windows, SharePoint e Visual Studio. Per ulteriori informazioni, vedere Requisiti per lo sviluppo di soluzioni SharePoint.
Campo Visual Studio 2010 SDK. In questa procedura dettagliata viene utilizzato il modello VSIX Project di SDK per creare un pacchetto VSIX e distribuire l'estensione. Per ulteriori informazioni, vedere Estensione degli strumenti di SharePoint in Visual Studio.
Per completare la procedura dettagliata è consigliabile conoscere i concetti riportati di seguito:
Utilizzo del modello a oggetti del server SharePoint. Per ulteriori informazioni, vedere l'articolo relativo all'utilizzo del modello a oggetti lato server di SharePoint Foundation (la pagina potrebbe essere in inglese).
Soluzioni SharePoint. Per ulteriori informazioni, vedere Cenni preliminari sulle soluzioni (la pagina potrebbe essere in inglese).
Aggiornamento delle soluzioni SharePoint. Per ulteriori informazioni, vedere l'articolo relativo all'aggiornamento di una soluzione (la pagina potrebbe essere in inglese).
Creazione dei progetti
Per completare questa procedura dettagliata è necessario creare tre progetti:
Un progetto VSIX per creare il pacchetto VSIX allo scopo di distribuire l'estensione.
Un progetto Libreria di classi che implementa l'estensione. Questo progetto deve essere destinato a .NET Framework 4.
Un progetto Libreria di classi che definisce i comandi di SharePoint personalizzati. Questo progetto deve essere destinato a .NET Framework 3.5.
Iniziare la procedura dettagliata creando i progetti.
Per creare il progetto VSIX
Avviare Visual Studio.
Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Nella finestra di dialogo Nuovo progetto espandere i nodi Visual C# o Visual Basic, quindi fare clic su Extensibility.
Nota
Il nodo Extensibility è disponibile solo se si installa Visual Studio 2010 SDK. Per ulteriori informazioni, vedere la sezione dei prerequisiti riportata in precedenza.
Selezionare .NET Framework 4 dalla casella combinata nella parte superiore della finestra di dialogo.
Scegliere il modello VSIX Project.
Nella casella Nome digitare UpgradeDeploymentStep.
Scegliere OK.
Visual Studio aggiunge il progetto UpgradeDeploymentStep a Esplora soluzioni.
Per creare il progetto di estensione
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, scegliere Aggiungi, quindi Nuovo progetto.
Nota
Nei progetti di Visual Basic, il nodo della soluzione viene visualizzato in Esplora soluzioni solo quando la casella di controllo Mostra sempre soluzione viene selezionata in Finestra di dialogo Opzioni, Progetti e soluzioni, Generale.
Nella finestra di dialogo Nuovo progetto espandere i nodi Visual C# o Visual Basic, quindi fare clic su Windows.
Selezionare .NET Framework 4 dalla casella combinata nella parte superiore della finestra di dialogo.
Selezionare il modello di progetto Libreria di classi.
Nella casella Nome digitare DeploymentStepExtension.
Fare clic su OK.
In Visual Studio il progetto DeploymentStepExtension viene aggiunto alla soluzione e viene aperto il file di codice predefinito Class1.
Eliminare il file di codice Class1 dal progetto.
Per creare il progetto di comandi di SharePoint
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, selezionare Aggiungi, quindi Nuovo progetto.
Nota
Nei progetti di Visual Basic, il nodo della soluzione viene visualizzato in Esplora soluzioni solo quando la casella di controllo Mostra sempre soluzione viene selezionata in Finestra di dialogo Opzioni, Progetti e soluzioni, Generale.
Nella finestra di dialogo Aggiungi nuovo progetto espandere Visual C# o Visual Basic, quindi fare clic su Windows.
Fare clic sul modello di progetto Libreria di classi.
Selezionare .NET Framework 3.5 dalla casella combinata nella parte superiore della finestra di dialogo.
Nella casella Nome digitare SharePointCommands.
Scegliere OK.
Visual Studio aggiunge il progetto SharePointCommands alla soluzione e apre il file di codice predefinito Class1.
Eliminare il file di codice Class1 dal progetto.
Configurazione dei progetti
Prima di scrivere codice per creare il passaggio di distribuzione personalizzato, è necessario aggiungere file di codice e riferimenti all'assembly, nonché configurare i progetti.
Per configurare il progetto DeploymentStepExtension
Nel progetto DeploymentStepExtension aggiungere due file di codice denominati:
UpgradeStep
DeploymentConfigurationExtension
Scegliere Aggiungi riferimento dal menu Progetto.
Nella scheda .NET premere CTRL e selezionare gli assembly seguenti, quindi fare clic su OK:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Per configurare il progetto SharePointCommands
Nel progetto SharePointCommands aggiungere un file di codice denominato Commands.
In Esplora soluzioni fare clic sul nodo del progetto SharePointCommands.
Scegliere Aggiungi riferimento dal menu Progetto.
Nella scheda .NET premere CTRL e selezionare gli assembly seguenti, quindi fare clic su OK:
Microsoft.SharePoint
Microsoft.VisualStudio.SharePoint.Commands
Definizione del passaggio di distribuzione personalizzato
Creare una classe che definisce il passaggio di distribuzione dell'aggiornamento. Per definire il passaggio di distribuzione, la classe implementa l'interfaccia IDeploymentStep. Implementare questa interfaccia quando si desidera definire un passaggio di distribuzione personalizzato.
Per definire il passaggio di distribuzione personalizzato
Nel progetto DeploymentStepExtension fare doppio clic sul file di codice UpgradeStep.
Incollare il codice riportato di seguito in questo file.
Nota
Dopo aver aggiunto questo codice, il progetto presenterà alcuni errori di compilazione che scompariranno quando si aggiunge codice nei passaggi successivi.
Imports System Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Deployment Imports System.ComponentModel.Composition Namespace Contoso.DeploymentSteps.Upgrade ' Export attribute: Enables Visual Studio to discover and load this deployment step. ' DeploymentStep attribute: Specifies the ID for this new deployment step. ' UpgradeStep class: Defines a new deployment step that can be used to upgrade a solution ' on a SharePoint site. <Export(GetType(IDeploymentStep))> _ <DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")> _ Friend Class UpgradeStep Implements IDeploymentStep Private solutionName As String Private solutionFullPath As String Private Sub Initialize(ByVal stepInfo As IDeploymentStepInfo) _ Implements IDeploymentStep.Initialize stepInfo.Name = "Upgrade solution" stepInfo.StatusBarMessage = "Upgrading solution..." stepInfo.Description = "Upgrades the solution on the local machine." End Sub ' Specifies whether the solution can be upgraded. Private Function CanExecute(ByVal context As IDeploymentContext) As Boolean _ Implements IDeploymentStep.CanExecute ' SharePoint returns all the installed solutions names in lower case. solutionName = (context.Project.Package.Model.Name & ".wsp").ToLower() solutionFullPath = context.Project.Package.OutputPath Dim solutionExists As Boolean = _ context.Project.SharePointConnection.ExecuteCommand(Of String, Boolean)( "Contoso.Commands.IsSolutionDeployed", solutionName) ' Throw exceptions in error cases because deployment cannot proceed. If context.Project.IsSandboxedSolution = True Then Dim sandboxMessage As String = "Cannot upgrade the solution. Upgrade deployment " & _ "configuration does not support Sandboxed solutions." context.Logger.WriteLine(sandboxMessage, LogCategory.Error) Throw New InvalidOperationException() ElseIf solutionExists = False Then Dim notDeployedMessage As String = String.Format("Cannot upgrade the solution. The IsSolutionDeployed " & _ "command cannot find the following solution on the SharePoint site: {0}.", solutionName) context.Logger.WriteLine(notDeployedMessage, LogCategory.Error) Throw New InvalidOperationException(notDeployedMessage) End If ' Execute step and continue with deployment. Return True End Function Private Sub Execute(ByVal context As IDeploymentContext) _ Implements IDeploymentStep.Execute context.Logger.WriteLine("Upgrading solution: " & solutionName, LogCategory.Status) context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", _ solutionFullPath) End Sub End Class End Namespace
using System; using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Deployment; using System.ComponentModel.Composition; namespace Contoso.DeploymentSteps.Upgrade { // Enables Visual Studio to discover and load this deployment step. [Export(typeof(IDeploymentStep))] // Specifies the ID for this new deployment step. [DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")] // Defines a new deployment step that can be used to upgrade a solution on a SharePoint site. internal class UpgradeStep : IDeploymentStep { private string solutionName; private string solutionFullPath; // Implements IDeploymentStep.Initialize. public void Initialize(IDeploymentStepInfo stepInfo) { stepInfo.Name = "Upgrade solution"; stepInfo.StatusBarMessage = "Upgrading solution..."; stepInfo.Description = "Upgrades the solution on the local machine."; } // Implements IDeploymentStep.CanExecute. Specifies whether the solution can be upgraded. public bool CanExecute(IDeploymentContext context) { // SharePoint returns all the installed solutions names in lower case. solutionName = (context.Project.Package.Model.Name + ".wsp").ToLower(); solutionFullPath = context.Project.Package.OutputPath; bool solutionExists = context.Project.SharePointConnection.ExecuteCommand<string, bool>( "Contoso.Commands.IsSolutionDeployed", solutionName); // Throw exceptions in error cases because deployment cannot proceed. if (context.Project.IsSandboxedSolution) { string sandboxMessage = "Cannot upgrade the solution. The upgrade deployment configuration " + "does not support Sandboxed solutions."; context.Logger.WriteLine(sandboxMessage, LogCategory.Error); throw new InvalidOperationException(sandboxMessage); } else if (!solutionExists) { string notDeployedMessage = string.Format("Cannot upgrade the solution. The IsSolutionDeployed " + "command cannot find the following solution: {0}.", solutionName); context.Logger.WriteLine(notDeployedMessage, LogCategory.Error); throw new InvalidOperationException(notDeployedMessage); } // Execute step and continue with deployment. return true; } // Implements IDeploymentStep.Execute. public void Execute(IDeploymentContext context) { context.Logger.WriteLine("Upgrading solution: " + solutionName, LogCategory.Status); context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", solutionFullPath); } } }
Creazione di una configurazione di distribuzione che include il passaggio di distribuzione personalizzato
Creare un'estensione di progetto per la nuova configurazione di distribuzione. La configurazione di distribuzione include diversi passaggi di distribuzione incorporati e il nuovo passaggio di distribuzione dell'aggiornamento. Questa configurazione di distribuzione consente agli sviluppatori di SharePoint di utilizzare facilmente il passaggio di distribuzione dell'aggiornamento nei progetti SharePoint.
Per creare la configurazione di distribuzione, la classe implementa l'interfaccia ISharePointProjectExtension. Implementare questa interfaccia quando si desidera creare un'estensione di progetto SharePoint.
Per creare la configurazione di distribuzione
Nel progetto DeploymentStepExtension fare doppio clic sul file di codice DeploymentConfigurationExtension.
Incollare il codice riportato di seguito in questo file.
Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Deployment Imports System.ComponentModel.Composition Namespace Contoso.DeploymentSteps.Upgrade ' Export attribute: Enables Visual Studio to discover and load this project-level extension. ' DeploymentConfigurationExtension class: Defines a project-level extension. The extension creates ' a new deployment configuration that includes the upgrade deployment step. <Export(GetType(ISharePointProjectExtension))> _ Friend Class DeploymentConfigurationExtension Implements ISharePointProjectExtension Private Sub Initialize(ByVal projectService As ISharePointProjectService) _ Implements ISharePointProjectExtension.Initialize AddHandler projectService.ProjectInitialized, AddressOf ProjectInitialized End Sub ' Creates the new deployment configuration. Private Sub ProjectInitialized(ByVal Sender As Object, ByVal e As SharePointProjectEventArgs) Dim deploymentSteps As String() = New String() _ { DeploymentStepIds.PreDeploymentCommand, _ DeploymentStepIds.RecycleApplicationPool, _ "Contoso.DeploymentSteps.UpgradeSolution", _ DeploymentStepIds.PostDeploymentCommand _ } Dim retractionSteps As String() = New String() _ { DeploymentStepIds.RecycleApplicationPool, _ DeploymentStepIds.RetractSolution } Dim configuration As IDeploymentConfiguration = e.Project.DeploymentConfigurations.Add( _ "Upgrade", deploymentSteps, retractionSteps) configuration.Description = "This is the upgrade deployment configuration" End Sub End Class End Namespace
using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Deployment; using System.ComponentModel.Composition; namespace Contoso.DeploymentSteps.Upgrade { // Enables Visual Studio to discover and load this project-level extension. [Export(typeof(ISharePointProjectExtension))] // Defines a project-level extension. The extension creates a new deployment configuration that includes the // upgrade deployment step. internal class DeploymentConfigurationExtension : ISharePointProjectExtension { // Implements ISharePointProjectExtension.Initialize. public void Initialize(ISharePointProjectService projectService) { projectService.ProjectInitialized += ProjectInitialized; } // Creates the new deployment configuration. private void ProjectInitialized(object sender, SharePointProjectEventArgs e) { string[] deploymentSteps = new string[] { DeploymentStepIds.PreDeploymentCommand, DeploymentStepIds.RecycleApplicationPool, "Contoso.DeploymentSteps.UpgradeSolution", DeploymentStepIds.PostDeploymentCommand }; string[] retractionSteps = new string[] { DeploymentStepIds.RecycleApplicationPool, DeploymentStepIds.RetractSolution }; IDeploymentConfiguration configuration = e.Project.DeploymentConfigurations.Add( "Upgrade", deploymentSteps, retractionSteps); configuration.Description = "This is the upgrade deployment configuration"; } } }
Creazione di comandi personalizzati di SharePoint
Creare due comandi personalizzati che eseguono una chiamata nel modello a oggetti del server SharePoint. Un comando determina se una soluzione è già distribuita, l'altro aggiorna una soluzione.
Per definire i comandi di SharePoint
Nel progetto SharePointCommands fare doppio clic sul file di codice Commands.
Incollare il codice riportato di seguito in questo file.
Imports System Imports System.IO Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Administration Imports Microsoft.VisualStudio.SharePoint.Commands Namespace Contoso.DeploymentSteps.Upgrade Friend Class Commands ' Determines whether the specified solution has been deployed to the local SharePoint server. <SharePointCommand("Contoso.Commands.IsSolutionDeployed")> _ Private Function IsSolutionDeployed(ByVal context As ISharePointCommandContext, ByVal solutionName As String) As Boolean Dim solution As SPSolution = SPFarm.Local.Solutions(solutionName) Return solution IsNot Nothing End Function ' Upgrades the specified solution to the local SharePoint server. <SharePointCommand("Contoso.Commands.UpgradeSolution")> _ Private Sub UpgradeSolution(ByVal context As ISharePointCommandContext, ByVal fullWspPath As String) Dim solution As SPSolution = SPFarm.Local.Solutions(Path.GetFileName(fullWspPath)) If solution Is Nothing Then Throw New InvalidOperationException("The solution has not been deployed.") End If solution.Upgrade(fullWspPath) End Sub End Class End Namespace
using System; using System.IO; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; using Microsoft.VisualStudio.SharePoint.Commands; namespace Contoso.DeploymentSteps.Upgrade { internal class Commands { // Determines whether the specified solution has been deployed to the local SharePoint server. [SharePointCommand("Contoso.Commands.IsSolutionDeployed")] private bool IsSolutionDeployed(ISharePointCommandContext context, string solutionName) { SPSolution solution = SPFarm.Local.Solutions[solutionName]; return solution != null; } // Upgrades the specified solution to the local SharePoint server. [SharePointCommand("Contoso.Commands.UpgradeSolution")] private void UpgradeSolution(ISharePointCommandContext context, string fullWspPath) { SPSolution solution = SPFarm.Local.Solutions[Path.GetFileName(fullWspPath)]; if (solution == null) { throw new InvalidOperationException("The solution has not been deployed."); } solution.Upgrade(fullWspPath); } } }
Verifica
In questa fase della procedura dettagliata, tutto il codice per il passaggio di distribuzione personalizzato e i comandi di SharePoint si trovano nei progetti. Compilare la soluzione per assicurarsi che entrambi i progetti vengano compilati senza errori.
Per compilare la soluzione
- Scegliere Compila soluzione dal menu Compila.
Creazione di un pacchetto VSIX per distribuire l'estensione
Per distribuire l'estensione, utilizzare il progetto VSIX nella soluzione per creare un pacchetto VSIX. Anzitutto, configurare il pacchetto VSIX modificando il file source.extension.vsixmanifest incluso nel progetto VSIX. Quindi, creare il pacchetto VSIX compilando la soluzione.
Per configurare e creare il pacchetto VSIX
In Esplora soluzioni fare doppio clic sul file source.extension.vsixmanifest nel progetto UpgradeDeploymentStep.
Visual Studio consente di aprire il file nell'editor del manifesto. Il file source.extension.vsixmanifest è la base del file extension.vsixmanifest richiesto da tutti i pacchetti VSIX. Per ulteriori informazioni su questo file, vedere VSIX Extension Schema Reference.
Nella casella Nome prodotto digitare Upgrade Deployment Step for SharePoint Projects.
Nella casella Autore digitare Contoso.
Nella casella Descrizione digitare Provides a custom upgrade deployment step that can be used in SharePoint projects.
Nella sezione Contenuto dell'editor fare clic sul pulsante Aggiungi contenuto.
Nella finestra di dialogo Aggiungi contenuto selezionare Componente MEF nella casella di riepilogo Seleziona un tipo di contenuto.
Nota
Questo valore corrisponde all'elemento MefComponent del file extension.vsixmanifest. Questo elemento specifica il nome di un assembly dell'estensione nel pacchetto VSIX. Per ulteriori informazioni, vedere MEFComponent Element (VSX Schema).
In Selezionare un'origine fare clic sul pulsante di opzione Progetto e selezionare DeploymentStepExtension nella casella di riepilogo accanto.
Fare clic su OK.
Nell'editor del manifesto fare nuovamente clic sul pulsante Aggiungi contenuto.
Nella finestra di dialogo Aggiungi contenuto selezionare Tipo di estensione personalizzata nella casella di riepilogo Seleziona un tipo di contenuto.
Nota
Questo valore corrisponde all'elemento CustomExtension del file extension.vsixmanifest. Questo elemento specifica un'estensione personalizzata che si desidera includere nell'estensione di Visual Studio. Per ulteriori informazioni, vedere CustomExtension Element (VSX Schema).
Nella casella di testo Tipo digitare SharePoint.Commands.v4.
Nota
Questo valore corrisponde all'attributo Type dell'elemento CustomExtension del file extension.vsixmanifest. Il valore Sharepoint.Commands.v4 è richiesto per tutti gli assembly delle estensioni personalizzate che contengono i comandi di SharePoint.
In Selezionare un'origine fare clic sul pulsante di opzione Progetto e selezionare SharePointCommands nella casella di riepilogo accanto.
Fare clic su OK.
Scegliere Compila soluzione dal menu Compila. Assicurarsi che la soluzione venga compilata correttamente.
Aprire la cartella di output di compilazione per il progetto UpgradeDeploymentStep. Assicurarsi che questa cartella adesso contenga il file UpgradeDeploymentStep.vsix.
Per impostazione predefinita, la cartella dell'output di compilazione è .. \bin\Debug sotto la cartella che contiene il file di progetto.
Preparazione del test del passaggio di distribuzione dell'aggiornamento
Per testare il passaggio di distribuzione dell'aggiornamento, è necessario innanzitutto distribuire una soluzione di esempio al sito di SharePoint. Innanzitutto, avviare il debug dell'estensione nell'istanza sperimentale di Visual Studio. Successivamente, creare una definizione e un'istanza di elenco da utilizzare per il test del passaggio di distribuzione, quindi distribuirle al sito di SharePoint. Successivamente, modificare la definizione e l'istanza di elenco e ridistribuirle per vedere il modo in cui il processo di distribuzione predefinito sovrascrive le soluzioni sul sito di SharePoint.
In un passaggio successivo di questa procedura dettagliata, la definizione e l'istanza di elenco verranno modificate e aggiornate sul sito di SharePoint.
Per avviare il debug dell'estensione
Riavviare Visual Studio con privilegi di amministratore e aprire la soluzione UpgradeDeploymentStep.
Nel progetto DeploymentStepExtension aprire il file di codice UpgradeStep e aggiungere un punto di interruzione alla prima riga di codice nei metodi CanExecute e Execute.
Premere F5 per avviare il debug.
In Visual Studio i file di estensione vengono installati in %UserProfile%\Dati applicazione\Locale\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Upgrade Deployment Step for SharePoint Projects\1.0 e viene avviata un'istanza sperimentale di Visual Studio. Il passaggio di distribuzione dell'aggiornamento verrà testato in questa istanza di Visual Studio.
Per creare la definizione e l'istanza di elenco
Nell'istanza sperimentale di Visual Studio scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Nella finestra di dialogo Nuovo progetto espandere Visual C#, SharePoint, quindi fare clic su 2010.
Assicurarsi che nella casella combinata nella parte superiore della finestra di dialogo sia selezionata l'opzione .NET Framework 3.5. I progetti per Microsoft SharePoint Foundation 2010 e Microsoft SharePoint Server 2010 richiedono questa versione di .NET Framework.
Nell'elenco dei modelli di progetto fare clic su Definizione di elenco.
Nella casella Nome digitare EmployeesListDefinition.
Scegliere OK.
In Personalizzazione guidata SharePoint digitare l'URL del sito che si desidera utilizzare per il debug.
In Selezionare il livello di attendibilità per la soluzione SharePoint fare clic su Distribuisci come soluzione farm.
Nota
Il passaggio di distribuzione dell'aggiornamento non supporta le soluzioni create mediante sandbox.
Fare clic su Avanti.
Nella pagina Scegliere le impostazioni di definizione dell'elenco, sotto Selezionare il nome visualizzato della definizione di elenco, digitare Employees List.
In Selezionare il tipo della definizione di elenco selezionare Contatti.
Assicurarsi che la casella di controllo Aggiungi un'istanza di elenco per la definizione di elenco sia selezionata.
Scegliere Fine.
Visual Studio crea il progetto e apre il file Elements.xml per la definizione di elenco nell'editor.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto EmployeesListDefinition, quindi scegliere Proprietà.
Nella scheda SharePoint delle proprietà del progetto deselezionare la casella di controllo Ritrazione automatica dopo il debug.
In Esplora soluzioni espandere il nodo ListDefinition1 e il nodo figlio ListInstance1.
Fare doppio clic sul file Elements.xml che è un elemento figlio del nodo ListInstance1. Il file Elements.xml si apre nell'editor.
Sostituire il codice XML predefinito in questo file con il seguente codice XML. Questo codice XML modifica il nome dell'elenco in Employees. Inoltre, aggiunge un elemento per un dipendente chiamato Jim Hance.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <ListInstance Title="Employees" OnQuickLaunch="TRUE" TemplateType="10000" Url="Lists/Employees" Description="Simple list to test upgrade deployment step"> <Data> <Rows> <Row> <Field Name="Title">Hance</Field> <Field Name="FirstName">Jim</Field> <Field Name="Company">Contoso</Field> </Row> </Rows> </Data> </ListInstance> </Elements>
Per distribuire la definizione e l'istanza di elenco
In Esplora soluzioni fare clic sul nodo del progetto EmployeesListDefinition.
Nella finestra Proprietà assicurarsi che la proprietà Configurazione distribuzione attiva sia impostata su Predefinita.
Premere F5.
Verificare che il progetto venga compilato correttamente, il sito di SharePoint si apra con il nuovo elenco Employees e che tale elenco includa una voce per Jim Hance.
Chiudere il browser Web.
Per modificare e ridistribuire la definizione e l'istanza di elenco
Nel progetto EmployeesListDefinition fare doppio clic sul file Elements.xml che è un elemento figlio dell'elemento del progetto ListInstance1.
Rimuovere l'elemento Data e i relativi figli per rimuovere la voce per Jim Hance dall'elenco. Al termine, il file deve contenere il seguente codice XML.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <ListInstance Title="Employees" OnQuickLaunch="TRUE" TemplateType="10000" Url="Lists/Employees" Description="Simple list to test upgrade deployment step"> </ListInstance> </Elements>
Fare doppio clic sul file Schema.xml che è un elemento figlio dell'elemento del progetto ListDefinition1.
Cercare la stringa BaseViewID="1" nel file. Questa stringa è un attributo di un elemento View che verrà modificato nei passaggi successivi.
In questo elemento View individuare l'elemento figlio ViewFields.
Nell'elemento ViewFields rimuovere i due elementi figlio FieldRef il cui attributo Name è impostato su Attachments e HomePhone. Tale azione consente di rimuovere questi campi dalla visualizzazione predefinita dell'elenco Employees sul sito di SharePoint. Al termine, il contenuto dell'elemento ViewFields deve essere il seguente.
<ViewFields> <FieldRef Name="LinkTitle" /> <FieldRef Name="FirstName" /> <FieldRef Name="Company" /> <FieldRef Name="WorkPhone" /> <FieldRef Name="Email" /> </ViewFields>
Premere F5. Verificare che venga visualizzata la finestra di dialogo Conflitti di distribuzione. Questa finestra di dialogo viene visualizzata quando Visual Studio tenta di distribuire una soluzione (l'istanza di elenco) a un sito di SharePoint che dispone già di questa soluzione.
Più avanti nella procedura dettagliata si noterà che questa finestra di dialogo non viene visualizzata quando si esegue il passaggio di distribuzione dell'aggiornamento.
Fare clic su Risolvi automaticamente. Visual Studio consente di eliminare l'istanza di elenco sul sito di SharePoint, distribuire l'elemento dell'elenco nel progetto, quindi aprire il sito di SharePoint con l'elenco Employees.
Verificare i seguenti dettagli:
Le colonne Allegati e Telefono abitazione non vengono visualizzate in questa visualizzazione dell'elenco.
L'elenco ora è vuoto. Quando è stata utilizzata la configurazione di distribuzione Predefinita per ridistribuire la soluzione, l'elenco Employees è stato sostituito con il nuovo elenco vuoto nel progetto.
Test del passaggio di distribuzione
È ora possibile testare il passaggio di distribuzione dell'aggiornamento. Innanzitutto, aggiungere un elemento all'istanza di elenco in SharePoint. Successivamente, modificare la definizione e l'istanza di elenco e aggiornarle sul sito di SharePoint per verificare che il passaggio di distribuzione dell'aggiornamento non sovrascriva il nuovo elemento.
Per aggiungere manualmente un elemento all'elenco
Nella barra multifunzione del sito di SharePoint fare clic sulla scheda Elementi.
Nel gruppo Nuovo fare clic su Nuovo elemento.
Nel campo Cognome digitare Ruth.
Nel campo Nome digitare Andy.
Nel campo Società digitare Contoso.
Scegliere Salva. Verificare che il nuovo elemento venga visualizzato nell'elenco. Più avanti nella procedura dettagliata si utilizzerà questo elemento per verificare che il passaggio di distribuzione dell'aggiornamento non sovrascriva il contenuto di questo elenco.
Chiudere il browser Web.
Per testare il passaggio di distribuzione dell'aggiornamento
Nell'istanza sperimentale di Visual Studio fare clic sul nodo di progetto EmployeesListDefinition in Esplora soluzioni.
Nella finestra Proprietà impostare la proprietà Configurazione distribuzione attiva su Aggiorna. Si tratta della configurazione di distribuzione personalizzata che include il nuovo passaggio di distribuzione dell'aggiornamento.
Fare doppio clic sul file Schema.xml che è un elemento figlio dell'elemento del progetto ListDefinition1.
Individuare l'elemento ViewFields modificato precedentemente.
Nell'elemento ViewFields rimuovere i due elementi figlio FieldRef il cui attributo Name è impostato su WorkPhone e Email. Tale azione consente di rimuovere questi campi dalla visualizzazione predefinita dell'elenco Employees sul sito di SharePoint. Al termine, il contenuto dell'elemento ViewFields deve essere il seguente.
<ViewFields> <FieldRef Name="LinkTitle" /> <FieldRef Name="FirstName" /> <FieldRef Name="Company" /> </ViewFields>
Premere F5. Verificare che il codice nell'altra istanza di Visual Studio venga interrotto nell'apposito punto impostato precedentemente nel metodo CanExecute.
Premere nuovamente F5. Verificare che il codice si arresti nel punto di interruzione impostato precedentemente nel metodo Execute.
Premere un'ultima volta F5. Sito di SharePoint nell'elenco Employees.
Nell'area Avvio veloce fare clic sull'elenco Employees.
Verificare i seguenti dettagli:
L'elemento Andy Ruth aggiunto manualmente in precedenza è ancora presente nell'elenco.
Le colonne Telefono ufficio e Indirizzo di posta elettronica non sono visualizzate in questa visualizzazione dell'elenco.
La configurazione di distribuzione Aggiorna modifica l'istanza dell'elenco Employees presente sul sito di SharePoint. Se fosse stata utilizzata la configurazione di distribuzione Predefinita anziché la configurazione Aggiorna, sarebbe stato riscontrato un conflitto di distribuzione. Visual Studio risolverebbe il conflitto sostituendo l'elenco Employees e l'elemento Andy Ruth verrebbe eliminato.
Pulizia del computer di sviluppo
Dopo aver completato il test del passaggio di distribuzione dell'aggiornamento, rimuovere l'istanza e la definizione di elenco dal sito di SharePoint, nonché l'estensione del passaggio di distribuzione da Visual Studio.
Per rimuovere l'istanza di elenco dal sito di SharePoint
Aprire l'elenco Employees nel sito di SharePoint, se non è già aperto.
Nella barra multifunzione del sito di SharePoint fare clic sulla scheda Elenco.
Nel gruppo Impostazioni della scheda Elenco fare clic su Impostazioni elenco.
In Autorizzazioni e gestione fare clic su Elimina questo elenco. Fare clic su OK per confermare che si desidera spostare l'elenco nel cestino.
Chiudere il browser Web.
Per rimuovere la definizione di elenco dal sito di SharePoint
Scegliere Ritrai dal menu Compila in questa istanza sperimentale di Visual Studio.
Visual Studio ritrae la definizione di elenco dal sito di SharePoint.
Per disinstallare l'estensione
Scegliere Gestione estensioni dal menu Strumenti nell'istanza sperimentale di Visual Studio.
Viene aperta la finestra di dialogo Gestione estensioni.
Nell'elenco di estensioni scegliere Deployment Step for SharePoint Projects, quindi fare clic su Disinstalla.
Nella finestra di dialogo visualizzata fare clic su Sì per confermare che si desidera disinstallare l'estensione.
Fare clic su Riavvia per completare la disinstallazione.
Chiudere entrambe le istanze di Visual Studio, ovvero quella sperimentale e l'istanza in cui è aperta la soluzione UpgradeDeploymentStep.
Vedere anche
Altre risorse
Estensione della creazione di pacchetti e della distribuzione di SharePoint