В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

ИСПРАВИТЬ: На компьютере, на котором работает платформа.NET Framework 3.5 Пакет обновления 1, Native Image Generator (Ngen.exe), используйте файл Mscorjit.dll и JIT-компилятор может создать неправильный код

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 957542
Проблема
На компьютере, на котором работает платформа.NET Framework, Майкрософт 3.5 Пакет обновления 1 (SP1) Native Image Generator (Ngen.exe), используйте файл Mscorjit.dll и just-in-time (JIT) компилятор может создать неправильный код. Таким образом 32-разрядное приложение управляемого C++ может привести к неверным результатам.

Эта проблема возникает, если выполняются следующие условия:
  • В исходном коде класса или структуры имеет меньше четырех видов скалярных и нет ссылки на управляемый объект.
  • Используется инструкция Cpblk или инструкция Initblk.
Примечание Эта проблема не возникает в 64-разрядных приложениях.
Причина
Эта проблема возникает из-за регрессии в платформа.NET Framework 3.5 SP1.
Решение

Сведения об исправлении

Существует исправление от корпорации Майкрософт. Однако данное исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте данное исправление только в тех системах, которые имеют данную проблему. Это исправление может проходить дополнительное тестирование. Таким образом если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления, содержащего это исправление.

Чтобы загрузить это исправление из коллекции кода MSDN, посетите следующий веб-узел корпорации Майкрософт:

Примечание Коллекции кода MSDN отображаются языки, для которых доступно исправление. Если в списке язык не отображается, это недоступности страница коллекции кода для этого языка.

Примечание Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Обычные затраты на поддержку будет применяться к дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или чтобы создать отдельный запрос на обслуживание посетите следующий веб-сайт корпорации Майкрософт:
Примечание Если 32-разрядные приложения, которое выполняется на 64-разрядной платформе, исправление для 64-разрядной версии для решения этой проблемы.

Предварительные условия

Платформа.NET Framework 3.5 с пакетом обновления 1 для установки этого исправления необходимо иметь.

Необходимость перезагрузки

Может потребоваться перезагрузить компьютер, если используются любые файлы, которые будут обновлены.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файлах

