Come integrare provider personalizzati in Strumento di distribuzione Web di Microsoft? [chiuso]

StackOverflow https://stackoverflow.com/questions/4073954

Domanda

sto cercando di estendere lo strumento Microsoft Web Deployment e MSDeploy con un provider personalizzato perché voglio correre attività personalizzate sulla macchina distribuzione di destinazione come parte del processo. La documentazione generale è piuttosto buona al di fuori dello sviluppo provider personalizzato, ma la documentazione per fare qualsiasi tipo di estensione sembra essere inesistente verso abissale.

Sono stato alla ricerca questo per diversi giorni ormai e hanno trovato alcuni pezzi che mi hanno permesso di ottenere abbastanza lontano nel processo senza alcuna documentazione reale. Ho quasi violato la mia strada attraverso il processo, ma ora ho un ultimo problema: MSDeploy non riconosce il mio provider personalizzato

.

Ho creato due classi uno che si estende Microsoft.Web.Deployment.DeploymentProviderFactory (che ha sia le proprietà Nome e friendlyName sovresposta al nome del mio provider personalizzato "Archimede"); l'altro si estende Microsoft.Web.Deployment.DeploymentObjectProvider che ha anche un nome di proprietà sovresposta "Archimede". Ho fatto questo seguendo l'esempio BatchProvider personalizzato si possono trovare online. Ecco come si presenta:

ArchimedesProviderFactory (che si estende DeploymentProviderFactory e ha l'attributo Deployment ProviderFactory assegnato alla classe):

public override string FriendlyName
{
    get { return "archimedes"; }
}

public override string Name
{
    get { return "archimedes"; }
}

La classe ArchimedesProvider estende DeploymentObjectProvider e ha questo:

public override string Name
{
    get { return "archimedes"; }
}

Nel mio file sourcemanifest.xml l'ho aggiunto una voce:

<archimedes path="..." />

ho messo il file assembly che contiene tali classi nelle file di programma%% \ IIS \ Microsoft Web Deploy \ estensibilità come mi è stato diretto anche da parte del materiale ho trovato on-line.

La cosa divertente è che durante la costruzione di un pacchetto in Visual Studio 2010, i miei fornitori stanno avendo codice chiamato su di loro da quella directory - così VS è sicuramente la connessione al montaggio messo in là in qualche modo (per esempio posso butto eccezioni e vedere che sono stati gettati durante il processo di costruzione di un pacchetto).

Tuttavia durante la distribuzione prova effettiva del pacchetto dal file .cmd generato, ottengo un errore che la fabbrica per il provider "Archimede" non può essere trovato. Anche digitazione:

MSDeply -verb:dump -source:archimedes -debug

restituisce il seguente:

    Microsoft.Web.Deployment.DeploymentException: Unknown factory 'archimedes'.
   at Microsoft.Web.Deployment.DeploymentProviderSettingCollection..ctor(String factoryName)
   at Microsoft.Web.Deployment.DeploymentProviderOptions..ctor(String factoryName)
   at MSDeploy.MSDeploy.GetObjectParameters(Dictionary`2 parameters, Boolean isDestination, DeploymentBaseOptions& retbaseOptions, DeploymentProviderOptions& re
tproviderOptions)
   at MSDeploy.MSDeploy.ExecuteWorker()
   at MSDeploy.MSDeploy.Execute()
   at MSDeploy.MSDeploy.Main(String[] unusedArgs)
Error count: 1.

Quindi, oltre al fatto che non sembra esserci alcuna coerenza, fonte centrale di documentazione per lo sviluppo provider personalizzato (Qualcuno sa di un luogo, si prega di dire se hai trovato uno), il mio problema principale è che per qualche motivo Visual Studio vedrà e chiamare la mia fabbrica fornitore dal file di assiemi ho buttato nella cartella estensibilità, ma l'attuale msdeploy / webdeploy non vederlo. Qualcuno ha qualche idea?

Grazie una tonnellata ...

È stato utile?

Soluzione

OK, questo è stato un semplice errore, anche se uno non ovvio poiché la porzione pacchetto di costruire accede il codice va bene e lo ha chiamato dal mio fornitore di assemblaggio. Il problema era che, poiché quasi tutto ciò che negli obiettivi applicativi web 4.0 il quadro del progetto di libreria di classi ho aggiunto con il codice di provider personalizzato ha fatto pure. Ho dovuto impostare il framework di destinazione a 2,0 E tutto è cominciato a lavorare. Nessuna delle segnalazione degli errori era troppo evidente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top