Как отключить оптимизацию mscorsvw.exe?
От: Aberro  
Дата: 13.07.10 11:32
Оценка:
Есть базовый класс, в котором два метода — GetValue и SetValue. Есть потомки, определяющие некоторые свойства с атрибутами. В свойствах вызывается GetValue и SetValue. Эти методы раскручивают стэк, смотрят, кто их вызвал (по идее — метод, сгенерированный свойством), находят свойство, находят атрибут и данные этого атрибута и действуют в соответсвии с этими данными. При отдадке все работает нормально, но без отладчика Runtime Optimization Service встраивает методы свойства в функцию, где эти свойства используются, из-за чего при раскрутке стэка вызвавшей функцией оказывается не метод свойства, а метод, использующий это свойство.
Можно ли как-то отключить оптимизацию для этих свойств, чтобы их методы генерировались, а не встраивались?
PS спросите, зачем все так сделано? Так надо. Считайте, что мсье знает толк в извращениях.

13.07.10 17:07: Перенесено модератором из 'Этюды для программистов' — Кодт
mscorsvw .net 'runtime optimization service' c#
Re: Как отключить оптимизацию mscorsvw.exe?
От: LF  
Дата: 13.07.10 11:43
Оценка:
A>Можно ли как-то отключить оптимизацию для этих свойств, чтобы их методы генерировались, а не встраивались?
Насколько знаю — нет.

A>PS спросите, зачем все так сделано? Так надо. Считайте, что мсье знает толк в извращениях.

Хороший повод пересмотреть архитектуру.
Re[2]: Как отключить оптимизацию mscorsvw.exe?
От: Aberro  
Дата: 13.07.10 11:53
Оценка:
Да там и пересматривать нечего. Речь идет о классах, реализующих записи в БД. В атрибутах — имя столбца. Раньше имя передавалось при вызове методов базового класса, но хотелось сделать решение с минимумом кода, т.к. таблиц немало. Но если оптимизация не отключается, то увы мне.
mscorsvw .net 'runtime optimization service' c#
Re[3]: Как отключить оптимизацию mscorsvw.exe?
От: hardcase Пират http://nemerle.org
Дата: 13.07.10 13:28
Оценка: 5 (1)
Здравствуйте, Aberro, Вы писали:

A>Да там и пересматривать нечего. Речь идет о классах, реализующих записи в БД. В атрибутах — имя столбца. Раньше имя передавалось при вызове методов базового класса, но хотелось сделать решение с минимумом кода, т.к. таблиц немало. Но если оптимизация не отключается, то увы мне.


Попробуйте MethodImplAttribute с параметром MethodImplOptions.NoInlining или MethodImplOptions.NoOptimization.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.