どうも音無サノトです。
ユニティちゃんをインストールした際に「System.Security.Policy のアセンブリが参照されてない」というエラーが出たので調べてみました(下記のエラーです)。
そもそも System.Security.Policy って何?
こういうことだそうです。
System.Security.Policy 名前空間には、コード グループ、メンバーシップ条件、および証拠が含まれます。 これらの 3 種類のクラスは、共通言語ランタイム セキュリティ ポリシー システムで適用されるルールを作成するために使用します。 証拠クラスはセキュリティ ポリシーへの入力であり、メンバーシップ条件はスイッチです。これら 2 つのクラスの両方によって、ポリシー ステートメントが作成され、与えられるアクセス許可セットが決定されます。 ポリシー レベルとコード グループは、ポリシーの階層構造を形成します。 コード グループは規則をカプセル化したもので、ポリシー レベルに階層的に配置されます。
引用元
よくわからん。。。
意味が分かる人がいたら教えてくださいm(_ _)m
対応策
using System.Security.Policy; をコメントアウトするだけです。
これだけでもよかったのですが、他に何かないか色々と調べてみました。
調査
参照の追加
まず、参照されてないのだから追加すればいいだけでは? と思いやってみました。
Visual Studio でプロジェクト > 参照の追加 を選択します。
そこでアセンブリを色々と見ていき「System.Security」というものを発見しました。
それ以外でそれっぽいものがないのでこちらを追加してみました。
しかしエラーは直らず。。。
System.Security の名前空間には Policy クラスがないみたいです。
System.Security.Policy は使われているのか?
調べていくと、そもそもこのクラスが使われているのかが怪しいことがわかりました。
以下の手順でそれを確認。
まず .NET Framework のバージョンを確認します。
検索で「regedit」と入力しレジストリエディターを起動します。
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full」のキーを開き、Release の数値を確認します。
その数値をこちらのサイトでバージョンと比較して 4.7.2 ということがわかりました。
そしてここを参照してみると現在、System.Security.Policy という API は使われていないことがわかりました。
使われていないのならコメントアウトしても問題ないということですかね。
なんで公式の方が消しておいてくれないのだろうかと思いました。。。
まあ、でもいい勉強になりました。
本日は以上となります。最後まで読んでいただきありがとうございました!