Английская версия данного исправления содержит атрибуты файла (или более поздние атрибуты файлов), приведенные в следующей таблице. Дата и время для этих файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле, он преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, откройте вкладку Часовой пояс элемента Дата и время в панели управления.
Windows 2000, Windows XP и Windows Server 2003 x 86 версии
Имя файлаВерсия файлаРазмер файлаДатаВремя
Mscordacwks.dll2.0.50727.3068992,26416 сентября 2008 г.13:13
Mscorjit.dll2.0.50727.3068367,10416 сентября 2008 г.13:13
Mscorlib.dll2.0.50727.30684,546,56016 сентября 2008 г.13:13
Mscorwks.dll2.0.50727.30685,815,80816 сентября 2008 г.13:13
Windows 2000, Windows XP и Windows Server 2003 x 64 версии
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Mscordacwks.dll2.0.50727.3068992,26416 сентября 2008 г.13:13x86
Mscorjit.dll2.0.50727.3068367,10416 сентября 2008 г.13:13x86
Mscorlib.dll2.0.50727.30684,546,56016 сентября 2008 г.13:13x86
Mscorwks.dll2.0.50727.30685,815,80816 сентября 2008 г.13:13x86
Mscordacwks.dll2.0.50727.30681,767,94416 сентября 2008 г.10:33x64
Mscorjit.dll2.0.50727.30681,580,03216 сентября 2008 г.10:33x64
Mscorlib.dll2.0.50727.30684,562,94416 сентября 2008 г.10:33x64
Mscorwks.dll2.0.50727.306810,079,74416 сентября 2008 г.10:33x64
Windows 2000, Windows XP и Windows Server 2003 версии IA-64
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Mscordacwks.dll2.0.50727.3068992,26416 сентября 2008 г.13:13x86
Mscorjit.dll2.0.50727.3068367,10416 сентября 2008 г.13:13x86
Mscorlib.dll2.0.50727.30684,546,56016 сентября 2008 г.13:13x86
Mscorwks.dll2.0.50727.30685,815,80816 сентября 2008 г.13:13x86
Mscordacwks.dll2.0.50727.30683,087,88016 сентября 2008 г.10:44IA-64
Mscorjit.dll2.0.50727.30682,560,51216 сентября 2008 г.10:44IA-64
Mscorlib.dll2.0.50727.30684,005,88816 сентября 2008 г.10:44IA-64
Mscorwks.dll2.0.50727.306820,153,85616 сентября 2008 г.10:44IA-64
Пакет обновления 1 (SP1) для Windows Vista и Windows Server 2008 x 86 версии
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Mscorlib.Resources.dll2.0.50727.3053352,25615 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053303,10415 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053315,39227 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053425,98415 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053307,20027 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053311,29627 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053331,77615 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053315,39215 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053307,20027 июля 2008 г.17:55x86
Mscorlib.Resources.dll2.0.50727.3053348,16027 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053319,48827 июля 2008 г.17:55x86
Mscorlib.Resources.dll2.0.50727.3053290,81615 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053303,10415 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053311,29615 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053303,10427 июля 2008 г.17:55x86
Mscorlib.Resources.dll2.0.50727.3053307,20015 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.1434397,31211-янв-200822:59x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:55x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:55x86
Big5.NLPНеприменимо66,72818 декабря 2007 г.21:03Неприменимо
Bopomofo.NLPНеприменимо82,17218 декабря 2007 г.21:03Неприменимо
KSC.NLPНеприменимо116,75618 декабря 2007 г.21:04Неприменимо
Mscorlib.dll2.0.50727.30684,546,56001-окт-200822:27x86
Normidna.NLPНеприменимо59,34218 декабря 2007 г.21:05Неприменимо
Normnfc.NLPНеприменимо45,79418 декабря 2007 г.21:05Неприменимо
Normnfd.NLPНеприменимо39,28418 декабря 2007 г.21:05Неприменимо
Normnfkc.NLPНеприменимо66,38418 декабря 2007 г.21:05Неприменимо
Normnfkd.NLPНеприменимо60,29418 декабря 2007 г.21:05Неприменимо
PRC.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
Prcp.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
SortKey.NLPНеприменимо262 14818 декабря 2007 г.21:05Неприменимо
Sorttbls.NLPНеприменимо20,32018 декабря 2007 г.21:05Неприменимо
XJIS.NLPНеприменимо28,28818 декабря 2007 г.21:05Неприменимо
Mscordacwks.dll2.0.50727.3068992,26401-окт-200822:27x86
Mscorjit.dll2.0.50727.3068367,10424 сентября 2008 г.22:21x86
Mscorwks.dll2.0.50727.30685,815,80801-окт-200822:27x86
Пакет обновления 1 для Windows Vista и Windows Server 2008 x 64 версии
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Big5.NLPНеприменимо66,72818 декабря 2007 г.21:01Неприменимо
Bopomofo.NLPНеприменимо82,17218 декабря 2007 г.21:01Неприменимо
KSC.NLPНеприменимо116,75618 декабря 2007 г.21:02Неприменимо
Mscorlib.dll2.0.50727.30684,562,94401-окт-200822:25x64
Normidna.NLPНеприменимо59,34218 декабря 2007 г.21:03Неприменимо
Normnfc.NLPНеприменимо45,79418 декабря 2007 г.21:03Неприменимо
Normnfd.NLPНеприменимо39,28418 декабря 2007 г.21:03Неприменимо
Normnfkc.NLPНеприменимо66,38418 декабря 2007 г.21:03Неприменимо
Normnfkd.NLPНеприменимо60,29418 декабря 2007 г.21:03Неприменимо
PRC.NLPНеприменимо83,74818 декабря 2007 г.21:03Неприменимо
Prcp.NLPНеприменимо83,74818 декабря 2007 г.21:03Неприменимо
SortKey.NLPНеприменимо262 14818 декабря 2007 г.21:03Неприменимо
Sorttbls.NLPНеприменимо20,32018 декабря 2007 г.21:03Неприменимо
XJIS.NLPНеприменимо28,28818 декабря 2007 г.21:03Неприменимо
Mscordacwks.dll2.0.50727.30681,767,94401-окт-200822:25x64
Mscorjit.dll2.0.50727.30681,580,03224 сентября 2008 г.23:06x64
Mscorwks.dll2.0.50727.306810,079,74401-окт-200822:25x64
Mscorlib.Resources.dll2.0.50727.3053352,25615 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053303,10415 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053315,39227 июля 2008 г.18:02x86
Mscorlib.Resources.dll2.0.50727.3053425,98415 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053307,20027 июля 2008 г.18:02x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053311,29627 июля 2008 г.18:02x86
Mscorlib.Resources.dll2.0.50727.3053331,77615 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053315,39215 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053307,20027 июля 2008 г.17:56x86
Mscorlib.Resources.dll2.0.50727.3053348,16027 июля 2008 г.18:02x86
Mscorlib.Resources.dll2.0.50727.3053319,48827 июля 2008 г.17:56x86
Mscorlib.Resources.dll2.0.50727.3053290,81615 сентября 2008 г.22:26x86
Mscorlib.Resources.dll2.0.50727.3053303,10415 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053311,29615 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053303,10427 июля 2008 г.17:56x86
Mscorlib.Resources.dll2.0.50727.3053307,20015 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.1434397,31211-янв-200822:59x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053299,00815 сентября 2008 г.22:25x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:56x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:56x86
Big5.NLPНеприменимо66,72818 декабря 2007 г.21:03Неприменимо
Bopomofo.NLPНеприменимо82,17218 декабря 2007 г.21:03Неприменимо
KSC.NLPНеприменимо116,75618 декабря 2007 г.21:04Неприменимо
Mscorlib.dll2.0.50727.30684,546,56001-окт-200822:27x86
Normidna.NLPНеприменимо59,34218 декабря 2007 г.21:05Неприменимо
Normnfc.NLPНеприменимо45,79418 декабря 2007 г.21:05Неприменимо
Normnfd.NLPНеприменимо39,28418 декабря 2007 г.21:05Неприменимо
Normnfkc.NLPНеприменимо66,38418 декабря 2007 г.21:05Неприменимо
Normnfkd.NLPНеприменимо60,29418 декабря 2007 г.21:05Неприменимо
PRC.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
Prcp.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
SortKey.NLPНеприменимо262 14818 декабря 2007 г.21:05Неприменимо
Sorttbls.NLPНеприменимо20,32018 декабря 2007 г.21:05Неприменимо
XJIS.NLPНеприменимо28,28818 декабря 2007 г.21:05Неприменимо
Mscordacwks.dll2.0.50727.3068992,26401-окт-200822:27x86
Mscorjit.dll2.0.50727.3068367,10424 сентября 2008 г.22:21x86
Mscorwks.dll2.0.50727.30685,815,80801-окт-200822:27x86
Пакет обновления 1 для Windows Vista и Windows Server 2008 версии IA-64
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Big5.NLPНеприменимо66,72818 декабря 2007 г.21:06Неприменимо
Bopomofo.NLPНеприменимо82,17218 декабря 2007 г.21:06Неприменимо
KSC.NLPНеприменимо116,75618 декабря 2007 г.21:06Неприменимо
Mscorlib.dll2.0.50727.30684,005,88801-окт-200822:26IA-64
Normidna.NLPНеприменимо59,34218 декабря 2007 г.21:08Неприменимо
Normnfc.NLPНеприменимо45,79418 декабря 2007 г.21:08Неприменимо
Normnfd.NLPНеприменимо39,28418 декабря 2007 г.21:08Неприменимо
Normnfkc.NLPНеприменимо66,38418 декабря 2007 г.21:08Неприменимо
Normnfkd.NLPНеприменимо60,29418 декабря 2007 г.21:08Неприменимо
PRC.NLPНеприменимо83,74818 декабря 2007 г.21:08Неприменимо
Prcp.NLPНеприменимо83,74818 декабря 2007 г.21:08Неприменимо
SortKey.NLPНеприменимо262 14818 декабря 2007 г.21:08Неприменимо
Sorttbls.NLPНеприменимо20,32018 декабря 2007 г.21:08Неприменимо
XJIS.NLPНеприменимо28,28818 декабря 2007 г.21:08Неприменимо
Mscordacwks.dll2.0.50727.30683,087,88001-окт-200822:26IA-64
Mscorjit.dll2.0.50727.30682,560,51224 сентября 2008 г.23:14IA-64
Mscorwks.dll2.0.50727.306820,153,85601-окт-200822:26IA-64
Mscorlib.Resources.dll2.0.50727.3053315,39227 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053311,29627 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053348,16027 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053319,48827 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:58x86
Mscorlib.Resources.dll2.0.50727.3053278,52827 июля 2008 г.17:59x86
Big5.NLPНеприменимо66,72818 декабря 2007 г.21:03Неприменимо
Bopomofo.NLPНеприменимо82,17218 декабря 2007 г.21:03Неприменимо
KSC.NLPНеприменимо116,75618 декабря 2007 г.21:04Неприменимо
Mscorlib.dll2.0.50727.30684,546,56001-окт-200822:27x86
Normidna.NLPНеприменимо59,34218 декабря 2007 г.21:05Неприменимо
Normnfc.NLPНеприменимо45,79418 декабря 2007 г.21:05Неприменимо
Normnfd.NLPНеприменимо39,28418 декабря 2007 г.21:05Неприменимо
Normnfkc.NLPНеприменимо66,38418 декабря 2007 г.21:05Неприменимо
Normnfkd.NLPНеприменимо60,29418 декабря 2007 г.21:05Неприменимо
PRC.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
Prcp.NLPНеприменимо83,74818 декабря 2007 г.21:05Неприменимо
SortKey.NLPНеприменимо262 14818 декабря 2007 г.21:05Неприменимо
Sorttbls.NLPНеприменимо20,32018 декабря 2007 г.21:05Неприменимо
XJIS.NLPНеприменимо28,28818 декабря 2007 г.21:05Неприменимо
Mscordacwks.dll2.0.50727.3068992,26401-окт-200822:27x86
Mscorjit.dll2.0.50727.3068367,10424 сентября 2008 г.22:21x86
Mscorwks.dll2.0.50727.30685,815,80801-окт-200822:27x86
Временное решение
Чтобы обойти эту проблему, воспользуйтесь одним из следующих методов.

