Sintomas
Em um computador que esteja executando o Microsoft.NET Framework 3.5 Service Pack 1 (SP1), o compilador just-in-time (JIT) e o Native Image Generator (Ngen.exe) que utilizam o ficheiro mscorjit podem gerar código incorreto. Portanto, um aplicativo de C++ gerenciado de 32 bits pode produzir resultados incorretos.
Esse problema ocorre caso as seguintes condições sejam verdadeiras:
-
A estrutura ou a classe no código-fonte tem menos de quatro variedades escalares e nenhuma referência de objeto gerenciado.
-
Use a instrução Cpblk ou a instrução Initblk.
Observação: Esse problema não ocorre em um aplicativo de 64 bits.
Causa
Esse problema ocorre devido a uma regressão no.NET Framework 3.5 SP1.
Resolução
Informações sobre o hotfix
Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique este hotfix somente aos sistemas que apresentarem esse problema específico. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde a próxima atualização de software que contenha esse hotfix.
Para baixar esse hotfix do MSDN Code Gallery, visite o seguinte site da Microsoft:
http://code.msdn.microsoft.com/KB957542
Observação: O MSDN Code Gallery exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma listado, é porque a página de recursos da Galeria de código não está disponível para esse idioma.
Observação: caso outros problemas estejam ocorrendo ou caso qualquer solução de problemas seja necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não sejam específicos deste hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e suporte ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportObservação: Se você tiver um aplicativo de 32 bits que é executado em uma plataforma de 64 bits, aplique o hotfix para a versão de 64 bits resolver esse problema.
Pré-requisitos:
Você deve ter o.NET Framework 3.5 SP1 instalado para aplicar esse hotfix.
Requisitos de reinicialização:
Você terá que reiniciar o computador se os arquivos atualizados estão sendo usados.
Informações de substituição do hotfix:
Esse hotfix não substitui outros hotfixes.
Informações sobre o arquivo:
A versão em inglês deste hotfix possui os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas na Hora Universal Coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para localizar a diferença entre o UTC e a hora local, use a guia Fuso Horário no item Data e Hora no Painel de Controle.
Windows 2000, Windows XP e Windows Server 2003, x86 versões
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
Windows 2000, Windows XP e Windows Server 2003, x64 versões
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
x86 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
x86 |
Mscordacwks.dll |
2.0.50727.3068 |
1,767,944 |
16-Sep-2008 |
10:33 |
x64 |
Mscorjit.dll |
2.0.50727.3068 |
1,580,032 |
16-Sep-2008 |
10:33 |
x64 |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
16-Sep-2008 |
10:33 |
x64 |
Mscorwks.dll |
2.0.50727.3068 |
10,079,744 |
16-Sep-2008 |
10:33 |
x64 |
Windows 2000, Windows XP e Windows Server 2003, versões IA-64
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
16-Sep-2008 |
13:13 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
16-Sep-2008 |
13:13 |
x86 |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
16-Sep-2008 |
13:13 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
16-Sep-2008 |
13:13 |
x86 |
Mscordacwks.dll |
2.0.50727.3068 |
3,087,880 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorjit.dll |
2.0.50727.3068 |
2,560,512 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
16-Sep-2008 |
10:44 |
IA-64 |
Mscorwks.dll |
2.0.50727.3068 |
20,153,856 |
16-Sep-2008 |
10:44 |
IA-64 |
Windows Vista Service Pack 1 (SP1) e Windows Server 2008 x86 versões
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Mscorlib.resources.dll |
2.0.50727.3053 |
352,256 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
425,984 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
331,776 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
290,816 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.1434 |
397,312 |
11-Jan-2008 |
22:59 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:55 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:55 |
x86 |
Big5.nlp |
Não aplicável |
66,728 |
18-Dec-2007 |
21:03 |
Não aplicável |
Bopomofo.nlp |
Não aplicável |
82,172 |
18-Dec-2007 |
21:03 |
Não aplicável |
Ksc.nlp |
Não aplicável |
116,756 |
18-Dec-2007 |
21:04 |
Não aplicável |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Não aplicável |
59,342 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfc.nlp |
Não aplicável |
45,794 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfd.nlp |
Não aplicável |
39,284 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkc.nlp |
Não aplicável |
66,384 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkd.nlp |
Não aplicável |
60,294 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prc.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prcp.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sortkey.nlp |
Não aplicável |
262,148 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sorttbls.nlp |
Não aplicável |
20,320 |
18-Dec-2007 |
21:05 |
Não aplicável |
Xjis.nlp |
Não aplicável |
28,288 |
18-Dec-2007 |
21:05 |
Não aplicável |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
Windows Vista SP1 e Windows Server 2008 x64 versões
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Big5.nlp |
Não aplicável |
66,728 |
18-Dec-2007 |
21:01 |
Não aplicável |
Bopomofo.nlp |
Não aplicável |
82,172 |
18-Dec-2007 |
21:01 |
Não aplicável |
Ksc.nlp |
Não aplicável |
116,756 |
18-Dec-2007 |
21:02 |
Não aplicável |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
01-Oct-2008 |
22:25 |
x64 |
Normidna.nlp |
Não aplicável |
59,342 |
18-Dec-2007 |
21:03 |
Não aplicável |
Normnfc.nlp |
Não aplicável |
45,794 |
18-Dec-2007 |
21:03 |
Não aplicável |
Normnfd.nlp |
Não aplicável |
39,284 |
18-Dec-2007 |
21:03 |
Não aplicável |
Normnfkc.nlp |
Não aplicável |
66,384 |
18-Dec-2007 |
21:03 |
Não aplicável |
Normnfkd.nlp |
Não aplicável |
60,294 |
18-Dec-2007 |
21:03 |
Não aplicável |
Prc.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:03 |
Não aplicável |
Prcp.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:03 |
Não aplicável |
Sortkey.nlp |
Não aplicável |
262,148 |
18-Dec-2007 |
21:03 |
Não aplicável |
Sorttbls.nlp |
Não aplicável |
20,320 |
18-Dec-2007 |
21:03 |
Não aplicável |
Xjis.nlp |
Não aplicável |
28,288 |
18-Dec-2007 |
21:03 |
Não aplicável |
Mscordacwks.dll |
2.0.50727.3068 |
1,767,944 |
01-Oct-2008 |
22:25 |
x64 |
Mscorjit.dll |
2.0.50727.3068 |
1,580,032 |
24-Sep-2008 |
23:06 |
x64 |
Mscorwks.dll |
2.0.50727.3068 |
10,079,744 |
01-Oct-2008 |
22:25 |
x64 |
Mscorlib.resources.dll |
2.0.50727.3053 |
352,256 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
425,984 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
331,776 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
18:02 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
290,816 |
15-Sep-2008 |
22:26 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
303,104 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
307,200 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.1434 |
397,312 |
11-Jan-2008 |
22:59 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
299,008 |
15-Sep-2008 |
22:25 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:56 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:56 |
x86 |
Big5.nlp |
Não aplicável |
66,728 |
18-Dec-2007 |
21:03 |
Não aplicável |
Bopomofo.nlp |
Não aplicável |
82,172 |
18-Dec-2007 |
21:03 |
Não aplicável |
Ksc.nlp |
Não aplicável |
116,756 |
18-Dec-2007 |
21:04 |
Não aplicável |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Não aplicável |
59,342 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfc.nlp |
Não aplicável |
45,794 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfd.nlp |
Não aplicável |
39,284 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkc.nlp |
Não aplicável |
66,384 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkd.nlp |
Não aplicável |
60,294 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prc.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prcp.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sortkey.nlp |
Não aplicável |
262,148 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sorttbls.nlp |
Não aplicável |
20,320 |
18-Dec-2007 |
21:05 |
Não aplicável |
Xjis.nlp |
Não aplicável |
28,288 |
18-Dec-2007 |
21:05 |
Não aplicável |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
Windows Vista SP1 e Windows Server 2008, versões IA-64
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Big5.nlp |
Não aplicável |
66,728 |
18-Dec-2007 |
21:06 |
Não aplicável |
Bopomofo.nlp |
Não aplicável |
82,172 |
18-Dec-2007 |
21:06 |
Não aplicável |
Ksc.nlp |
Não aplicável |
116,756 |
18-Dec-2007 |
21:06 |
Não aplicável |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
01-Oct-2008 |
22:26 |
IA-64 |
Normidna.nlp |
Não aplicável |
59,342 |
18-Dec-2007 |
21:08 |
Não aplicável |
Normnfc.nlp |
Não aplicável |
45,794 |
18-Dec-2007 |
21:08 |
Não aplicável |
Normnfd.nlp |
Não aplicável |
39,284 |
18-Dec-2007 |
21:08 |
Não aplicável |
Normnfkc.nlp |
Não aplicável |
66,384 |
18-Dec-2007 |
21:08 |
Não aplicável |
Normnfkd.nlp |
Não aplicável |
60,294 |
18-Dec-2007 |
21:08 |
Não aplicável |
Prc.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:08 |
Não aplicável |
Prcp.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:08 |
Não aplicável |
Sortkey.nlp |
Não aplicável |
262,148 |
18-Dec-2007 |
21:08 |
Não aplicável |
Sorttbls.nlp |
Não aplicável |
20,320 |
18-Dec-2007 |
21:08 |
Não aplicável |
Xjis.nlp |
Não aplicável |
28,288 |
18-Dec-2007 |
21:08 |
Não aplicável |
Mscordacwks.dll |
2.0.50727.3068 |
3,087,880 |
01-Oct-2008 |
22:26 |
IA-64 |
Mscorjit.dll |
2.0.50727.3068 |
2,560,512 |
24-Sep-2008 |
23:14 |
IA-64 |
Mscorwks.dll |
2.0.50727.3068 |
20,153,856 |
01-Oct-2008 |
22:26 |
IA-64 |
Mscorlib.resources.dll |
2.0.50727.3053 |
315,392 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
311,296 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
348,160 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
319,488 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:58 |
x86 |
Mscorlib.resources.dll |
2.0.50727.3053 |
278,528 |
27-Jul-2008 |
17:59 |
x86 |
Big5.nlp |
Não aplicável |
66,728 |
18-Dec-2007 |
21:03 |
Não aplicável |
Bopomofo.nlp |
Não aplicável |
82,172 |
18-Dec-2007 |
21:03 |
Não aplicável |
Ksc.nlp |
Não aplicável |
116,756 |
18-Dec-2007 |
21:04 |
Não aplicável |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Não aplicável |
59,342 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfc.nlp |
Não aplicável |
45,794 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfd.nlp |
Não aplicável |
39,284 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkc.nlp |
Não aplicável |
66,384 |
18-Dec-2007 |
21:05 |
Não aplicável |
Normnfkd.nlp |
Não aplicável |
60,294 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prc.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Prcp.nlp |
Não aplicável |
83,748 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sortkey.nlp |
Não aplicável |
262,148 |
18-Dec-2007 |
21:05 |
Não aplicável |
Sorttbls.nlp |
Não aplicável |
20,320 |
18-Dec-2007 |
21:05 |
Não aplicável |
Xjis.nlp |
Não aplicável |
28,288 |
18-Dec-2007 |
21:05 |
Não aplicável |
Mscordacwks.dll |
2.0.50727.3068 |
992,264 |
01-Oct-2008 |
22:27 |
x86 |
Mscorjit.dll |
2.0.50727.3068 |
367,104 |
24-Sep-2008 |
22:21 |
x86 |
Mscorwks.dll |
2.0.50727.3068 |
5,815,808 |
01-Oct-2008 |
22:27 |
x86 |
Solução alternativa
Para contornar esse problema, use um dos seguintes métodos.
Método 1
Se o código do aplicativo se pareça com o código de exemplo na seção "Mais informações", localize a seguinte linha de código.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
Altere esta linha de código como a seguir.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))
Método 2
Implante um arquivo. ini. Para fazer isso, crie um arquivo que contém o código a seguir.
[.NET Framework Debugging Control]AllowOptimize=0
Nomeie o arquivo. ini igual o módulo problemático, mas usar a extensão. ini em vez da extensão. dll. Por exemplo, para o código de exemplo na seção "Mais informações", nomeie o arquivo. ini o arquivo Bug.ini. Coloque o arquivo Bug.ini no mesmo diretório que o arquivo Bug.dll.
Observação: A desvantagem desse método é o efeito de desempenho potencial para nenhuma otimizações. Se você usa o Native Image Generator (Ngen.exe) para pré-compilar o módulo, esse método não é aplicável.
Método 3
Aplique seletivamente a opção de NoOptimization da enumeração MethodImplOptions aos métodos problemáticos, usando a classe MethodImplAttribute .
Observação: Este método desativa as otimizações para o compilador JIT e o Native Image Generator (Ngen.exe) em um nível por método. Quanto o desempenho é afetado varia de acordo com o método.
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".
Mais informações
Etapas para simular o problema
-
Crie um aplicativo de C++ que se baseia no.NET Framework 3.5 SP1.
-
Adicionar um arquivo. cpp no projeto, nomeie o arquivo o arquivo Bug.cpp e, em seguida, cole o seguinte código no arquivo Bug.cpp.
#using <mscorlib.dll>#include <stdlib.h>
class AcGeVector3d
{
double x, y, z;
public:
__forceinline AcGeVector3d(const AcGeVector3d& src): x(src.x),y(src.y),z(src.z)
{
}
__forceinline AcGeVector3d(double xx, double yy, double zz) : x(xx),y(yy),z(zz)
{
}
__forceinline AcGeVector3d operator / (double val) const
{
return AcGeVector3d (x/val, y/val, z/val);
}
};
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x)))
namespace Geometry
{
[System::Runtime::InteropServices::StructLayout(System::Runtime::InteropServices::LayoutKind::Sequential)]
public value class Vector3d
{
internal:
double m_x, m_y, m_z;
Vector3d(const AcGeVector3d* obj)
{
GETVECTOR3D(*this) = *obj;
}
public:
Vector3d(double x, double y, double z):m_x(x),m_y(y), m_z(z) {}
Vector3d DivideBy(double value)
{
return Vector3d(&GETVECTOR3D(*this).operator /(value));
}
virtual System::String^ ToString() override
{
return System::String::Format("{0}, {1}, {2}", m_x, m_y, m_z);
}
};
} -
Para compilar o arquivo Bug.cpp, execute o seguinte comando:
Cl /clr /GL /O2 bug.cpp /link /dll /out:bug.dll
-
Crie um projeto Microsoft Visual C# novo a ser usado como o projeto do cliente.
-
Nomeie o arquivo de código o arquivo Test.cs e, em seguida, cole o seguinte código no arquivo Test.cs.
using Geometry;namespace Test
{
class Tester
{
static void Main()
{
Vector3d v = new Vector3d(200, 200, 0);
v = v.DivideBy(150);
System.Console.WriteLine("{0}", v);
}
}
} -
Para compilar o arquivo Test.cs, execute o seguinte comando:
CSC /r:bug.dll test.cs
-
Para incorporar o manifesto para o arquivo Test.exe, execute o seguinte comando:
MT.exe - /nologo-manifesto bug.dll.manifest-outputresource:test.exe;1
-
Execute o arquivo Test.exe.
Observe que o resultado real é o seguinte:
1.33333333333333, 1.333333333333, 0No entanto, o resultado esperado é o seguinte:
1.33333333333333, 0, 0
Referências
Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
824684 descrição da terminologia padrão usada para descrever as atualizações de software