Compilazione, distribuzione e debug di oggetti personalizzatiBuilding, Deploying, and Debugging Custom Objects

Una volta scritto il codice per un oggetto personalizzato per Integration ServicesIntegration Services, è necessario compilare l'assembly, distribuirlo e integrarlo in SSISSSIS finestra di progettazione per renderla disponibile per l'utilizzo nei pacchetti e di test ed eseguirne il debug.After you have written the code for a custom object for Integration ServicesIntegration Services, you must build the assembly, deploy it, and integrate it into SSISSSIS Designer to make it available for use in packages, and test and debug it.

Passaggi di compilazione, distribuzione e il debug di un oggetto personalizzato per Integration Services Steps in Building, Deploying, and Debugging a Custom Object for Integration Services

La funzionalità personalizzata per l'oggetto è già stata scritta.You have already written the custom functionality for your object. A questo punto, è necessario testarla e renderla disponibile per gli utenti.Now you have to test it and to make it available to users. I passaggi sono molto simili per tutti i tipi di oggetti personalizzati che è possibile creare per Integration ServicesIntegration Services.The steps are very similar for all the types of custom objects that you can create for Integration ServicesIntegration Services.

Ecco i passaggi per compilare, distribuire e testarlo.Here are the steps to build, deploy, and test it.

  1. Accesso l'assembly deve essere generato con un nome sicuro.Sign the assembly to be generated with a strong name.

  2. Compilare l'assembly.Build the assembly.

  3. Distribuire l'assembly spostandolo o copiandolo appropriati Integration ServicesIntegration Services cartella.Deploy the assembly by moving or copying it to the appropriate Integration ServicesIntegration Services folder.

  4. Installare l'assembly nella global assembly cache (GAC).Install the assembly in the global assembly cache (GAC).

    L'oggetto viene automaticamente aggiunto alla Casella degli strumenti.The object is automatically added to the Toolbox.

  5. Risoluzione dei problemi la distribuzione, se necessario.Troubleshoot the deployment, if necessary.

  6. Test ed eseguire il debug del codice.Test and debug your code.

    È ora possibile utilizzare Progettazione SSIS in SQL Server Data Tools (SSDT) per creare, gestire ed eseguire pacchetti destinati a versioni diverse di SQL ServerSQL Server.You can now use SSIS Designer in SQL Server Data Tools (SSDT) to create, maintain, and run packages that target different versions of SQL ServerSQL Server. Per ulteriori informazioni sull'impatto di questo miglioramento su estensioni personalizzate, vedere ottenere estensioni SSIS personalizzate devono essere supportati dal supporto di più versioni di 2015 di SSDT per SQL Server 2016For more info about the impact of this improvement on your custom extensions, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016

La firma dell'Assembly Signing the Assembly

Quando un assembly deve essere condiviso, è necessario installarlo nella Global Assembly Cache.When an assembly is meant to be shared, it must be installed in the global assembly cache. Una volta aggiunto alla Global Assembly Cache, l'assembly può essere utilizzato da applicazioni come SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).After the assembly has been added to the global assembly cache, the assembly can be used by applications such as SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT). Un requisito della Global Assembly Cache è che l'assembly deve essere firmato con un nome sicuro che garantisca che sia globalmente univoco.A requirement of the global assembly cache is that the assembly must be signed with a strong name, which guarantees that an assembly is globally unique. Un assembly con nome sicuro dispone di un nome completo che include il nome, la lingua, la chiave pubblica e il numero di versione dell'assembly.A strong-named assembly has a fully qualified name that includes the name, culture, public key, and version number of the assembly. Tali informazioni vengono utilizzate dal runtime per individuare l'assembly e distinguerlo da altri assembly aventi lo stesso nome.The runtime uses this information to locate the assembly and to differentiate it from other assemblies with the same name.

Per firmare un assembly con un nome sicuro, è innanzitutto necessario avere o creare una coppia di chiavi pubblica/privata.To sign an assembly with a strong name, you must first have or create a public/private key pair. Questa coppia di chiavi di crittografia, pubblica e privata, viene utilizzata durante la compilazione per creare un assembly con nome sicuro.This public and private cryptographic key pair is used at build time to create a strong-named assembly.

