Instalação do GAC em todas as construções - como fazê -lo de maneira confiável
-
28-09-2019 - |
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?
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.