Способ 1

Если приложение код, похожий на пример кода в разделе «Дополнительные сведения», найдите следующую строку кода.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d).m_x))
Измените эту строку кода следующим образом.
#define GETVECTOR3D(vec3d) (*reinterpret_cast<AcGeVector3d*>(&((vec3d)))

Способ 2

Разверните INI-файла. Чтобы сделать это, создайте файл, содержащий следующий код.
[.NET Framework Debugging Control]AllowOptimize=0
Так же, как проблемы модуля имя INI-файла, но используется расширение .ini вместо расширения DLL. Например пример кода в разделе «Дополнительные сведения», имя INI-файла в файл Bug.ini. Поместите файл Bug.ini в том же каталоге, что и файл Bug.dll.

Примечание Недостатком этого метода является возможный эффект производительности для оптимизация. Если вы используете Native Image Generator (Ngen.exe) для предварительной компиляции модуля, этот метод не применяется.

Способ 3

Выборочно примените параметр NoOptimization перечисления MethodImplOptions проблемных методов с помощью класса атрибута MethodImplAttribute .

Примечание Этот метод отключает оптимизацию JIT-компилятором, а Native Image Generator (Ngen.exe), на уровне каждого метода. Насколько это влияет на производительность зависит от метода.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".
Дополнительная информация

