应用程序修剪(Application Trimming)在.Net 5中得到了扩展,提供了更细粒度的控制,以防止隐式危险的处理。
虽然这些属性是针对特定情景的(并且很方便),但目前它们缺乏支持复杂情况的能力。尽管如此,我的直觉是未来这个功能集会扩展。不过,目前您可以使用基于XML的配置文件,其具有广泛的复杂选项和用例。
基本上,它们可以分为以下几类:
关于保留(即您想要的内容),您需要将TrimmerRootDescriptor
标签添加到项目文件中。
<ItemGroup>
<TrimmerRootDescriptor Include="Whatever.xml" />
</ItemGroup>
那么在配置文件中,只需要将linker
设置为通过FullName标记表示的assembly即可。
<linker>
<assembly fullname="SomeAssembly" preserve="all" />
</linker>
或者使用完全限定名称。
<linker>
<assembly fullname="SomeAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
</linker>
如果一个装配标签下有类型,除非在装配级别指定
preserve=all
,否则仅会对列出的类型和成员进行保护标记。
<assembly fullname="AssemblyA">
<type fullname="AssemblyA.One" preserve="all" />
<type fullname="AssemblyA.Two" />
相反,如果类型没有保留属性且不列出任何子级,则其所有成员都将被标记为保留。
其他资源
自定义 .NET 5 中的修剪
保留
修剪器将自动包含它认为应用程序可以访问的所有代码。使用 XML 文件的保留方案是告诉修剪器“保留”代码,即使它认为该代码未被使用也不会删除。这对于通过反射发现和调用的代码非常有用。
...
当程序集、类型或成员在 xml 中列出时,默认操作是保留,这意味着无论修剪器是否认为它们被使用,它们都将保存在输出中。保留是累加的,它会告诉修剪器应该保留哪些额外的代码,即使它认为某个类型或成员不需要也会包括它们,基于保留标记它们可能不会被包含。