Per ulteriori informazioni sui nomi sicuri e sui passaggi che è necessario eseguire per firmare un assembly, vedere gli argomenti seguenti nella documentazione relativa a .NET Framework.NET Framework SDK:For more information about strong names and on the steps that you must followto sign an assembly, see the following topics in the .NET Framework.NET Framework SDK documentation:

  • Assembly con nomi sicuriStrong-Named Assemblies

  • Creazione di una coppia di chiaviCreating a Key Pair

  • Firma di un assembly con un nome sicuroSigning an Assembly with a Strong Name

    È possibile firmare facilmente l'assembly con un nome sicuro in Visual StudioVisual Studio durante la compilazione.You can easily sign your assembly with a strong name in Visual StudioVisual Studio at build time. Nel le proprietà del progetto la finestra di dialogo, seleziona il firma scheda.In the Project Properties dialog box, select the Signing tab. Selezionare l'opzione per firmare l'assembly e quindi specificare il percorso del file di chiave (con estensione snk).Select the option to Sign the assembly and then provide the path of the key (.snk) file.

Compilazione dell'Assembly Building the Assembly

Dopo la firma del progetto, è necessario compilare o ricompilare il progetto o soluzione utilizzando i comandi disponibili nel compilare dal menu di SQL Server Data ToolsSQL Server Data Tools.After signing the project, you must build or rebuild the project or the solution by using the commands available on the Build menu of SQL Server Data ToolsSQL Server Data Tools. La soluzione può contenere un progetto distinto per un'interfaccia utente personalizzata, che deve essere firmato con un nome sicuro e può essere compilato contemporaneamente.Your solution may contain a separate project for a custom user interface, which must also be signed with a strong name, and can be built at the same time.

Il metodo più semplice per eseguire i due passaggi successivi, ovvero la distribuzione dell'assembly e l'installazione nella Global Assembly Cache, consiste nel generare script per questi passaggi come evento di post-compilazione in Visual StudioVisual Studio.The most convenient method for performing the next two steps—deploying the assembly and installing it in the global assembly cache—is to script these steps as a post-build event in Visual StudioVisual Studio. Sono disponibili gli eventi di compilazione di compilare pagina delle proprietà di progetto per un Visual BasicVisual Basic progetto e dal eventi di compilazione pagina per un progetto c#.Build events are available from the Compile page of Project Properties for a Visual BasicVisual Basic project, and from the Build Events page for a C# project. Il percorso completo è obbligatorio per le utilità della riga di comando, ad esempio gacutil.exe.The full path is required for command prompt utilities such as gacutil.exe. È necessario racchiudere tra virgolette i percorsi che contengono spazi e le macro, ad esempio $(TargetPath), che si espandono in percorsi che contengono spazi.Quotation marks are required both around paths that contain spaces and around macros such as $(TargetPath) that expand to paths that contain spaces.

Di seguito è riportato un esempio di una riga di comando per eventi di post-compilazione per un provider di log personalizzato:Here is an example of a post-build event command line for a custom log provider:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)  
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)  
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "  

Distribuzione dell'Assembly Deploying the Assembly

Il SSISSSIS progettazione individua gli oggetti personalizzati disponibili per l'utilizzo nei pacchetti enumerando i file trovati in una serie di cartelle che vengono creati quando SQL ServerSQL Server Integration ServicesIntegration Services è installato.The SSISSSIS Designer locates the custom objects available for use in packages by enumerating the files found in a series of folders that are created when SQL ServerSQL Server Integration ServicesIntegration Services is installed. Quando il valore predefinito SQL ServerSQL Server vengono utilizzate le impostazioni di installazione, questo set di cartelle si trova in C:\Program Files\Microsoft SQL Server\130\DTS.When the default SQL ServerSQL Server installation settings are used, this set of folders is located under C:\Program Files\Microsoft SQL Server\130\DTS. Se si crea un programma di installazione per l'oggetto personalizzato, è tuttavia necessario controllare il valore della HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath chiave del Registro di sistema per verificare il percorso della cartella.However if you create a setup program for your custom object, you should check the value of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath registry key to verify the location of this folder.

