我有一个 VSTO 插件,它使用 CustomTaskPanes。我的代码可以编译并且工作正常,但问题来自代码分析器,例如 Resharper 和 .net 的代码合同。
此代码会引发来自两个分析器的错误消息:
CustomTaskPane taskPane = CustomTaskPanes.Add(new UserControl(), "Title");
taskPane.DockPosition = MsoCTPDockPosition.msoCTPDockPositionFloating;
无法将源类型“Microsoft.Office.Core.MsoCTPDockPosition [office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c]”转换为目标类型“Microsoft.Office.Core.MsoCTPDockPosition [Microsoft.Office.Tools.Common,版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a]'
这很奇怪,因为公共类型 Microsoft.Office.Core.MsoCTPDockPosition 只存在于 office.dll 中。无论如何,我尝试使用别名来解决它,并将 Microsoft.Office.Tools.Common 命名为 Tools_Common:
extern alias Tools_Common;
using System;
using System.Windows.Forms;
using Microsoft.Office.Core;
using Tools_Common::Microsoft.Office.Tools;
using CustomTaskPane = Tools_Common::Microsoft.Office.Tools.CustomTaskPane;
但这根本没有帮助。消息的原因是什么?我该如何解决(尤其是代码合约)?
此外,我发现了另一个奇怪的工件 - Resharper 的自动完成显示 MsoCTPDockPosition 就像它存在于 Microsoft.Office.Tools.Common.dll 中一样,但后来我尝试进行自动完成,它使用 office.dll 版本: