音無サノトの空想録

ゆるく生きている人の漫画

ユニティちゃんをインストールした際に出る「System.Security.Policy」のエラーに関して

どうも音無サノトです。

ユニティちゃんをインストールした際に「System.Security.Policy のアセンブリが参照されてない」というエラーが出たので調べてみました(下記のエラーです)。

Assets\UnityChan\Scripts\AutoBlink.cs(8,23): error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)

 

 

そもそも System.Security.Policy って何?

こういうことだそうです。

System.Security.Policy 名前空間には、コード グループ、メンバーシップ条件、および証拠が含まれます。 これらの 3 種類のクラスは、共通言語ランタイム セキュリティ ポリシー システムで適用されるルールを作成するために使用します。 証拠クラスはセキュリティ ポリシーへの入力であり、メンバーシップ条件はスイッチです。これら 2 つのクラスの両方によって、ポリシー ステートメントが作成され、与えられるアクセス許可セットが決定されます。 ポリシー レベルとコード グループは、ポリシーの階層構造を形成します。 コード グループは規則をカプセル化したもので、ポリシー レベルに階層的に配置されます。

 

引用元

System.Security.Policy Namespace | Microsoft Docs

よくわからん。。。

意味が分かる人がいたら教えてくださいm(_ _)m 

 

対応策

using System.Security.Policy; をコメントアウトするだけです。

f:id:otonasisanoto:20190615093414p:plain

System.Security.Policy をコメントアウト

 

これだけでもよかったのですが、他に何かないか色々と調べてみました。

 

調査

参照の追加

まず、参照されてないのだから追加すればいいだけでは? と思いやってみました。

Visual Studio でプロジェクト > 参照の追加 を選択します。

f:id:otonasisanoto:20190615091609p:plain

参照の追加

 

そこでアセンブリを色々と見ていき「System.Security」というものを発見しました。

それ以外でそれっぽいものがないのでこちらを追加してみました。

f:id:otonasisanoto:20190615091744p:plain

参照マネージャー

 

しかしエラーは直らず。。。

System.Security の名前空間には Policy クラスがないみたいです。

 

System.Security.Policy は使われているのか?

調べていくと、そもそもこのクラスが使われているのかが怪しいことがわかりました。

以下の手順でそれを確認。

 

まず .NET Framework のバージョンを確認します。

 

検索で「regedit」と入力しレジストリエディターを起動します。

「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full」のキーを開き、Release の数値を確認します。

f:id:otonasisanoto:20190615090613p:plain

Release の数値確認


その数値をこちらのサイトでバージョンと比較して 4.7.2 ということがわかりました。

 

そしてここを参照してみると現在、System.Security.Policy という API は使われていないことがわかりました。

 

使われていないのならコメントアウトしても問題ないということですかね。

なんで公式の方が消しておいてくれないのだろうかと思いました。。。

 

まあ、でもいい勉強になりました。

 

本日は以上となります。最後まで読んでいただきありがとうございました!