SYSLIB0005:不支援全域組件快取 (GAC)
.NET Core 和 .NET 5 及更新版本消除了存在於 .NET Framework 中的全域組件快取 (GAC) 概念。 為了協助讓開發人員遠離這些 API,從 .NET 5 開始,某些 GAC 相關 API 會標示為已淘汰。 使用這些 API 會在編譯時期產生警告 SYSLIB0005
。
下列 GAC 相關 API 會標示為已淘汰:
-
程式庫和應用程式不應該使用 GlobalAssemblyCache API 來判斷執行階段行為,因為其在 .NET Core 和 .NET 5+ 中一律會傳回
false
。
因應措施
如果您的應用程式查詢 GlobalAssemblyCache 屬性,請考慮移除呼叫。 如果您使用 GlobalAssemblyCache 值來選擇「GAC 中的組件」流程與執行階段「不在 GAC 中的組件」流程,請重新考慮流程對 .NET 5+ 應用程式是否仍然有意義。
隱藏警告
若您必須使用已淘汰的 API,您可以在程式碼或專案檔中隱藏警告。
若要只隱藏單一違規,請將前置處理器指示詞新增至原始程式碼檔案,以停用並重新啟用警告。
// Disable the warning.
#pragma warning disable SYSLIB0005
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0005
若要隱藏專案中的所有 SYSLIB0005
警告,請將 <NoWarn>
屬性新增至專案檔。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0005</NoWarn>
</PropertyGroup>
</Project>
如需詳細資訊,請參閱隱藏警告。