次の方法で共有


SYSLIB0003: コード アクセス セキュリティはサポートされていません

コード アクセス セキュリティ (CAS) は、サポートされていないレガシ テクノロジです。 CAS を有効にするためのインフラストラクチャは、.NET Framework 2.x から 4.x のみに存在しますが、非推奨であり、サービスやセキュリティの修正プログラムは提供されません。

その結果、.NET のほとんどのコード アクセス セキュリティ (CAS) 関連の型は、.NET 5 以降では古い形式になっています。 これには、SecurityPermissionAttribute などの CAS 属性、SocketPermission などの CAS アクセス許可オブジェクト、EvidenceBase 派生型、その他のサポート API が含まれます。 これらの API を使用すると、コンパイル時に警告 SYSLIB0003 が生成されます。

古い CAS API の完全な一覧は次のとおりです。

回避策

  • セキュリティのアクセス許可をアサートする場合は、アクセス許可をアサートする属性または呼び出しを削除します。

    // REMOVE the attribute below.
    [SecurityPermission(SecurityAction.Assert, ControlThread = true)]
    public void DoSomething()
    {
    }
    public void DoAssert()
    {
        // REMOVE the line below.
        new SecurityPermission(SecurityPermissionFlag.ControlThread).Assert();
    }
    
  • 任意のアクセス許可を (PermitOnly を使用して) 拒否または制限する場合は、セキュリティ アドバイザーにお問い合わせください。 CAS の属性は .NET 5 以降のランタイムでは考慮されないため、CAS インフラストラクチャに誤って依存してこれらのメソッドへのアクセスを制限してしまうと、お使いのアプリケーションにセキュリティ ホールが発生する可能性があります。

    // REVIEW the attribute below; could indicate security vulnerability.
    [SecurityPermission(SecurityAction.Deny, ControlThread = true)]
    public void DoSomething()
    {
    }
    public void DoPermitOnly()
    {
        // REVIEW the line below; could indicate security vulnerability.
        new SecurityPermission(SecurityPermissionFlag.ControlThread).PermitOnly();
    }
    
  • (PrincipalPermission を除く) アクセス許可を要求している場合は、要求を削除します。 すべての要求は実行時に成功します。

    // REMOVE the attribute below; it will always succeed.
    [SecurityPermission(SecurityAction.Demand, ControlThread = true)]
    public void DoSomething()
    {
    }
    public void DoDemand()
    {
        // REMOVE the line below; it will always succeed.
        new SecurityPermission(SecurityPermissionFlag.ControlThread).Demand();
    }
    
  • PrincipalPermission を要求している場合は、ガイダンス「SYSLIB0002: PrincipalPermissionAttribute は旧型式」を確認してください。 このガイダンスは、PrincipalPermissionPrincipalPermissionAttribute の両方に適用されます。

警告を抑制する

古い API を使う必要がある場合は、コードまたはプロジェクト ファイルで警告を抑制することができます。

単一の違反だけを抑制するには、ソース ファイルにプリプロセッサ ディレクティブを追加して警告を無効にしてから、再度有効にします。

// Disable the warning.
#pragma warning disable SYSLIB0003

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0003

プロジェクトですべての SYSLIB0003 警告を抑制するには、プロジェクト ファイルに <NoWarn> プロパティを追加します。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0003</NoWarn>
  </PropertyGroup>
</Project>

詳細については、「警告を表示しない」を参照してください。

関連項目