Por que o Windows lado a lado (winsxs) instalar política para atualização automática quando há problemas conhecidos entre as versões?
-
29-08-2019 - |
Pergunta
Nós temos um aplicativo compilado usando MSVC 2K5, SP1 (versão 762 msvcrt80)
Tudo está bem, se a direita até instalações alguém na mesma máquina .Net3.0SP1, e junto com ele msvcrt80 versão 1433 está instalado e uma política para automaticamente atualizar.
Agora temos falhas aleatórias em todo o lugar e clientes insatisfeitos.
Eu entendo que podemos ajustar os nossos arquivos de manifesto para forçar o uso de uma versão específica, mas eu só encontrei a maneira realmente feio de copiar detalhe que é gerado automaticamente e modificá-lo com a mão. Isto é especialmente desagradável com um grande número de aplicativos para correção
Podemos vez se livrar da política estúpida 'upgrade' no diretório WinSxS? Existe uma opção / flag para compilar para uma versão específica somente e ainda gerar automaticamente os manifestos?
Solução
Encontre o manifesto gerado para a sua versão específica do CRT. Em seguida, adicione um pragma para o arquivo principal do seu aplicativo:
#pragma comment(linker,"/manifestdependency:\"type='win32' " \
"name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \
"version='" _CRT_ASSEMBLY_VERSION "' " \
"processorArchitecture='x86' " \
"publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")