Симптомы
На компьютере, на котором выполняется Microsoft платформа.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, посетите следующий веб-узел корпорации Майкрософт:
http://code.msdn.microsoft.com/KB957542
Примечание. Коллекции кода MSDN отображаются языки, для которых доступно исправление. Если в списке язык не отображается, это недоступности страница коллекции кода для этого языка.
Примечание. Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Стандартная оплата за поддержку будет взиматься только за дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Чтобы получить полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос на обслуживание, посетите следующий веб-сайт корпорации Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримечание. Если 32-разрядные приложения, которое выполняется на 64-разрядной платформе, исправление для 64-разрядной версии для решения этой проблемы.
Предварительные условия
Платформа.NET Framework 3.5 с пакетом обновления 1 для установки этого исправления необходимо иметь.
Необходимость перезагрузки
Может потребоваться перезагрузить компьютер, если используются любые файлы, которые будут обновлены.
Сведения о замене исправлений
Это исправление не заменяет других исправлений.
Сведения о файлах
Английская версия данного исправления содержит атрибуты файла (или более поздние атрибуты файлов), приведенные в следующей таблице. Дата и время для этих файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле, он преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, откройте вкладку Часовой пояс элемента Дата и время в панели управления.
Windows 2000, Windows XP и Windows Server 2003, x86 версий
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
---|---|---|---|---|
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 и Windows Server 2003, x64 версий
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
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 и Windows Server 2003 версии IA-64
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
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 |
Пакет обновления 1 (SP1) для Windows Vista и Windows Server 2008 x 86 версии
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
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 |
Неприменимо |
66,728 |
18-Dec-2007 |
21:03 |
Неприменимо |
Bopomofo.nlp |
Неприменимо |
82,172 |
18-Dec-2007 |
21:03 |
Неприменимо |
Ksc.nlp |
Неприменимо |
116,756 |
18-Dec-2007 |
21:04 |
Неприменимо |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Неприменимо |
59,342 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfc.nlp |
Неприменимо |
45,794 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfd.nlp |
Неприменимо |
39,284 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkc.nlp |
Неприменимо |
66,384 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkd.nlp |
Неприменимо |
60,294 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prc.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prcp.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sortkey.nlp |
Неприменимо |
262 148 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sorttbls.nlp |
Неприменимо |
20,320 |
18-Dec-2007 |
21:05 |
Неприменимо |
Xjis.nlp |
Неприменимо |
28,288 |
18-Dec-2007 |
21:05 |
Неприменимо |
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 |
Пакет обновления 1 для Windows Vista и Windows Server 2008, x64 версий
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
Big5.nlp |
Неприменимо |
66,728 |
18-Dec-2007 |
21:01 |
Неприменимо |
Bopomofo.nlp |
Неприменимо |
82,172 |
18-Dec-2007 |
21:01 |
Неприменимо |
Ksc.nlp |
Неприменимо |
116,756 |
18-Dec-2007 |
21:02 |
Неприменимо |
Mscorlib.dll |
2.0.50727.3068 |
4,562,944 |
01-Oct-2008 |
22:25 |
x64 |
Normidna.nlp |
Неприменимо |
59,342 |
18-Dec-2007 |
21:03 |
Неприменимо |
Normnfc.nlp |
Неприменимо |
45,794 |
18-Dec-2007 |
21:03 |
Неприменимо |
Normnfd.nlp |
Неприменимо |
39,284 |
18-Dec-2007 |
21:03 |
Неприменимо |
Normnfkc.nlp |
Неприменимо |
66,384 |
18-Dec-2007 |
21:03 |
Неприменимо |
Normnfkd.nlp |
Неприменимо |
60,294 |
18-Dec-2007 |
21:03 |
Неприменимо |
Prc.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:03 |
Неприменимо |
Prcp.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:03 |
Неприменимо |
Sortkey.nlp |
Неприменимо |
262 148 |
18-Dec-2007 |
21:03 |
Неприменимо |
Sorttbls.nlp |
Неприменимо |
20,320 |
18-Dec-2007 |
21:03 |
Неприменимо |
Xjis.nlp |
Неприменимо |
28,288 |
18-Dec-2007 |
21:03 |
Неприменимо |
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 |
Неприменимо |
66,728 |
18-Dec-2007 |
21:03 |
Неприменимо |
Bopomofo.nlp |
Неприменимо |
82,172 |
18-Dec-2007 |
21:03 |
Неприменимо |
Ksc.nlp |
Неприменимо |
116,756 |
18-Dec-2007 |
21:04 |
Неприменимо |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Неприменимо |
59,342 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfc.nlp |
Неприменимо |
45,794 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfd.nlp |
Неприменимо |
39,284 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkc.nlp |
Неприменимо |
66,384 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkd.nlp |
Неприменимо |
60,294 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prc.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prcp.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sortkey.nlp |
Неприменимо |
262 148 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sorttbls.nlp |
Неприменимо |
20,320 |
18-Dec-2007 |
21:05 |
Неприменимо |
Xjis.nlp |
Неприменимо |
28,288 |
18-Dec-2007 |
21:05 |
Неприменимо |
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 |
Пакет обновления 1 для Windows Vista и Windows Server 2008 версии IA-64
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
Big5.nlp |
Неприменимо |
66,728 |
18-Dec-2007 |
21:06 |
Неприменимо |
Bopomofo.nlp |
Неприменимо |
82,172 |
18-Dec-2007 |
21:06 |
Неприменимо |
Ksc.nlp |
Неприменимо |
116,756 |
18-Dec-2007 |
21:06 |
Неприменимо |
Mscorlib.dll |
2.0.50727.3068 |
4,005,888 |
01-Oct-2008 |
22:26 |
IA-64 |
Normidna.nlp |
Неприменимо |
59,342 |
18-Dec-2007 |
21:08 |
Неприменимо |
Normnfc.nlp |
Неприменимо |
45,794 |
18-Dec-2007 |
21:08 |
Неприменимо |
Normnfd.nlp |
Неприменимо |
39,284 |
18-Dec-2007 |
21:08 |
Неприменимо |
Normnfkc.nlp |
Неприменимо |
66,384 |
18-Dec-2007 |
21:08 |
Неприменимо |
Normnfkd.nlp |
Неприменимо |
60,294 |
18-Dec-2007 |
21:08 |
Неприменимо |
Prc.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:08 |
Неприменимо |
Prcp.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:08 |
Неприменимо |
Sortkey.nlp |
Неприменимо |
262 148 |
18-Dec-2007 |
21:08 |
Неприменимо |
Sorttbls.nlp |
Неприменимо |
20,320 |
18-Dec-2007 |
21:08 |
Неприменимо |
Xjis.nlp |
Неприменимо |
28,288 |
18-Dec-2007 |
21:08 |
Неприменимо |
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 |
Неприменимо |
66,728 |
18-Dec-2007 |
21:03 |
Неприменимо |
Bopomofo.nlp |
Неприменимо |
82,172 |
18-Dec-2007 |
21:03 |
Неприменимо |
Ksc.nlp |
Неприменимо |
116,756 |
18-Dec-2007 |
21:04 |
Неприменимо |
Mscorlib.dll |
2.0.50727.3068 |
4,546,560 |
01-Oct-2008 |
22:27 |
x86 |
Normidna.nlp |
Неприменимо |
59,342 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfc.nlp |
Неприменимо |
45,794 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfd.nlp |
Неприменимо |
39,284 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkc.nlp |
Неприменимо |
66,384 |
18-Dec-2007 |
21:05 |
Неприменимо |
Normnfkd.nlp |
Неприменимо |
60,294 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prc.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Prcp.nlp |
Неприменимо |
83,748 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sortkey.nlp |
Неприменимо |
262 148 |
18-Dec-2007 |
21:05 |
Неприменимо |
Sorttbls.nlp |
Неприменимо |
20,320 |
18-Dec-2007 |
21:05 |
Неприменимо |
Xjis.nlp |
Неприменимо |
28,288 |
18-Dec-2007 |
21:05 |
Неприменимо |
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 |
Временное решение
Чтобы обойти эту проблему, воспользуйтесь одним из следующих методов.
Способ 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), на уровне каждого метода. Насколько это влияет на производительность зависит от метода.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".
Дополнительные сведения
Действия по воспроизведению проблемы
-
Создание приложения C++, который основан на платформа.NET Framework 3.5 SP1.
-
Добавьте 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);
}
};
} -
Чтобы выполнить компиляцию файла Bug.cpp, выполните следующую команду:
CL/CLR /GL/O2 bug.cpp/Link/DLL /out:bug.dll
-
Создайте новый проект Microsoft Visual C# для использования в качестве клиентского проекта.
-
Назовите файл кода в файл 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);
}
}
} -
Чтобы скомпилировать файл Test.cs, выполните следующую команду:
CSC /r:bug.dll test.cs
-
Чтобы внедрить манифест в файл Test.exe, выполните следующую команду:
MT.exe - nologo-манифест bug.dll.manifest-outputresource:test.exe;1
-
Запустите файл Test.exe.
Обратите внимание, что фактический результат выглядит следующим образом:
1.33333333333333, 1.333333333333, 0Тем не менее ожидаемый результат выглядит следующим образом:
1.33333333333333, 0, 0
Ссылки
Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:
Описание 824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт