Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проекты, которые задают <PublishTrimmed>true</PublishTrimmed><IsTrimmable>true</IsTrimmable> или <EnableTrimAnalyzer>true</EnableTrimAnalyzer> с TargetFramework любой версией .NET Standard или платформа .NET Framework создают предупреждение или ошибку, так как обрезка не поддерживается для этих целевых платформ.
Прежнее поведение
Ранее при использовании в проекте .NET Standard или платформа .NET Framework эти параметры ведут себя следующим образом:
-
<PublishTrimmed>true</PublishTrimmed>не повлияло. -
<IsTrimmable>true</IsTrimmable>внедрен атрибут[assembly: AssemblyMetadata("IsTrimmable", "true")]уровня сборки в выходную сборку. Этот атрибут выбрал сборку в обрезку при использовании в обрезке приложения (даже используемое приложение<TrimMode>partial</TrimMode>). -
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>включен анализ обрезки библиотеки с помощью .NET Standard или платформа .NET Framework ссылочных сборок, соответствующих сборкам библиотекиTargetFramework, даже если эти эталонные сборки не помечены для обрезки.
Новое поведение
Начиная с пакета SDK для .NET 8 в проекте, предназначенном для .NET Standard или платформа .NET Framework:
-
<PublishTrimmed>создает ошибку, указывающую, что этот параметр не поддерживается для целевой платформы. -
<IsTrimmable>и<EnableTrimAnalyzer>создай предупреждение, указывающее, что<IsTrimmable>не поддерживается для целевой платформы. Эти параметры в противном случае не влияют на выходные данные сборки.
Представленные версии
.NET 8 RC 1
Тип критического изменения
Причина изменения
Разрешение использования <PublishTrimmed> в проекте .NET Standard или платформа .NET Framework, возможно, дало ложное впечатление, что этот параметр обрезал выходные данные, когда на самом деле он не повлиял.
Разрешение использования или <IsTrimmable> в <EnableTrimAnalyzer> проекте .NET Standard или платформа .NET Framework означает, что авторам библиотеки было легко отказаться от обрезки без предупреждения о несовместимости. Так как эталонные сборки .NET Standard и платформа .NET Framework не помечены для обрезки, не было предупреждений об использовании API платформы, несовместимых с обрезкой.
Рекомендуемое действие
Избегайте настройки <PublishTrimmed> в проектах, предназначенных для .NET Standard или платформа .NET Framework. Кроме того, избегайте настройки <PublishAot> , которые подразумевают бывший параметр.
Избегайте настройки <IsTrimmable> или <EnableTrimAnalyzer> в библиотеках, предназначенных для .NET Standard или платформа .NET Framework. Кроме того, не используйте параметр <IsAotCompatible>, который подразумевает предыдущие параметры. Вместо этого мультицельная библиотека включает последнюю TargetFrameworkверсию и включает <IsTrimmable> только поддерживаемые целевые платформы. Параметр <IsTrimmable> запустит последнюю версию анализатора обрезки с помощью заметок совместимости с обрезкой из последней версии платформы.
Например, эти параметры для включения net8.0нескольких целевых параметров и задаются <IsTrimmable> только для этой целевой платформы. Эта логика используется IsTargetFrameworkCompatible таким образом, чтобы она применялась к любым платформам, совместимым с net6.0, когда обрезка была впервые официально поддерживаема. Таким образом, при добавлении новых целевых платформ условие не требуется обновлять.
<PropertyGroup>
<TargetFrameworks>netstandard2.1;net8.0</TargetFrameworks>
<IsTrimmable Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">true</IsTrimmable>
</PropertyGroup>