2015-12-29 5 views
9

È necessario intercettare un build SSDT per modificare lo script di build. Ho seguito il MSDN Deployment Plan Modifier tutorial, ma quando tento di costruire il progetto di database, ottengo il seguente errore:Strumenti dati SQL Server: Errore durante il caricamento di DeploymentPlanModifier personalizzato: Impossibile caricare il contributore richiesto con ID

Required contributor with id 'MyDeploymentContributor.SqlRestartableScriptContributor' 
could not be loaded. 

Sto usando Visual Studio 2012 (versione 11.0.61219.00 Aggiornamento 5) e SSDT Versione 11.1.50730.0 .

Ho firmato l'assembly ma non ho specificato una password.

Ho seguito diverse soluzioni che ho trovato on-line senza alcun risultato, tra cui i seguenti:

  1. Aggiornamento Visual Studio e SSDT;
  2. Copia MyDeploymentContributor.dll e MyDeploymentContributor.pdb alle seguenti posizioni:

    1. C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Extensions
    2. C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
    3. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120
    4. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions
  3. Cattura di registro eventi per SSDT e DacFx (fo seguendo le istruzioni di Kevin Cunnane allo https://social.msdn.microsoft.com/Forums/en-US/5c84ab8e-b50b-4ecd-86da-866ac3bb2248/known-issue-with-ssdt-extensibility-in-current-release?forum=ssdt). Ecco i risultati del registro DacFx:

    • Core Services: SafeDirectoryCatalog: Assemblea C:\Program Files (x86)\Microsoft Visual Stusio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions\MyDeploymentContributor.dll aggiunti
    • Core Services: estensione Lookup: directory C:\Program Files (x86)\Microsoft Visual Stusio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions aggiunto al prolungamento percorso di ricerca
    • Core Services: FilteringCompositionContainer: Sguardo in su esportazioni Microsoft.SqlServer.Dac.Deployment.DeploymentPlanExecutor
    • core Services: FilteringCompositionContainer: ha cambiato la politica di creazione parte a NonShared
    • Core Services: FilteringCompositionContainer: Sguardo in su per le esportazioni Microsoft.SqlServer.Dac.Deployment.DeploymentPlanModifier

Non c'erano ContributorLoader messaggi. Da questo registro, il contributore sembra caricarsi correttamente. Il registro SSDT non conteneva eventi che menzionavano il contributore.

non ci sono argomenti collaboratore richiesti, quindi il nodo DeploymentContributor nel mio file .sqlproj assomiglia a questo:

<PropertyGroup> 
    <DeploymentContributors> 
     $(DeploymentContributors); MyDeploymentContributor.SqlRestartableScriptContributor 
    </DeploymentContributors> 
</PropertyGroup> 

Ogni aiuto è apprezzato. Grazie!

+0

Puoi pubblicare l'esportazione del tuo metodo di contributore (OnExecute?), Per favore prendi anche un esempio da https://github.com/DacFxDeploymentContributors/Contributors e vedi se funziona? La registrazione è buona per vedere se tutto è impostato correttamente –

+0

Il metodo My OnExecute viene copiato da [https://msdn.microsoft.com/en-us/library/ee461507 (v = vs.100) .aspx] (https://msdn.microsoft.com/en-us/library/ee461507(v=vs.100).aspx) e assomiglia a questo: [http://pastebin.com/CYYv8ZsE](http://pastebin. com/CYYv8ZsE). Ho provato ad usare i contributors dal link github che hai fornito, e ho ottenuto lo stesso errore (e le stesse voci del registro DacFx) come prima. – Palladian1881

+0

Palladian, sto affrontando lo stesso identico problema (nel mio caso, è VS 2013). Sei riuscito a trovare una soluzione a questo problema. Inoltre, abbiamo bisogno di copiare MyRefKey.snk insieme con la DLL alla cartella estensioni? –

risposta

2

Grazie a Ed Elliot (https://the.agilesql.club/Blogs/Ed-Elliott/About), sono stato in grado di risolvere questo problema nel mio caso.

Ho seguito i suggerimenti di Ed e ha funzionato.Ho creato una cartella come C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\ e copiato tutto il contenuto (comprese le DLL) da C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120 a lì.

Nel progetto collaboratore, ho fatto riferimento le DLL all'interno C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\

Una volta che il progetto è stato realizzato con successo, ho copiato il dll collaboratore e file PDB nel seguente percorso:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\

Prima, stavo facendo riferimento alle DLL da C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin.

Spero che questo possa aiutare qualcuno.

+0

Mi piace molto quando strumenti come questo ti dicono sempre che c'è qualcosa di sbagliato e non ti dico mai cosa è sbagliato e come puoi aggiustarlo. –

Problemi correlati