我正在维护C#Outlook加载项。它在Outlook 2003中运行了很多年。今天,一个用户报告了一个我从未见过的错误。对于两封邮件(都是来自同一发件人),当她尝试处理它们时会收到此错误消息:
对象不支持此方法。 在Microsoft.Office.Interop.Outlook._MailItem.set_Subject(字符串主题)
加载项尝试更新主题时引发异常:
private static void ForceReconnectToExchangeServer(Outlook.MailItem mi)
{
mi.Subject = mi.Subject + ""; // <-- HERE
mi.Save();
}
我可以看到第二条错误消息(在Visual Studio中,该行末尾的工具提示):
errorCS0433:两者中都存在类型'MailItem' 'Microsoft.Office.Tools.Outlook.Implementation,版本= 10.0.0.0, 文化=中性,PublicKeyToken = b03f5f7f11d50a3a'和 'Microsoft.Office.Tools.Outlook,版本= 10.0.0.0,文化=中性 (...看不到该行的其余部分...。)
知道为什么会这样吗?非常感谢!
注1:此加载项使用最新版本的“兑换”。
注意2:即使我删除了邮件中的所有内容,将邮件转发给自己(进行处理)时,我也会遇到相同的错误。但是,如果我将邮件格式更改为“纯文本”,则没有错误。
注3:此问题可能与this one有关,但没有人回答。
答案 0 :(得分:1)
您的项目中是否有机器人引用?确保没有冲突。
还请记住,更新Subject
将导致重置特定于对话的属性。重置消息类(IPM.Note.Dummy
,然后返回原始消息类)可能是一个更好的主意。
答案 1 :(得分:1)
Microsoft.Office.Tools.Outlook
命名空间包含一组类和接口,使您可以创建自定义Microsoft Office Outlook表单的表单区域。
我建议您检查代码库,并从项目中删除未使用的引用。另外,请确保Outlook
命名空间指向Microsoft.Office.Interop.Outlook
,例如:
private static void ForceReconnectToExchangeServer(Microsoft.Office.Interop.Outlook.MailItem mi)
{
mi.Subject = mi.Subject + ""; // <-- HERE
mi.Save();
}