Действия по воспроизведению проблемы

  1. Создание приложения C++, который основан на платформа.NET Framework 3.5 SP1.
  2. Добавьте CPP-файла в проект, назовите этот файл файла Bug.cpp и вставьте следующий код в файл 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);}};}
  3. Чтобы выполнить компиляцию файла Bug.cpp, выполните следующую команду:
    CL/CLR /GL/O2 bug.cpp/Link/DLL /out:bug.dll
  4. Создайте новый проект Microsoft Visual C# для использования в качестве клиентского проекта.
  5. Назовите файл кода в файл Test.cs и вставьте следующий код в файл 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);}}}
  6. Чтобы скомпилировать файл Test.cs, выполните следующую команду:
    CSC /r:bug.dll test.cs
  7. Чтобы внедрить манифест в файл Test.exe, выполните следующую команду:
    MT.exe - nologo-манифест bug.dll.manifest-outputresource:test.exe;1
  8. Запустите файл Test.exe.
Обратите внимание, что фактический результат выглядит следующим образом:
1.33333333333333, 1.333333333333, 0
Тем не менее ожидаемый результат выглядит следующим образом:
1.33333333333333, 0, 0
Ссылки
Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:
824684 Описание стандартной терминологии, используемой для описания обновлений программных продуктов Майкрософт

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 957542 — последний просмотр: 11/01/2015 04:42:00 — редакция: 9.0

Microsoft .NET Framework 3.5 Service Pack 1

  • kbexpertiseadvanced kbfix kbqfe kbmt KB957542 KbMtru
Отзывы и предложения
g(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);