Nota

Per informazioni su come distribuire i componenti personalizzati per l'uso con il supporto di più versioni di SQL Server Data Tools, vedere ottenere estensioni SSIS personalizzate devono essere supportati dal supporto di più versioni di 2015 di SSDT per SQL Server 2016.For info about how to deploy custom components to work well with the multi-version support in SQL Server Data Tools, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016.

È possibile inserire l'assembly nella cartella in due modi:You can put the assembly in the folder in two ways:

  • Spostare o copiare l'assembly compilato nella cartella appropriata dopo averlo compilato.Move or copy the compiled assembly to the appropriate folder after building it. Per praticità, è possibile includere il comando di copia in un evento di post-compilazione.(For convenience, you can include the copy command in a Post-build Event.)

  • Compilare l'assembly direttamente nella cartella appropriata.Build the assembly directly in the appropriate folder.

    Le seguenti cartelle di distribuzione in C:\Program Files\Microsoft SQL Server\130\DTS vengono utilizzati per i vari tipi di oggetti personalizzati:The following deployment folders under C:\Program Files\Microsoft SQL Server\130\DTS are used for the various types of custom objects:

Oggetto personalizzatoCustom object Cartella di distribuzioneDeployment folder
AttivitàTask AttivitàTasks
Gestione connessioneConnection manager ConnessioniConnections
Provider di logLog provider LogProvidersLogProviders
Componente del flusso di datiData flow component PipelineComponentsPipelineComponents

Nota

Gli assembly vengono copiati in queste cartelle per supportare l'enumerazione degli oggetti personalizzati disponibili, quali attività, gestioni connessioni e così via.Assemblies are copied to these folders to support the enumeration of available tasks, connection managers, and so on. Pertanto, non è necessario distribuire in queste cartelle gli assembly che contengono solo l'interfaccia utente personalizzata per gli oggetti personalizzati.Therefore you do not have to deploy assemblies that contain only the custom user interface for custom objects to these folders.

Installazione dell'Assembly nella Global Assembly Cache Installing the Assembly in the Global Assembly Cache

Per installare l'assembly dell'attività nella global assembly cache (GAC), utilizzare lo strumento da riga di comando gacutil.exe, o trascinare gli assembly di %system%\assembly directory.To install the task assembly into the global assembly cache (GAC), use the command line tool gacutil.exe, or drag the assemblies to the %system%\assembly directory. Per praticità, è possibile includere anche la chiamata a gacutil.exe in un evento di post-compilazione.For convenience, you can also include the call to gacutil.exe in a Post-build Event.

Il comando seguente consente di installare un componente denominato MyTask nella GAC tramite gacutil.exe.The following command installs a component named MyTask.dll into the GAC by using gacutil.exe.

gacutil /iF MyTask.dll

Dopo l'installazione di una nuova versione dell'oggetto personalizzato, è necessario chiudere e riaprire Progettazione SSISSSIS.You must close and reopen SSISSSIS Designer after you install a new version of your custom object. Se sono state installate versioni precedenti dell'oggetto personalizzato nella Global Assembly Cache, è necessario rimuoverle prima di installare la nuova versione.If you have installed earlier versions of your custom object in the global assembly cache, you must remove them before installing the new version. Per disinstallare un assembly, eseguire gacutil.exe e specificare il nome dell'assembly con il /u opzione.To uninstall an assembly, run gacutil.exe and specify the assembly name with the /u option.

Per ulteriori informazioni sulla Global Assembly Cache, vedere lo strumento corrispondente (Gactutil.exe) in .NET Framework.NET Framework Tools.For more information about the global assembly cache, see Global Assembly Cache Tool (Gactutil.exe) in the .NET Framework.NET Framework Tools.

