いくつかのアセンブリ操作クラスをテストする目的で、統合テストでアセンブリを動的に作成したいと考えています。次のコードを使用してテスト アセンブリを作成するとします。
var domain = AppDomain.CurrentDomain;
var builder = domain.DefineDynamicAssembly(
new AssemblyName(assemblyName),
AssemblyBuilderAccess.Save,
directory);
builder.Save(fileName);
その後、すべてが正常に実行され、必要な場所にアセンブリが作成されますが、その一部として、現在の にも読み込まれAppDomain
ます。これは望ましくありません。
だから私は、別のを使用してアセンブリを作成することについて考えましたAppDomain
:
var domain = AppDomain.CreateDomain("Test");
...
ただし、コードを実行すると、次の行で例外がスローされますvar builder = domain.DefineDynamicAssembly(...);
。
System.Runtime.Serialization.SerializationException: アセンブリ 'mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のタイプ 'System.Reflection.Emit.AssemblyBuilder' は、シリアル化可能としてマークされていません。
DefineDynamicAssembly
これが非 current の呼び出しにどのように関連するかはわかりませんAppDomain
。私がオンラインで見つけたのは、主に別々のドメインでアセンブリを実行することだけです。ここでやろうとしていることは、具体的すぎるか、高度すぎるか、またはまったく推奨されていないだけかもしれませんが、アセンブリ操作コードをすべてテストすることができます。
誰かが私を正しい方向に向けることができますか?