原因
调用或通过反射访问标注有 RequiresUnreferencedCodeAttribute 的成员。
例如:
[RequiresUnreferencedCode("Use 'MethodFriendlyToTrimming' instead", Url="http://help/unreferencedcode")]
void MethodWithUnreferencedCodeUsage()
{
}
void TestMethod()
{
// IL2026: Using method 'MethodWithUnreferencedCodeUsage' which has 'RequiresUnreferencedCodeAttribute'
// can break functionality when trimming application code. Use 'MethodFriendlyToTrimming' instead. http://help/unreferencedcode
MethodWithUnreferencedCodeUsage();
}
规则说明
RequiresUnreferencedCodeAttribute 指示成员引用可由剪裁器删除的代码。
常见示例包括:
Load(String) 被标记为
RequiresUnreferencedCode,因为正在加载的程序集可能会访问已去掉的成员。 剪裁器从框架中删除除应用程序直接使用的成员之外的所有成员,因此在运行时加载新程序集可能会尝试访问缺少的成员。XmlSerializer 标记为
RequiresUnreferencedCode因为XmlSerializer使用复杂反射扫描输入类型。 修剪器无法跟踪反射,因此由输入类型传递使用的成员可能会被修剪掉。