Risoluzione dei problemi di distribuzione Troubleshooting the Deployment

Se l'oggetto personalizzato è presente il della casella degli strumenti o l'elenco di oggetti disponibili, ma non sono in grado di aggiungere a un pacchetto, provare le soluzioni seguenti:If your custom object appears in the Toolbox or the list of available objects, but you are not able to add it to a package, try the following:

  1. Verificare se nella Global Assembly Cache sono disponibili più versioni del componente.Look in the global assembly cache for multiple versions of your component. In caso affermativo, è possibile che la finestra di progettazione non sia in grado di caricare il componente.If there are multiple versions of the component in the global assembly cache, the designer may not be able to load your component. Eliminare tutte le istanze dell'assembly dalla Global Assembly Cache, quindi aggiungere nuovamente l'assembly.Delete all instances of the assembly from the global assembly cache, and re-add the assembly.

  2. Verificare che nella cartella di distribuzione esista una singola istanza dell'assembly.Make sure that only a single instance of the assembly exists in the deployment folder.

  3. Aggiornare la casella degli strumenti.Refresh the Toolbox.

  4. Collegare Visual StudioVisual Studio a devenv.exe e impostare un punto di interruzione per esaminare il codice di inizializzazione per garantire che non si verificano eccezioni.Attach Visual StudioVisual Studio to devenv.exe and set a breakpoint to step through your initialization code to ensure that no exceptions occur.

Test e debug del codice Testing and Debugging Your Code

È l'approccio più semplice per i metodi della fase di esecuzione di un oggetto personalizzato di debug per avviare dtexec.exe da Visual StudioVisual Studio dopo la creazione dell'oggetto personalizzato ed eseguire un pacchetto che utilizza il componente.The simplest approach to debugging the run-time methods of a custom object is to start dtexec.exe from Visual StudioVisual Studio after building your custom object and run a package that uses the component.

Se si desidera eseguire il debug, ad esempio i metodi del componente in fase di progettazione, il convalida (metodo), aprire un pacchetto che utilizza il componente in una seconda istanza di Visual StudioVisual Studioe collegare il devenv.exe processo.If you want to debug the component's design-time methods, such as the Validate method, open a package that uses the component in a second instance of Visual StudioVisual Studio, and attach to its devenv.exe process.

Se si desidera eseguire il debug di metodi di runtime del componente quando un pacchetto è aperto e in esecuzione in SSISSSIS della finestra di progettazione, è necessario forzare una pausa nell'esecuzione del pacchetto in modo che è anche possibile collegare al DtsDebugHost.exe processo.If you also want to debug the component's run-time methods when a package is open and running in SSISSSIS designer, you must force a pause in the execution of the package so that you can also attach to the DtsDebugHost.exe process.

Per eseguire il debug dei metodi di runtime di un oggetto tramite connessione a dtexec.exeTo debug an object's run-time methods by attaching to dtexec.exe

  1. Firmare e compilare il progetto nella configurazione di debug, distribuirlo e installarlo nella Global Assembly Cache come descritto in questo argomento.Sign and build your project in the Debug configuration, deploy it, and install it in the global assembly cache as described in this topic.

  2. Nel Debug scheda della le proprietà del progettoselezionare Avvia programma esterno come il azione di avvioe individuare dtexec.exe, cui è installato per impostazione predefinita in C:\Program Files\Microsoft SQL Server\130\DTS\Binn.On the Debug tab of Project Properties, select Start external program as the Start Action, and locate dtexec.exe, which is installed by default in C:\Program Files\Microsoft SQL Server\130\DTS\Binn.

  3. Nel opzioni della riga di comando nella casella di testo in opzioni di avvio, immettere gli argomenti della riga di comando necessari per eseguire un pacchetto che utilizza il componente.In the Command line options text box, under Start Options, enter the command line arguments required to run a package that uses your component. In genere l'argomento della riga di comando sarà costituito dall'opzione /F[ILE] seguita dal percorso e dal nome del file con estensione dtsx.Often the command-line argument will consist of the /F[ILE] switch followed by the path and file name of the .dtsx file. Per altre informazioni, vedere dtexec Utility.For more information, see dtexec Utility.

  4. Impostare i punti di interruzione nel codice sorgente, laddove appropriato, nei metodi di runtime del componente.Set breakpoints in the source code where appropriate in the run-time methods of your component.

  5. Eseguire il progetto.Run your project.

