Como você integra fornecedores personalizados na ferramenta de implantação da Web da Microsoft? [fechado

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

Pergunta

Estou tentando estender a ferramenta de implantação da Web do Microsoft e o MSDELAPLE com um provedor personalizado, porque quero executar tarefas personalizadas na máquina de implantação de destino como parte do processo. A documentação geral é muito boa fora do desenvolvimento de provedores personalizados, mas a documentação para fazer qualquer tipo de extensão parece inexistente em relação à abismal.

Estou pesquisando isso há vários dias e encontrei alguns pedaços que me permitiram chegar muito longe no processo sem nenhuma documentação real. Quase me deparei com o processo, mas agora tenho um problema final: o MSDeploy não reconhecerá meu provedor personalizado.

Eu criei duas classes que estende Microsoft.Web.Deploment.DeploymentProviderFactory (que possui o nome e as propriedades do nome amigável superando o nome do meu provedor personalizado "Archimedes"); O outro estende Microsoft.Web.Deploment.DeploymentObjectProvider, que também possui uma propriedade de nome excedente "Archimedes". Fiz isso seguindo o exemplo personalizado do BatchProvider que você pode encontrar online. Se parece com isso:

ArchimedesProviderFactory (que estende a implantaçãoProviderFactory e possui o atributo Factory do provedor de implantação atribuído à classe):

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

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

A classe ArchimedesProvider estende a implantação de objeto e tem isso:

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

No meu arquivo sourceManifest.xml, adicionei uma entrada:

<archimedes path="..." />

Coloquei o arquivo de montagem que contém essas classes em %de arquivos de programas % iis Microsoft web implantar extensibilidade, como fui direcionado também pelo material que encontrei online.

O engraçado é que, durante a construção de um pacote no Visual Studio 2010, meus provedores estão tendo código chamado nesse diretório - então o VS está definitivamente se conectando à minha assembléia colocada lá de alguma forma (por exemplo, posso jogar exceções e ver que Eles foram jogados durante o processo de construção de um pacote).

No entanto, durante a implantação real do teste do pacote do arquivo .cmd gerado, recebo um erro que a fábrica para o fornecedor "Arquimedes" não pode ser encontrada. Também digitando:

MSDeply -verb:dump -source:archimedes -debug

Retorna o seguinte:

    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.

Portanto, além do fato de que parece não haver uma fonte coerente e central de documentação para o desenvolvimento de provedores personalizados (alguém sabe de um lugar, por favor, diga se você encontrou um), meu principal problema é que, por algum motivo, o Visual Studio verá e Ligue para minha fábrica de provedores do arquivo de montagem que eu despejei na pasta de extensibilidade, mas o MSDEPLOW/WebDeploy real não o vê. Alguém tem alguma idéia?

Obrigado uma tonelada ...

Foi útil?

Solução

Ok, esse foi um erro simples, embora não obviamente, já que a parte da construção de pacotes acessou o código tudo bem e o chamou da minha montagem do provedor. O problema era que, uma vez que quase tudo no aplicativo da Web tem como alvo a estrutura 4.0 O projeto da biblioteca de classes que eu adicionei com o código do provedor personalizado também o fez. Eu tive que definir a estrutura de destino para 2.0 e tudo começou a funcionar. Nenhum dos relatórios de erro era excessivamente óbvio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top