Решил опубликовать приложение с "обрезкой кода". По итогу обрезалось больше чем нужно))) Например мои классы, которые вызывались неявно (через reflection), вью модели и по мелочи.
Причина почему при публикации они не вошли в сборку мне ясны
А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?
SVB>А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?
Вроде как для этих целей есть DynamicDependencyAttribute, но документация по нему никакая.
А вообще тримингом
рекомендуется рулить на уровне assembly. См. TrimMode, IsTrimmable, TrimmableAssembly, TrimmerRootAssembly.
Можно рулить и на уровне отдельных типов, через
Root descriptors, но это очень неудобно, как по мне.
Здравствуйте, SanyaVB, Вы писали:
SVB>Решил опубликовать приложение с "обрезкой кода". По итогу обрезалось больше чем нужно))) Например мои классы, которые вызывались неявно (через reflection), вью модели и по мелочи.
SVB>Причина почему при публикации они не вошли в сборку мне ясны
SVB>А вот можно каким-нибудь атрибутом пометить классы, свойства, методы, чтобы их не вырезали на этапе сборки?
Нужно много чего учитывать.
А если используем рефлексию, то совсем тяжко будет.
Нужно чётко прописывать, что нам нужно оставить.
Возможно проще будет вообще ничего из своих сборок не выбрасывать.
https://learn.microsoft.com/ru-ru/dotnet/core/deploying/trimming/prepare-libraries-for-trimming
Если очень необходима обрезка, то скорее всего придётся заменять рефлексию на
Source Generator
Как происходит уже сегодня для библиотек, где нужна рефлексия. Например
System.Text.Json