Síntomas
En un equipo que está ejecutando el Service Pack 1 (SP1) de Microsoft.NET Framework 3.5, el compilador de just-in-time (JIT) y Native Image Generator (Ngen.exe) que utilicen el archivo Mscorjit.dll pueden generar código incorrecto. Por lo tanto, una aplicación de C++ administrado de 32 bits puede producir resultados incorrectos.
Este problema se produce si se cumplen las condiciones siguientes:-
La estructura o la clase en el código fuente tiene menos de cuatro variedades de escalares y ninguna referencia de objeto administrado.
-
Utilice la instrucción Cpblk o la instrucción Initblk.
Nota: Este problema no ocurre en una aplicación de 64 bits.
Causa
Este problema se produce debido a una regresión en.NET Framework 3.5 SP1.
Solución
Información de la revisión
Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir únicamente el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Esta revisión podría ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la próxima actualización de software que contenga este hotfix.
Para descargar esta revisión desde MSDN Code Gallery, visite el siguiente sitio Web de Microsoft:http://code.msdn.microsoft.com/KB957542 Nota: MSDN Code Gallery muestra los idiomas para los que la revisión está disponible. Si no ve su idioma en la lista, es porque la página de recursos de galería de código no está disponible para ese idioma. Nota: Si se producen problemas adicionales o si se requiere cualquier otra solución, será necesario crear una solicitud de revisión independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no califican para esta revisión específica. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota: Si tiene una aplicación de 32 bits que se ejecuta en una plataforma de 64 bits, aplique la revisión para la versión de 64 bits resolver este problema.
Requisitos previos
Debe tener la versión.NET Framework 3.5 SP1 instalado para aplicar esta revisión.
Requisito de reinicio
Tendrá que reiniciar el equipo si se utiliza alguno de los archivos que se actualizan.
Información de reemplazo de revisión
Este hotfix no sustituye a otras revisiones.
Información de archivo
La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.
Windows 2000, Windows XP y Windows Server 2003, x86 versiones
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
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 y Windows Server 2003, x64 versiones
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
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 y Windows Server 2003, versiones IA-64
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
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) y Windows Server 2008, x86 versiones
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
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 |
No aplicable |
66,728 |
18-Dec-2007 |
21:03 |
No aplicable |
Bopomofo.nlp |
No aplicable |
82,172 |
18-Dec-2007 |
21:03 |
No aplicable |
Ksc.nlp |
No aplicable |
116,756 |
18-Dec-2007 |
21:04 |
No aplicable |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
No aplicable |
59,342 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfc.nlp |
No aplicable |
45,794 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfd.nlp |
No aplicable |
39,284 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkc.nlp |
No aplicable |
66,384 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkd.nlp |
No aplicable |
60,294 |
18-Dec-2007 |
21:05 |
No aplicable |
Prc.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Prcp.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Sortkey.nlp |
No aplicable |
262,148 |
18-Dec-2007 |
21:05 |
No aplicable |
Sorttbls.nlp |
No aplicable |
20,320 |
18-Dec-2007 |
21:05 |
No aplicable |
Xjis.nlp |
No aplicable |
28,288 |
18-Dec-2007 |
21:05 |
No aplicable |
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 y Windows Server 2008, x64 versiones
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Hora |
Plataforma |
---|---|---|---|---|---|
Big5.nlp |
No aplicable |
66,728 |
18-Dec-2007 |
21:01 |
No aplicable |
Bopomofo.nlp |
No aplicable |
82,172 |
18-Dec-2007 |
21:01 |
No aplicable |
Ksc.nlp |
No aplicable |
116,756 |
18-Dec-2007 |
21:02 |
No aplicable |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
01-Oct-2008 |
22:25 |
x64 |
Normidna.nlp |
No aplicable |
59,342 |
18-Dec-2007 |
21:03 |
No aplicable |
Normnfc.nlp |
No aplicable |
45,794 |
18-Dec-2007 |
21:03 |
No aplicable |
Normnfd.nlp |
No aplicable |
39,284 |
18-Dec-2007 |
21:03 |
No aplicable |
Normnfkc.nlp |
No aplicable |
66,384 |
18-Dec-2007 |
21:03 |
No aplicable |
Normnfkd.nlp |
No aplicable |
60,294 |
18-Dec-2007 |
21:03 |
No aplicable |
Prc.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:03 |
No aplicable |
Prcp.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:03 |
No aplicable |
Sortkey.nlp |
No aplicable |
262,148 |
18-Dec-2007 |
21:03 |
No aplicable |
Sorttbls.nlp |
No aplicable |
20,320 |
18-Dec-2007 |
21:03 |
No aplicable |
Xjis.nlp |
No aplicable |
28,288 |
18-Dec-2007 |
21:03 |
No aplicable |
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 |
No aplicable |
66,728 |
18-Dec-2007 |
21:03 |
No aplicable |
Bopomofo.nlp |
No aplicable |
82,172 |
18-Dec-2007 |
21:03 |
No aplicable |
Ksc.nlp |
No aplicable |
116,756 |
18-Dec-2007 |
21:04 |
No aplicable |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
No aplicable |
59,342 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfc.nlp |
No aplicable |
45,794 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfd.nlp |
No aplicable |
39,284 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkc.nlp |
No aplicable |
66,384 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkd.nlp |
No aplicable |
60,294 |
18-Dec-2007 |
21:05 |
No aplicable |
Prc.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Prcp.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Sortkey.nlp |
No aplicable |
262,148 |
18-Dec-2007 |
21:05 |
No aplicable |
Sorttbls.nlp |
No aplicable |
20,320 |
18-Dec-2007 |
21:05 |
No aplicable |
Xjis.nlp |
No aplicable |
28,288 |
18-Dec-2007 |
21:05 |
No aplicable |
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 y Windows Server 2008, versiones IA-64
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Hora |
Plataforma |
---|---|---|---|---|---|
Big5.nlp |
No aplicable |
66,728 |
18-Dec-2007 |
21:06 |
No aplicable |
Bopomofo.nlp |
No aplicable |
82,172 |
18-Dec-2007 |
21:06 |
No aplicable |
Ksc.nlp |
No aplicable |
116,756 |
18-Dec-2007 |
21:06 |
No aplicable |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
01-Oct-2008 |
22:26 |
IA-64 |
Normidna.nlp |
No aplicable |
59,342 |
18-Dec-2007 |
21:08 |
No aplicable |
Normnfc.nlp |
No aplicable |
45,794 |
18-Dec-2007 |
21:08 |
No aplicable |
Normnfd.nlp |
No aplicable |
39,284 |
18-Dec-2007 |
21:08 |
No aplicable |
Normnfkc.nlp |
No aplicable |
66,384 |
18-Dec-2007 |
21:08 |
No aplicable |
Normnfkd.nlp |
No aplicable |
60,294 |
18-Dec-2007 |
21:08 |
No aplicable |
Prc.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:08 |
No aplicable |
Prcp.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:08 |
No aplicable |
Sortkey.nlp |
No aplicable |
262,148 |
18-Dec-2007 |
21:08 |
No aplicable |
Sorttbls.nlp |
No aplicable |
20,320 |
18-Dec-2007 |
21:08 |
No aplicable |
Xjis.nlp |
No aplicable |
28,288 |
18-Dec-2007 |
21:08 |
No aplicable |
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 |
No aplicable |
66,728 |
18-Dec-2007 |
21:03 |
No aplicable |
Bopomofo.nlp |
No aplicable |
82,172 |
18-Dec-2007 |
21:03 |
No aplicable |
Ksc.nlp |
No aplicable |
116,756 |
18-Dec-2007 |
21:04 |
No aplicable |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
No aplicable |
59,342 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfc.nlp |
No aplicable |
45,794 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfd.nlp |
No aplicable |
39,284 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkc.nlp |
No aplicable |
66,384 |
18-Dec-2007 |
21:05 |
No aplicable |
Normnfkd.nlp |
No aplicable |
60,294 |
18-Dec-2007 |
21:05 |
No aplicable |
Prc.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Prcp.nlp |
No aplicable |
83,748 |
18-Dec-2007 |
21:05 |
No aplicable |
Sortkey.nlp |
No aplicable |
262,148 |
18-Dec-2007 |
21:05 |
No aplicable |
Sorttbls.nlp |
No aplicable |
20,320 |
18-Dec-2007 |
21:05 |
No aplicable |
Xjis.nlp |
No aplicable |
28,288 |
18-Dec-2007 |
21:05 |
No aplicable |
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 |
Solución alternativa
Para evitar este problema, utilice uno de los métodos siguientes.
Método 1
Si el código de aplicación asemeja el código de ejemplo en la sección "Más información", busque la siguiente línea de código.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
Cambie esta línea de código como sigue.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))
Método 2
Implementar un archivo. ini. Para ello, cree un archivo que contiene el código siguiente.
[.NET Framework Debugging Control]AllowOptimize=0
Nombre del archivo .ini el mismo que el módulo problemático, pero utilice la extensión. ini en lugar de la extensión. dll. Por ejemplo, para el código de ejemplo en la sección "Más información", el nombre del archivo .ini el archivo Bug.ini. Coloque el archivo Bug.ini en el mismo directorio que el archivo Bug.dll.
Nota: El inconveniente de este método es el efecto de rendimiento potencial para sin optimizaciones. Si utiliza el generador de imágenes nativas (Ngen.exe) para precompilar el módulo, este método no es aplicable.Método 3
Aplicar de forma selectiva la opción NoOptimization de la enumeración MethodImplOptions a los métodos problemáticos mediante la clase MethodImplAttribute .
Nota: Este método deshabilita las optimizaciones para el compilador JIT y Native Image Generator (Ngen.exe) a nivel de método. ¿Cuánto se ve afectado el rendimiento varía en función del método.Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Más información
Pasos para reproducir el problema
-
Crear una aplicación de C++ que se basa en el.NET Framework 3.5 SP1.
-
Agregar un archivo .cpp al proyecto, el archivo Bug.cpp al archivo el nombre y, a continuación, pegue el código siguiente en el archivo 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 el archivo Bug.cpp, ejecute el siguiente comando:
cl/clr/GL/O2 bug.cpp /link /dll /out:bug.dll
-
Cree un nuevo proyecto de Microsoft Visual C# que se utilizará como el proyecto de cliente.
-
Nombre del archivo de código en el archivo Test.cs y, a continuación, pegue el código siguiente en el archivo 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 el archivo Test.cs, ejecute el siguiente comando:
csc /r:bug.dll test.cs
-
Para incrustar el manifiesto en el archivo Test.exe, ejecute el siguiente comando:
MT.exe - nologo-manifiesto bug.dll.manifest-outputresource:test.exe;1
-
Ejecute el archivo Test.exe.
Observe que el resultado real es el siguiente:
1.33333333333333, 1.333333333333, 0Sin embargo, el resultado esperado es como sigue:
1.33333333333333, 0, 0
Referencias
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft