¿Cómo integrar proveedores personalizados en la herramienta de implementación Web de Microsoft? [cerrado]

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

Pregunta

Estoy tratando de extender la herramienta de implementación Web de Microsoft y MSDeploy con un proveedor personalizado porque quiero ejecutar tareas personalizadas en la máquina de despliegue de destino como parte del proceso. La documentación general es bastante bueno fuera del desarrollo proveedor personalizado, pero la documentación para realizar cualquier tipo de extensión parece ser inexistente hacia abismal.

He estado investigando esto durante varios días y ahora han encontrado algunas partes y piezas que han permitido que consiga bastante lejos en el proceso sin ninguna documentación real. Casi he hackeado mi camino a través del proceso, pero ahora tengo un último problema: MSDeploy no reconocerá mi proveedor personalizado

.

He creado dos clases de uno que se extiende Microsoft.Web.Deployment.DeploymentProviderFactory (que tiene tanto las propiedades Nombre y FriendlyName evitado para el nombre de mi proveedor personalizado "Arquímedes"); la otra se extiende Microsoft.Web.Deployment.DeploymentObjectProvider que también tiene una propiedad Nombre overriden "Arquímedes". Lo hice siguiendo el ejemplo BatchProvider personalizada que puede encontrar en línea. Se ve así:

ArchimedesProviderFactory (que se extiende DeploymentProviderFactory y tiene el atributo de despliegue ProviderFactory asignado a la clase):

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

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

La clase ArchimedesProvider extiende DeploymentObjectProvider y tiene esto:

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

En mi archivo sourcemanifest.xml TENGO añadido una entrada:

<archimedes path="..." />

He colocado el archivo de ensamblaje que contiene las clases de archivos de programa%% \ IIS \ Microsoft Web Deploy \ extensibilidad como yo estaba dirigida también por el que el material encontrado en Internet.

Lo curioso es que durante la construcción de un paquete en Visual Studio 2010, mis proveedores están teniendo código llamado sobre ellos desde ese directorio - por lo VS es, sin duda conectando a mi montaje colocado allí de alguna manera (por ejemplo que puedo lanzar excepciones y ver que fueron lanzados durante el proceso de construcción de un paquete).

Sin embargo, durante el despliegue prueba real del paquete desde el archivo .cmd generada, me sale un error que la fábrica de proveedores "Arquímedes" no se puede encontrar. También escribiendo:

MSDeply -verb:dump -source:archimedes -debug

Devuelve el siguiente:

    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.

Por lo tanto, además del hecho de que no parece haber ningún coherente, fuente central de documentación para el desarrollo proveedor personalizado (¿alguien sabe de un lugar, por favor diga si encuentra uno), mi principal problema es que por alguna razón Visual Studio al ver esto, llamar a mi proveedor de la fábrica desde el archivo de ensamblaje que descargan en la carpeta extensibilidad, pero el MSDeploy / webdeploy real no verlo. ¿Alguien tiene alguna idea?

Gracias una tonelada ...

¿Fue útil?

Solución

OK, esto fue un simple error, aunque uno no obvia ya que la porción paquete de construcción de acceder al código bien y lo llamó desde el profesional de la asamblea. El problema era que, como casi todo en los objetivos de aplicaciones web 4.0 el marco del proyecto de biblioteca de clases añadí con el código de proveedor personalizado hizo así. Tenía que establecer el marco de destino a 2.0 y todo comenzó a trabajar. Ninguno de los informes de errores era demasiado evidente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top