Pergunta

Gostaria de instalar automaticamente meus conjuntos de aplicativos no GAC quando compilar meu aplicativo usando o Visual Studio. Eu configurei eventos pré e pós-construção na compilação do meu aplicativo da web.

Evento pré -construção:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /ul Uninstall.Gac.txt

Post Build Event:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /il Install.Gac.txt
%windir%\system32\inetsrv\appcmd.exe recycle apppool -apppool.name:"Sharepoint IIS WebApps"

Como você pode ver, também estou reciclando meu pool de aplicativos da web para que os novos assemblies comecem a trabalhar.

O problema que estou tendo é que este é um processo muito não confiável. Caso meu aplicativo da web falhe, minha próxima compilação falhará porque a desinstalação falhará (a pós-compra não foi executada na construção anterior) ... etc.

Gostaria de tornar esse processo o traseiro mais confiável possível. Eu gostaria de desinstalar e montar condicionalmente se estiverem presentes e instalar à força, independentemente de estarem lá ou não ... mas o evento pré-construção ainda é importante para o próximo motivo:

Importante

É importante que todos os meus conjuntos sejam completamente desinstalados antes da construção, caso contrário, eles não são copiados para o meu diretório de saída (já que o compilador os encontra no GAC), portanto, a instalação do GAC falha, pois não consegue encontrar conjuntos na pasta de saída bin.

Como devo fazer a desinstalação e instalação do GAC de maneira confiável no meu aplicativo da web?

Foi útil?

Solução

Em vez disso, na ferramenta Gacutil, você não poderia programar o GAC instalar/desinstalar? Com o código, você pode pelo menos confiar nos códigos de erro do HRESULTS e reagir de acordo.

As informações sobre a API do GAC podem ser encontradas aqui:

http://blogs.msdn.com/b/junfeng/archive/2004/09/14/229649.aspx

Outras dicas

Se a construção for bem -sucedida, copie os conjuntos de saída para outro diretório e instale no GAC a partir daí. E no pré-construção, use este diretório para remover esses conjuntos do GAC.

Dessa forma, nunca deve haver assembléias no GAC durante a compilação. Você pode ajustar o pós-construção para copiar os binários apenas se todos eles forem construídos com sucesso verificando no arquivo em lote se todos os arquivos de saída existirem.

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