Компилятор VS2015 C# испускает атрибуты [Serializable, CompilerGenerated]
для всех автогенерируемых вспомогательных классов для запросов LINQ. Предыдущие версии Visual Studio использовались для испускания только атрибутов [CompilerGenerated]
для таких классов.Отключить автоматическое генерирование атрибута [Serializable] с помощью VS2015 C# compiler
Есть ли способ отключить автогенерацию атрибута [Serializable]
в VS2015? Причина в том, что наш обфускатор отказывается переименовывать классы, обозначенные как [Serializable]
, хотя в нашем случае он на 100% безопасен, потому что мы не используем сериализацию.
Вот пример автоматического кода, сгенерированного старых компиляторов:
[CompilerGenerated]
private sealed class <>c
{
public static readonly Program.<>c <>9 = new Program.<>c();
// ... more stuff here
}
Вот что излучает VS2015:
[Serializable, CompilerGenerated]
private sealed class <>c
{
public static readonly Program.<>c <>9 = new Program.<>c();
// ... more stuff here
}
Я хочу, чтобы компилятор не создавать этот атрибут [Serializable]
. Является ли это возможным?
Благодарим вас за это исследование, я подозревал что-то в этом роде. Я думаю, что проще всего просто написать инструмент для изменения скомпилированной сборки. –
Да, это звучит как хороший обходной путь для вашего дела. Btw. Я бы предложил добавить тег Roslyn на ваш вопрос ... Люди, которые гораздо больше знакомы с кодовым основанием, а затем меня, иногда болтаются здесь ... может быть, у них есть лучшее решение. Я также опубликовал редактирование с этим, но оно было отклонено ... – gregkalapos