我有一个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在文档打开后返回(没有等待用户干预)。
有没有人可以对此有所了解?我可以在代码中做些什么来阻止发布版本引入这个错误吗?