다음을 통해 공유


IL2026: RequiresUnreferencedCode 특성이 부여된 멤버는 트리밍 시 중단될 수 있습니다.

원인

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는 리플렉션을 사용하여 입력 형식을 검사하기 때문에 XmlSerializerRequiresUnreferencedCode로 표시됩니다. 리플렉션은 트리머에서 추적할 수 없으므로 입력 형식에서 전이적으로 사용되는 멤버는 잘릴 수 있습니다.