SYSLIB0005: não há suporte para GAC (cache de assembly global)
O .NET Core, o .NET 5 e as versões posteriores eliminam o conceito de GAC (cache de assembly global) que estava presente no .NET Framework. Para ajudar a afastar os desenvolvedores dessas APIs, algumas APIs relacionadas ao GAC são marcadas como obsoletas, começando no .NET 5. O uso dessas APIs gera o aviso SYSLIB0005
no tempo de compilação.
As seguintes APIs relacionadas ao GAC são marcadas como obsoletas:
-
Bibliotecas e aplicativos não devem usar a API GlobalAssemblyCache para fazer determinações sobre o comportamento em tempo de execução porque sempre retornará
false
no .NET Core e no .NET 5+.
Soluções Alternativas
Se o aplicativo consultar a propriedade GlobalAssemblyCache, considere remover a chamada. Se você usar o valor GlobalAssemblyCache para escolher entre um fluxo de "assembly no GAC" versus um fluxo de "assembly que não está no GAC" em tempo de execução, reconsidere se o fluxo ainda é o ideal para um aplicativo .NET 5+.
Suprimir um aviso
Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0005
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0005
Para suprimir todos os avisos SYSLIB0005
no projeto, adicione uma propriedade <NoWarn>
ao arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0005</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, confira Suprimir avisos.