Pergunta

Até recentemente, fomos felizes usando Registro-livre COM para nossos componentes e .NET COM nativas. No entanto, nós funcionamos em um problema estranho onde o nosso aplicativo foi iniciado travando aleatoriamente no Windows XP SP3 (mas não no Vista) depois que só mudou o número da versão de um .NET assembly para se deslocar de release candidate a liberação. (Não é apenas odeio a lei de Murphy?)

Depois de muitos um homem perdido-dia e ranger de dentes, descobrimos que o problema era um erro conhecido no sxs .dll que causa corrupção de memória ao recuperar informações sobre uma classe .NET. Há um hot-fix que torna o problema desaparecer, mas hot-fixes não se destinam a ser redistribuído.

Estamos perplexos meio que existe um bug tão horrível na implementação COM sem registro. Tem alguém lá fora, com sucesso usando registro-livre COM para componentes .NET? Como você contornar este problema?

Foi útil?

Solução

Este problema está relacionado à forma como SxS calcula o tamanho das informações de classe. O número da versão do conjunto faz parte dessas informações.

Desde que foi trabalhar com o número da versão release candidate, talvez a solução para você é fazer com que o número da versão do lançamento do mesmo comprimento que a versão RC.

Se isso não funcionar para você, não é um processo estabelecido para o pedido de direitos de redistribuição para hotfixes. Eu iria envolver o suporte ao cliente Microsoft para prosseguir esta via.

Outras dicas

Estamos usando componentes de registro-livre COM tanto para nativos e .NET. Decidimos usar um número de versão de montagem fixa para esses componentes (principalmente para evitar desordenar o registro quando componentes .NET repetidamente ing-Regasm que tiveram um número de compilação dinâmica / *). Não é o ideal, mas nós temos outras maneiras de determinar qual versão de um determinado componente está sendo usado (eles nunca remendado individualmente).

Isso soa como uma questão muito desagradável, de fato! Esse artigo KB quase faz parecer que usando SxS é opcional ... Tanto quanto eu sei que é a única maneira de fazer reg-livre COM?

FYI o hotfix está agora diretamente para download: http: // www.microsoft.com/en-us/download/details.aspx?id=27680

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