gpt4 book ai didi

com - 无法使用 System.IO.Packaging 确定域的标识

转载 作者:行者123 更新时间:2023-12-02 04:55:11 26 4
gpt4 key购买 nike

通过 COM Interop 使用 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);

最佳答案

我自己解决了这个问题,我忘记从 MarshalByRefObject 继承我的类。

它有点愚蠢,它允许您创建一个实例并调用它,除非它仍在默认域中运行,您会认为它会抛出异常或其他东西,无论如何将类标记为 [Serialized()] 和从 MarshalByRefObject 派生修复了它。

关于com - 无法使用 System.IO.Packaging 确定域的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com