Sintomas
Num computador que esteja a executar o Microsoft .NET Framework 3.5 Service Pack 1 (SP1), o compilador do just-in-time (JIT) e o gerador de imagem (Ngen.exe) nativo que utilizam o ficheiro Mscorjit.dll podem gerar código incorrecto. Por conseguinte, uma aplicação C++ gerida de 32 bits pode produzir resultados incorrectos.
Este problema ocorre caso se verifiquem as seguintes condições:
-
A estrutura ou da classe no código de origem tem de ser inferior a quatro variedades escalares sem referências a objectos geridos.
-
Utilize a instrução cpblk em falta ou a instrução Initblk.
Nota Este problema não ocorre numa aplicação de 64 bits.
Causa
Este problema ocorre devido a uma regressão no .NET Framework 3.5 SP1.
Resolução
Informações sobre correção
Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afetado por este problema, recomendamos que aguarde pela próxima atualização de software que contenha esta correção.
Para transferir esta correcção a partir da Galeria de códigos MSDN, visite o seguinte Web site da Microsoft:
http://code.msdn.microsoft.com/KB957542
Nota Galeria de códigos MSDN apresenta os idiomas nos quais a correcção está disponível. Se não vir o idioma listado, é porque a página de recursos da Galeria de códigos não está disponível para esse idioma.
Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota Se tiver uma aplicação de 32 bits que é executada numa plataforma de 64 bits, aplique a correcção para a versão de 64 bits resolver este problema.
Pré-requisitos
Tem de ter o .NET Framework 3.5 SP1 instalado para aplicar esta correcção.
Requisito de reinício
Poderá ter de reiniciar o computador se algum dos ficheiros que estão actualizados estão a ser utilizados.
Informações sobre substituição da correção
Esta correcção não substitui quaisquer outras correcções.
Informações de ficheiro
A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.
Windows 2000, Windows XP e Windows Server 2003, x86 versões
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 de IA-64
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 de IA-64
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 este problema, utilize um dos seguintes métodos.
Método 1
Se o código da aplicação assemelha-se o código de exemplo na secção "Mais informação", localize a seguinte linha de código.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
Altere esta linha de código da seguinte forma.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))
Método 2
Implemente um ficheiro. ini. Para tal, crie um ficheiro que contém o código seguinte.
[.NET Framework Debugging Control]AllowOptimize=0
Nome do ficheiro. ini a mesma que o módulo problemático, mas utilizam a extensão. ini em vez da extensão. dll. Por exemplo, para o código de exemplo na secção "Mais informação", o nome do ficheiro. ini o ficheiro Bug.ini. Coloque o ficheiro Bug.ini no mesmo directório que o ficheiro Bug.dll.
Nota A desvantagem deste método é o efeito potencial de desempenho para nenhum optimizações. Se utilizar a geração de imagens nativas (Ngen.exe) para o módulo de pré-compilar, este método não é aplicável.
Método 3
Selectivamente aplique a opção de NoOptimization da enumeração MethodImplOptions para os métodos problemáticos, utilizando a classe MethodImplAttribute .
Nota Este método desactiva as optimizações para o compilador JIT e para a geração de imagens nativas (Ngen.exe) num nível por método. Quanto o desempenho é afectado varia, dependendo do método.
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Mais informações
Passos para reproduzir o problema
-
Crie uma aplicação C++ que se baseia o .NET Framework 3.5 SP1.
-
Adicionar um ficheiro. cpp ao projecto, este ficheiro o nome do ficheiro Bug.cpp e, em seguida, cole o seguinte código no ficheiro 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 ficheiro de Bug.cpp, execute o seguinte comando:
Cl /clr /GL /O2 bug.cpp /link/dll /out:bug.dll
-
Crie um projecto do Microsoft Visual c# novo para ser utilizado como o projecto de cliente.
-
O nome do ficheiro de código no ficheiro Test.cs e, em seguida, cole o seguinte código no ficheiro 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 ficheiro de Test.cs, execute o seguinte comando:
CSC /r:bug.dll test.cs
-
Para incorporar o manifesto do ficheiro de Test.exe, execute o seguinte comando:
MT.exe - nologo-manifesto bug.dll.manifest-outputresource:test.exe;1
-
Execute o ficheiro Test.exe.
Repare que os resultados reais são o seguinte:
1.33333333333333, 1.333333333333, 0No entanto, o resultado esperado é a seguinte:
1.33333333333333, 0, 0
Referências
Para mais informações sobre a terminologia de atualização de software, clique no seguinte número de artigo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
824684 descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft