Symptômes
Sur un ordinateur qui exécute Microsoft .NET Framework 3.5 Service Pack 1 (SP1), le compilateur juste-à-temps (JIT) et le générateur d’images natives (Ngen.exe) qui utilisent le fichier Mscorjit.dll peuvent générer du code incorrect. Par conséquent, une application C++ managée 32 bits peut produire des résultats incorrects.
Ce problème se produit lorsque les conditions suivantes sont remplies :
- Le struct ou la classe dans le code source a moins de quatre variétés scalaires et aucune référence d’objet managé.
- Vous utilisez l’instruction Cpblk ou l’instruction Initblk.
Remarque Ce problème ne se produit pas dans une application 64 bits.
Cause
Ce problème se produit en raison d’une régression dans .NET Framework 3.5 SP1.
Résolution
Informations sur le correctif logiciel
Un correctif logiciel pris en charge est disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. Appliquez ce correctif logiciel uniquement aux systèmes qui rencontrent ce problème spécifique. Ce correctif logiciel va peut-être subir des tests supplémentaires. Ainsi, si vous n'êtes pas sérieusement concerné par ce problème, il est recommandé d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.
Pour télécharger ce correctif logiciel à partir de MSDN Code Gallery, visitez le site web Microsoft suivant :
http://code.msdn.microsoft.com/KB957542
Remarque Msdn Code Gallery affiche les langues pour lesquelles le correctif logiciel est disponible. Si vous ne voyez pas votre langue répertoriée, c’est que la page de ressources De la galerie de codes n’est pas disponible pour cette langue.
Remarque Si des problèmes supplémentaires surviennent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être créer une demande de service distincte. Les coûts habituels du support s'appliqueront aux autres questions et problèmes du support non directement liés au correctif logiciel en question. Pour obtenir la liste complète des numéros de téléphone des services d'assistance technique Microsoft ou pour créer une demande de service distincte, reportez-vous au site web de Microsoft à l'adresse suivante :
http://support.microsoft.com/contactus/?ws=support Remarque Si vous disposez d’une application 32 bits qui s’exécute sur une plateforme 64 bits, appliquez le correctif logiciel pour la version 64 bits pour résoudre ce problème.
Configuration requise
Le .NET Framework 3.5 SP1 doit être installé pour appliquer ce correctif.
Nécessité de redémarrer
Vous devrez peut-être redémarrer l’ordinateur si l’un des fichiers mis à jour est utilisé.
Informations sur le remplacement des correctifs logiciels
Ce correctif logiciel n'en remplace pas d'autre.
Informations de fichier
La version anglaise de ce correctif logiciel contient les attributs de fichier (ou les attributs de fichier ultérieurs) répertoriés dans le tableau suivant. Les date et heure de création de ces fichiers sont exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations des fichiers, les données sont converties en heure locale. Pour connaître le décalage entre l’heure UTC et l’heure locale, utilisez l’onglet Fuseau horaire dans l’élément Date et heure du Panneau de configuration.
Windows 2000, Windows XP et Windows Server 2003, versions x86
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure |
|---|---|---|---|---|
| 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 et Windows Server 2003, versions x64
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure | Plateforme |
|---|---|---|---|---|---|
| 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 |
Versions de Windows 2000, Windows XP et Windows Server 2003, IA-64
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure | Plateforme |
|---|---|---|---|---|---|
| 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 | 1,044 | IA-64 |
| Mscorjit.dll | 2.0.50727.3068 | 2,560,512 | 16-Sep-2008 | 1,044 | IA-64 |
| Mscorlib.dll | 2.0.50727.3068 | 4,005,888 | 16-Sep-2008 | 1,044 | IA-64 |
| Mscorwks.dll | 2.0.50727.3068 | 20,153,856 | 16-Sep-2008 | 1,044 | IA-64 |
Windows Vista Service Pack 1 (SP1) et Windows Server 2008, versions x86
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure | Plateforme |
|---|---|---|---|---|---|
| Mscorlib.resources.dll | 2.0.50727.3053 | 352,256 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 315,392 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 425,984 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 311,296 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 331,776 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 315,392 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 27-Juil-2008 | 17:55 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 348,160 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 319,488 | 27-Juil-2008 | 17:55 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 290 816 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 311,296 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 27-Juil-2008 | 17:55 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 15-Sep-2008 | 2,225 | 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 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 17:55 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 17:55 | x86 |
| Big5.nlp | Non applicable | 66,728 | 18-Déc-2007 | 21:03 | Non applicable |
| Bopomofo.nlp | Non applicable | 82,172 | 18-Déc-2007 | 21:03 | Non applicable |
| Ksc.nlp | Non applicable | 116,756 | 18-Déc-2007 | 21:04 | Non applicable |
| Mscorlib.dll | 2.0.50727.3068 | 4,546,560 | 01/01/2008 | 22:27 | x86 |
| Normidna.nlp | Non applicable | 59,342 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfc.nlp | Non applicable | 45,794 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfd.nlp | Non applicable | 39,284 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkc.nlp | Non applicable | 66,384 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkd.nlp | Non applicable | 60,294 | 18-Déc-2007 | 21:05 | Non applicable |
| Prc.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Prcp.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Sortkey.nlp | Non applicable | 262,148 | 18-Déc-2007 | 21:05 | Non applicable |
| Sorttbls.nlp | Non applicable | 20,320 | 18-Déc-2007 | 21:05 | Non applicable |
| Xjis.nlp | Non applicable | 28,288 | 18-Déc-2007 | 21:05 | Non applicable |
| Mscordacwks.dll | 2.0.50727.3068 | 992,264 | 01/01/2008 | 22:27 | x86 |
| Mscorjit.dll | 2.0.50727.3068 | 367,104 | 24-Sep-2008 | 2,221 | x86 |
| Mscorwks.dll | 2.0.50727.3068 | 5,815,808 | 01/01/2008 | 22:27 | x86 |
Windows Vista SP1 et Windows Server 2008, versions x64
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure | Plateforme |
|---|---|---|---|---|---|
| Big5.nlp | Non applicable | 66,728 | 18-Déc-2007 | 21:01 | Non applicable |
| Bopomofo.nlp | Non applicable | 82,172 | 18-Déc-2007 | 21:01 | Non applicable |
| Ksc.nlp | Non applicable | 116,756 | 18-Déc-2007 | 21:02 | Non applicable |
| Mscorlib.dll | 2.0.50727.3068 | 4,562,944 | 01/01/2008 | 2,225 | x64 |
| Normidna.nlp | Non applicable | 59,342 | 18-Déc-2007 | 21:03 | Non applicable |
| Normnfc.nlp | Non applicable | 45,794 | 18-Déc-2007 | 21:03 | Non applicable |
| Normnfd.nlp | Non applicable | 39,284 | 18-Déc-2007 | 21:03 | Non applicable |
| Normnfkc.nlp | Non applicable | 66,384 | 18-Déc-2007 | 21:03 | Non applicable |
| Normnfkd.nlp | Non applicable | 60,294 | 18-Déc-2007 | 21:03 | Non applicable |
| Prc.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:03 | Non applicable |
| Prcp.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:03 | Non applicable |
| Sortkey.nlp | Non applicable | 262,148 | 18-Déc-2007 | 21:03 | Non applicable |
| Sorttbls.nlp | Non applicable | 20,320 | 18-Déc-2007 | 21:03 | Non applicable |
| Xjis.nlp | Non applicable | 28,288 | 18-Déc-2007 | 21:03 | Non applicable |
| Mscordacwks.dll | 2.0.50727.3068 | 1,767,944 | 01/01/2008 | 2,225 | 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/01/2008 | 2,225 | x64 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 352,256 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 315,392 | 27-Juil-2008 | 18:02 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 425,984 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 27-Juil-2008 | 18:02 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 311,296 | 27-Juil-2008 | 18:02 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 331,776 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 315,392 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 27-Juil-2008 | 17:56 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 348,160 | 27-Juil-2008 | 18:02 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 319,488 | 27-Juil-2008 | 17:56 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 290 816 | 15-Sep-2008 | 01:22:26 AM | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 311,296 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 303 104 | 27-Juil-2008 | 17:56 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 307 200 | 15-Sep-2008 | 2,225 | 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 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 299 008 | 15-Sep-2008 | 2,225 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 17:56 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 17:56 | x86 |
| Big5.nlp | Non applicable | 66,728 | 18-Déc-2007 | 21:03 | Non applicable |
| Bopomofo.nlp | Non applicable | 82,172 | 18-Déc-2007 | 21:03 | Non applicable |
| Ksc.nlp | Non applicable | 116,756 | 18-Déc-2007 | 21:04 | Non applicable |
| Mscorlib.dll | 2.0.50727.3068 | 4,546,560 | 01/01/2008 | 22:27 | x86 |
| Normidna.nlp | Non applicable | 59,342 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfc.nlp | Non applicable | 45,794 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfd.nlp | Non applicable | 39,284 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkc.nlp | Non applicable | 66,384 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkd.nlp | Non applicable | 60,294 | 18-Déc-2007 | 21:05 | Non applicable |
| Prc.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Prcp.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Sortkey.nlp | Non applicable | 262,148 | 18-Déc-2007 | 21:05 | Non applicable |
| Sorttbls.nlp | Non applicable | 20,320 | 18-Déc-2007 | 21:05 | Non applicable |
| Xjis.nlp | Non applicable | 28,288 | 18-Déc-2007 | 21:05 | Non applicable |
| Mscordacwks.dll | 2.0.50727.3068 | 992,264 | 01/01/2008 | 22:27 | x86 |
| Mscorjit.dll | 2.0.50727.3068 | 367,104 | 24-Sep-2008 | 2,221 | x86 |
| Mscorwks.dll | 2.0.50727.3068 | 5,815,808 | 01/01/2008 | 22:27 | x86 |
Windows Vista SP1 et Windows Server 2008, versions IA-64
| Nom de fichier | Version du fichier | Taille du fichier | Date | Heure | Plateforme |
|---|---|---|---|---|---|
| Big5.nlp | Non applicable | 66,728 | 18-Déc-2007 | 21:06 | Non applicable |
| Bopomofo.nlp | Non applicable | 82,172 | 18-Déc-2007 | 21:06 | Non applicable |
| Ksc.nlp | Non applicable | 116,756 | 18-Déc-2007 | 21:06 | Non applicable |
| Mscorlib.dll | 2.0.50727.3068 | 4,005,888 | 01/01/2008 | 01:22:26 AM | IA-64 |
| Normidna.nlp | Non applicable | 59,342 | 18-Déc-2007 | 21:08 | Non applicable |
| Normnfc.nlp | Non applicable | 45,794 | 18-Déc-2007 | 21:08 | Non applicable |
| Normnfd.nlp | Non applicable | 39,284 | 18-Déc-2007 | 21:08 | Non applicable |
| Normnfkc.nlp | Non applicable | 66,384 | 18-Déc-2007 | 21:08 | Non applicable |
| Normnfkd.nlp | Non applicable | 60,294 | 18-Déc-2007 | 21:08 | Non applicable |
| Prc.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:08 | Non applicable |
| Prcp.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:08 | Non applicable |
| Sortkey.nlp | Non applicable | 262,148 | 18-Déc-2007 | 21:08 | Non applicable |
| Sorttbls.nlp | Non applicable | 20,320 | 18-Déc-2007 | 21:08 | Non applicable |
| Xjis.nlp | Non applicable | 28,288 | 18-Déc-2007 | 21:08 | Non applicable |
| Mscordacwks.dll | 2.0.50727.3068 | 3,087,880 | 01/01/2008 | 01:22:26 AM | 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/01/2008 | 01:22:26 AM | IA-64 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 315,392 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 311,296 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 348,160 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 319,488 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 1,758 | x86 |
| Mscorlib.resources.dll | 2.0.50727.3053 | 278,528 | 27-Juil-2008 | 1,759 | x86 |
| Big5.nlp | Non applicable | 66,728 | 18-Déc-2007 | 21:03 | Non applicable |
| Bopomofo.nlp | Non applicable | 82,172 | 18-Déc-2007 | 21:03 | Non applicable |
| Ksc.nlp | Non applicable | 116,756 | 18-Déc-2007 | 21:04 | Non applicable |
| Mscorlib.dll | 2.0.50727.3068 | 4,546,560 | 01/01/2008 | 22:27 | x86 |
| Normidna.nlp | Non applicable | 59,342 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfc.nlp | Non applicable | 45,794 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfd.nlp | Non applicable | 39,284 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkc.nlp | Non applicable | 66,384 | 18-Déc-2007 | 21:05 | Non applicable |
| Normnfkd.nlp | Non applicable | 60,294 | 18-Déc-2007 | 21:05 | Non applicable |
| Prc.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Prcp.nlp | Non applicable | 83,748 | 18-Déc-2007 | 21:05 | Non applicable |
| Sortkey.nlp | Non applicable | 262,148 | 18-Déc-2007 | 21:05 | Non applicable |
| Sorttbls.nlp | Non applicable | 20,320 | 18-Déc-2007 | 21:05 | Non applicable |
| Xjis.nlp | Non applicable | 28,288 | 18-Déc-2007 | 21:05 | Non applicable |
| Mscordacwks.dll | 2.0.50727.3068 | 992,264 | 01/01/2008 | 22:27 | x86 |
| Mscorjit.dll | 2.0.50727.3068 | 367,104 | 24-Sep-2008 | 2,221 | x86 |
| Mscorwks.dll | 2.0.50727.3068 | 5,815,808 | 01/01/2008 | 22:27 | x86 |
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes.
Méthode 1
Si le code de l’application ressemble à l’exemple de code dans la section « Plus d’informations », recherchez la ligne de code suivante.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
Modifiez cette ligne de code comme suit.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))
Méthode 2
Déployez un fichier .ini. Pour ce faire, créez un fichier qui contient le code suivant.
[.NET Framework Debugging Control]
AllowOptimize=0
Nommez le fichier .ini de la même façon que le module problématique, mais utilisez l’extension .ini au lieu de l’extension .dll. Par exemple, pour l’exemple de code dans la section « Plus d’informations », nommez le fichier .ini fichier Bug.ini. Placez le fichier Bug.ini dans le même répertoire que le fichier Bug.dll.
Remarque L’inconvénient de cette méthode est l’effet potentiel sur les performances pour aucune optimisation. Si vous utilisez native Image Generator (Ngen.exe) pour précompiler le module, cette méthode n’est pas applicable.
Méthode 3
Appliquez de manière sélective l’option NoOptimization de l’énumération MethodImplOptions aux méthodes problématiques à l’aide de la classe MethodImplAttribute.
Remarque Cette méthode désactive les optimisations du compilateur JIT et du générateur d’images natives (Ngen.exe) au niveau de chaque méthode. La mesure dans laquelle les performances sont affectées varie en fonction de la méthode.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Informations supplémentaires
Procédure pour reproduire le problème
Créez une application C++ basée sur .NET Framework 3.5 SP1.
Ajoutez un fichier .cpp au projet, nommez ce fichier le fichier Bug.cpp, puis collez le code suivant dans le fichier 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); } }; }Pour compiler le fichier Bug.cpp, exécutez la commande suivante :
cl /clr /GL /O2 bug.cpp /link /dll /out:bug.dllCréez un projet Microsoft Visual C# à utiliser comme projet client.
Nommez le fichier de code Test.cs fichier, puis collez le code suivant dans le fichier 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); } } }Pour compiler le fichier Test.cs, exécutez la commande suivante :
csc /r:bug.dll test.csPour incorporer le manifeste dans le fichier Test.exe, exécutez la commande suivante :
mt.exe -nologo -manifest bug.dll.manifest -outputresource:test.exe ; 1Exécutez le fichier Test.exe.
Notez que le résultat réel est le suivant :
1.333333333333333, 1.3333333333333, 0 Toutefois, le résultat attendu est le suivant :
1.333333333333333, 0, 0
Références
Pour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft