部分信頼環境で特定の .NET コードの動作をテストしたいと考えています。これを設定する最速の方法は何ですか? 私 (および他の読者) は完全な CAS 初心者だと思い込んでください。
@ニック:返信ありがとうございます。悲しいかな、問題のツールは明示的にアンマネージ コード用です。私は質問で「マネージド」とは言いませんでした。人々が「.NET」タグからそれを推測するだろうと想定すべきではありませんでした。
部分信頼環境で特定の .NET コードの動作をテストしたいと考えています。これを設定する最速の方法は何ですか? 私 (および他の読者) は完全な CAS 初心者だと思い込んでください。
@ニック:返信ありがとうございます。悲しいかな、問題のツールは明示的にアンマネージ コード用です。私は質問で「マネージド」とは言いませんでした。人々が「.NET」タグからそれを推測するだろうと想定すべきではありませんでした。
これは、特に TDD の観点から、そしてさまざまな信頼シナリオの下でコードを検証するという点で、優れた質問です。
私がこれにアプローチする方法は、次のようなものになると思います-
PermissionSet を渡すことができる AppDomain.CreateDomain() オーバーロードを使用して、TDD コードで AppDomain を作成します。PermissionSet は、テストするさまざまな信頼シナリオに一致するように構築されます。
テスト対象のロジックを含むアセンブリをアプリ ドメインに読み込みます
アプリ ドメインで型/呼び出しメソッドなどのインスタンスを作成し、セキュリティ例外をトラップします
みたいなやつ。まだ概念実証を行う時間がありません。
探している機能は、ビジュアル スタジオに組み込まれています。
プロジェクトのセキュリティ タブには、完全な信頼でデバッグするか、指定した信頼レベルでデバッグするかを構成できる [詳細...] ボタンがあります。
.NETFramework構成ツールを確認する必要があります。これは.NETSDKにあり、実行方法についてはこちらをご覧ください... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx
[ランタイムセキュリティポリシー]セクションには、エンタープライズ、マシン、ユーザーの3つのポリシーレベルがあります。マシンまたはユーザーにドリルダウンすると、コードグループと権限セットの定義が見つかります。部分的な信頼環境でいくつかの.NETコードをテストしたい場合は、インターネットなど、すでに定義されている標準のアクセス許可セットの1つに対してテストする必要があると思います。アプリ(または特定のアセンブリ)に一致するコードグループを定義し、選択したアクセス許可セットをそのコードグループに割り当てる必要があります。
独自のカスタム権限セットを定義することもできますが、ここでは単純にしましょう。
新しいコードグループをマシン全体のスコープに存在させるか、ユーザーアカウントのみに存在させるかを選択し、それに応じてマシンまたはユーザーのポリシーレベルにドリルダウンします。_All_Code_というコードグループが表示されます。右クリックして[新規... ]を選択し、その中に子コードグループを作成します。
名前を付けて、PartialTrustGroupと言い、[次へ]をクリックします。
このグループのメンバーシップ条件を指定する必要があり、さまざまなタイプがあります。自分のマシンにPartialTrustという特定のフォルダーを作成してから、一致するURLメンバーシップ条件を作成するのが好きです。したがって、私のURLは次のようになります... file:// c:/ users / martin / documents / partialtrust / *
*は、そのパスの下にあるアセンブリをキャッチするためのワイルドカードです。[次へ]をクリックします。
これで、新しいコードグループの権限セットを選択できます。今のところ、インターネットを選択します。これは、Javaアプレットのサンドボックスに似た、非常に制限の厳しいセットです。[次へ]をクリックして[完了]をクリックします。
次に、新しいコードグループを右クリックして、[プロパティ]を選択します。[全般]タブで、一番上のチェックボックスが選択されていることを確認し、[OK]をクリックします。
これで、指定したURLの下の場所からロードされた.NETアセンブリには、インターネットアクセス許可セットが適用されます。削減されたアクセス許可セットを注意深く観察するためのコードを記述していない場合は、いくつかのSecurityExceptionsが発生することを期待してください。
申し訳ありませんが、これは長い説明です。思ったよりずっと簡単です。
Microsoft Application Verifierを使用します。
AppVerifier は、次のことを判断するのに役立ちます。
xUnit.net を使用した部分信頼テストというタイトルの記事をブログに投稿しました。Entity Framework チームが中程度の信頼の下でコードを実行するために使用する xUnit.net ベースのフレームワークについて詳しく説明します。
以下はその使用例です。
public class SomeTests : MarshalByRefObject
{
[PartialTrustFact]
public void Partial_trust_test1()
{
// Runs in medium trust
}
}
// Or...
[PartialTrustFixture]
public class MoreTests : MarshalByRefObject
{
[Fact]
public void Another_partial_trust_test()
{
// Runs in medium trust
}
}