Per eseguire il debug dei metodi della fase di progettazione di un oggetto personalizzato tramite connessione a SQL Server Data ToolsTo debug a custom object's design-time methods by attaching to SQL Server Data Tools

  1. Firmare e compilare il progetto nella configurazione di debug, distribuirlo e installarlo nella Global Assembly Cache come descritto in questo argomento.Sign and build your project in the Debug configuration, deploy it, and install it in the global assembly cache as described in this topic.

  2. Impostare i punti di interruzione nel codice sorgente, laddove appropriato, nei metodi della fase di progettazione dell'oggetto personalizzato.Set breakpoints in the source code where appropriate in the design-time methods of your custom object.

  3. Aprire una seconda istanza di Visual StudioVisual Studio e caricare un progetto di Integration ServicesIntegration Services contenente un pacchetto in cui è utilizzato l'oggetto personalizzato.Open a second instance of Visual StudioVisual Studio and load an Integration ServicesIntegration Services project that contains a package that uses the custom object.

  4. La prima istanza di Visual StudioVisual Studio, collegare la seconda istanza di devenv.exe in cui viene caricato il pacchetto selezionando Connetti a processo dal Debug menu della prima istanza.From the first instance of Visual StudioVisual Studio, attach to the second instance of devenv.exe in which the package is loaded by selecting Attach to Process from the Debug menu of the first instance.

  5. Eseguire il pacchetto dalla seconda istanza di Visual StudioVisual Studio.Run the package from the second instance of Visual StudioVisual Studio.

Per eseguire il debug dei metodi di runtime di un oggetto personalizzato tramite connessione a SQL Server Data ToolsTo debug a custom object's run-time methods by attaching to SQL Server Data Tools

  1. Dopo aver completato i passaggi elencati nella procedura precedente, forzare una pausa nell'esecuzione del pacchetto in modo che sia possibile connettersi a DtsDebugHost.exe.After you have completed the steps listed in the previous procedure, force a pause in the execution of your package so that you can attach to DtsDebugHost.exe. È possibile forzare questa pausa mediante l'aggiunta di un punto di interruzione di OnPreExecute evento, o tramite l'aggiunta di un'attività Script al progetto e passare allo script che visualizza una finestra di messaggio modale.You can force this pause by adding a breakpoint to the OnPreExecute event, or by adding a Script task to your project and entering script that displays a modal message box.

  2. Eseguire il pacchetto.Run the package. Quando si verifica la pausa, passare all'istanza di Visual StudioVisual Studio in cui il progetto di codice è aperta e selezionare Connetti a processo dal Debug menu.When the pause occurs, switch to the instance of Visual StudioVisual Studio in which your code project is open, and select Attach to Process from the Debug menu. Assicurarsi di connettersi all'istanza di DtsDebugHost.exe elencato come gestito, x86 nel tipo colonna, non all'istanza indicata come x86 solo.Make sure to attach to the instance of DtsDebugHost.exe listed as Managed, x86 in the Type column, not to the instance listed as x86 only.

  3. Tornare al pacchetto in pausa e continuare oltre il punto di interruzione o fare clic su OK di chiudere la finestra di messaggio generata dall'attività Script e continuare l'esecuzione del pacchetto e il debug.Return to the paused package and continue past the breakpoint, or click OK to dismiss the message box raised by the Script task, and continue package execution and debugging.

Vedere ancheSee Also

Sviluppo di oggetti personalizzati per Integration Services Developing Custom Objects for Integration Services
Persistenza degli oggetti personalizzati Persisting Custom Objects
Risoluzione dei problemi relativi agli strumenti per lo sviluppo dei pacchettiTroubleshooting Tools for Package Development