COM相互運用機能を介してSystem.IO.Packagingを使用すると、「ドメインのIDを特定できません」というメッセージが表示されます。これが発生する理由を説明する記事がいくつかあり、解決策は、問題のある関数を独自のAppDomainで実行することです。
だから私は以下のようなサンプルコードを取りましたが、それでもエラーが発生します、私は何が間違っているのか疑問に思っています、そしてまた、VS2010ではAddAssemblyとAddHostは時代遅れだと言います-それはもはやそれらがなくなったことを意味するのだろうか?実装されていますが、その場合、新しいメソッド(AddAssemblyEvidenceおよびAddHostEvidence)の使用方法がよくわかりませんか?
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
Evidence evidence = new Evidence(AppDomain.CurrentDomain.Evidence);
evidence.AddAssembly(Assembly.GetExecutingAssembly().FullName);
evidence.AddHost(new Zone(SecurityZone.MyComputer));
AppDomain domain = AppDomain.CreateDomain("BlobPackage", evidence, setup);
BlobPackage blob_interal = (BlobPackage)domain.CreateInstanceAndUnwrap(typeof(BlobPackage).Assembly.FullName, typeof(BlobPackage).FullName);
blob_interal.pack(FilePath, RootPath, m_source_files); <-- STILL FAILS
AppDomain.Unload(domain);