Управление обрезкой кода
От: SanyaVB  
Дата: 10.01.25 15:42
Оценка: 7 (1)
Решил опубликовать приложение с "обрезкой кода". По итогу обрезалось больше чем нужно))) Например мои классы, которые вызывались неявно (через reflection), вью модели и по мелочи.
Причина почему при публикации они не вошли в сборку мне ясны
А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?
Re: Управление обрезкой кода
От: RushDevion Россия  
Дата: 11.01.25 16:04
Оценка: 25 (3) +2
SVB>А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?

Вроде как для этих целей есть DynamicDependencyAttribute, но документация по нему никакая.

А вообще тримингом рекомендуется рулить на уровне assembly. См. TrimMode, IsTrimmable, TrimmableAssembly, TrimmerRootAssembly.

Можно рулить и на уровне отдельных типов, через Root descriptors, но это очень неудобно, как по мне.
Re: Управление обрезкой кода
От: _NN_  
Дата: 13.01.25 19:54
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Решил опубликовать приложение с "обрезкой кода". По итогу обрезалось больше чем нужно))) Например мои классы, которые вызывались неявно (через reflection), вью модели и по мелочи.

SVB>Причина почему при публикации они не вошли в сборку мне ясны
SVB>А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?

Нужно много чего учитывать.
А если используем рефлексию, то совсем тяжко будет.
Нужно чётко прописывать, что нам нужно оставить.
Возможно проще будет вообще ничего из своих сборок не выбрасывать.
https://learn.microsoft.com/ru-ru/dotnet/core/deploying/trimming/prepare-libraries-for-trimming

Если очень необходима обрезка, то скорее всего придётся заменять рефлексию на Source Generator
Как происходит уже сегодня для библиотек, где нужна рефлексия. Например System.Text.Json
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.