【发布时间】:2012-05-19 01:53:13
【问题描述】:
我在通过 COM 互操作使用 System.IO.Packaging 时收到“无法确定域的身份”,有几篇文章描述了为什么会发生这种情况,解决方案是在其自己的 AppDomain 中运行有问题的函数。
所以我采用了示例代码,如下所示,但我仍然收到错误,我想知道我做错了什么,而且,对于 VS 2010,它说 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);
【问题讨论】:
-
你可以这样使用新方法:
evidence.AddAssemblyEvidence(new ApplicationDirectory(Assembly.GetExecutingAssembly().FullName));evidence.AddHostEvidence(new Zone(SecurityZone.MyComputer));
标签: com interop appdomain system.io.packaging