c# - HRESULT 异常:0x80004004 (E_ABORT)
问题描述
我正在使用 c# 处理 VSTO Outlook AddIn 项目,并尝试使用以下方法在 Outlook 中添加 DocumentItem -
protected void CreateWordDocument(string strPhysicalFilePath, Outlook.Folder ParentFolder)
{
Outlook.DocumentItem objDocItem = null;
Outlook.Attachment objAtt = null;
try
{
objDocItem = ParentFolder.Items.Add("IPM.Document");
objAtt = objDocItem.Attachments.Add(strPhysicalFilePath, );
objDocItem.Subject = objAtt.FileName;
string strFileType = Path.GetExtension(strPhysicalFilePath, );
switch (strFileType)
{
case ".doc":
case ".docx":
objDocItem.MessageClass = "IPM.Document.Word.Document.8"; break;
case ".xls":
case ".xlsx":
objDocItem.MessageClass = "IPM.Document.Excel.Sheet.8"; break;
case ".pps":
case ".ppt":
case ".pptx":
objDocItem.MessageClass = "IPM.Document.PowerPoint.Show.8"; break;
case ".txt":
objDocItem.MessageClass = "IPM.document.txtfile"; break;
}
objDocItem.Save();
}
catch (Exception ex)
{
ErrorLog.WriteError("ClassName", "CreateWordDocument()", ex.Message);
}
finally
{
if (objDocItem != null) Marshal.ReleaseComObject(objDocItem);
if (objAtt != null) Marshal.ReleaseComObject(objAtt);
}
}
但在“ objDocItem = ParentFolder.Items.Add("IPM.Document"); 行出现以下错误
VSTO Outlook 插件中的 outlook.Items.Add() 中的操作中止(HRESULT 异常:0x80004004 (E_ABORT))。
相同的代码在我的计算机上运行良好,但在另一台计算机上出现此错误。
解决方案
我找到了解决方案 - 目标平台 32 位或 64 位存在问题。我在那里遇到异常的机器安装了 64 位 Office,我的 Outlook 插件安装程序是在 32 位平台中构建的。我已经重新编译并构建了带有 64 位目标平台的安装程序并安装在该机器上。现在它工作正常。
推荐阅读
- spring - 如何使用 Liquibase 和 H2 配置 Spring Boot 以默认使用非管理员帐户
- r - 如何打印弹性表的第一行?
- java - 2 字符串对象具有相同的地址
- python - Python在字符串中转义“类”字
- javascript - 当我与“===”两个相同的数组进行比较时,为什么 JavaScript 返回 false
- r - 将时间序列数据转换为嵌套数据框,其中组正在增加时间段(w/dplyr & tidyr)
- python - 如何为 QTableView 列设置标题标签?
- angular - 使用 Angular 的可观察存储和组件输入
- c - 用 C 创建一个 UiAutomation
- kubernetes - Kubernetes pod 错误:创建多个服务