Как мне сказать компилятору C # не оптимизировать неиспользуемый класс? - PullRequest
1 голос
/ 08 сентября 2010

Когда я компилирую проект с выпуском сборки и типами оптимизации кода, которые нигде не упоминаются в коде, они больше не включаются в сборку.

Проблема в том, что я хочу использовать эти типы отражением во время выполнения.

Есть ли какой-либо атрибут или какой-то другой способ, которым я могу сказать компилятору не оптимизировать данный класс?

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Используете ли вы какой-то обфускатор или оптимизатор (например, Dotfuscator), который может удалять типы, потому что он думает, что они не используются?Если это так, вам придется настроить это программное обеспечение так, чтобы оно не удаляло их.Это не проблема компилятора C #.

В остальном, я никогда не видел этого сам.Все типы всегда присутствуют в сборке, даже если на них нет ссылок.Все остальное было бы чокнутым, потому что это сделало бы Reflection действительно бесполезным, как вы заметили.

Итак, чтобы проверить это, я просто скомпилировал небольшой проект с двумя неиспользуемыми классами и одним классом, который используется только одним из неиспользуемыхклассы.Ни один из них не был удален, даже в режиме Release и даже с включенной «оптимизацией».

Если вы можете привести небольшой пример, когда компилятор действительно удаляет тип, это, вероятно, будет ошибкой компилятора, и вам, возможно, следуетрассмотрите возможность сообщения об этом на connect.microsoft.com.

0 голосов
/ 08 сентября 2010

Вот прямая документация о вашем отключении / включении оптимизации:

http://msdn.microsoft.com/en-us/library/t0hfscdc%28v=VS.100%29.aspx

Однако я также нашел странным, что некоторые коды не включены в сборкуиз-за оптимизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...