发布版本引入了COM对象的错误

时间:2013-04-15 13:10:58

标签: com build rcw

我有一个clas库,我使用OutlookStorage.cs来读取(Outlook .msg)电子邮件和该电子邮件中的附件。我使用自定义文档查看器打开每个附件,该查看器将附件转换为PDF。在调试模式下,这非常有效。在发布模式下,读取1个附件后,将抛出一个COM异常,指出“无法使用已与其基础RCW分离的COM对象。”

使发布版本工作的属性包括:1。必须禁用优化代码。 2.在“高级构建设置”中,“调试信息”设置必须设置为“完全”。

我尝试通过添加属性来禁用该方法的优化,如下所示:

[MethodImpl(MethodImplOptions.NoOptimization)]

但是如果启用了发布模式设置的优化代码选项,这没有任何区别。

这是从COM对象读取流的代码:

    foreach (OutlookStorage.Attachment attachment in _attachments)
    {
      using (Stream stream = new MemoryStream())
      {
        stream.Write(attachment.Data, 0, attachment.Data.Length);
        string fileExtension = Path.GetExtension(attachment.Filename).Replace(".", "");
        Pdf document = new Pdf(stream, fileExtension);
        DocumentDetailControl document = new DocumentDetailControl(document);
        OpenInNewDialog(document);
      }
    }

_attachments是一个通用列表,OpenInNewDialog在文档打开后返回(没有等待用户干预)。

有没有人可以对此有所了解?我可以在代码中做些什么来阻止发布版本引入这个错误吗?

0 个答案:

没有答案