1

我有一个类库,我在其中使用OutlookStorage.cs来阅读(Outlook .msg)电子邮件和该电子邮件中的附件。我使用自定义文档查看器打开每个附件,该查看器将附件中的任何内容转换为 PDF。在调试模式下,这完美地工作。在发布模式下,读取 1 个附件后,会引发 COM 异常,指出“无法使用已与其底层 RCW 分离的 COM 对象”。

使发布构建工作的属性是: 1. 必须禁用优化代码。2. 在 Advanced Build Settings 中,Debug Info 设置必须设置为 Full。

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

[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 在文档打开后返回(无需等待用户干预)。

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

4

0 回答 0