C# 使用VSTO进行Excel插件单元测试
我一直在尝试测试我的addin,但没有成功,甚至在查看了各种来源之后,比如和 我似乎做不到。 这是我当前的代码(我将代码修剪为只包含相关部分) AssemblyInfo.cs 这是ADDIN.cs AddinHelper.cs 此附加测试.cs 主项目引用Microsoft.Office.Interop.Excel的.NET程序集版本,嵌入互操作类型设置为true。 我的测试项目引用我的VSTO项目和COM(ActiveX)版本的互操作 我得到的例外是: 无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“MyAddIn.IAddinHelper”。此操作失败,因为对IID为“{B523844E-1A41-4118-A0F0-FDFA7BCD77C9}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE)) 我目前使用的是Office 2013(因此Office 15.0),参考资料都指向该版本、.NET 4.5.3和Visual Stuio Community 2017。我提供的SO链接似乎是完全相同的问题,但是我在运行测试时仍然有一个例外C# 使用VSTO进行Excel插件单元测试,c#,excel,testing,vsto,office-interop,C#,Excel,Testing,Vsto,Office Interop,我一直在尝试测试我的addin,但没有成功,甚至在查看了各种来源之后,比如和 我似乎做不到。 这是我当前的代码(我将代码修剪为只包含相关部分) AssemblyInfo.cs 这是ADDIN.cs AddinHelper.cs 此附加测试.cs 主项目引用Microsoft.Office.Interop.Excel的.NET程序集版本,嵌入互操作类型设置为true。 我的测试项目引用我的VSTO项目和COM(ActiveX)版本的互操作 我得到的例外是: 无法将“System.\u ComObj
[assembly: ComVisible(true)]
[assembly: InternalsVisibleTo("MyAddInTest")]
private AddinHelper _comAddinObject;
protected override object RequestComAddInAutomationService()
{
return _comAddinObject ?? (_comAddinObject = new AddinHelper());
}
[ComVisible(true)]
[Guid("B523844E-1A41-4118-A0F0-FDFA7BCD77C9")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IAddinHelper
{
string GetString();
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("A523844E-1A41-4118-A0F0-FDFA7BCD77C9")]
[ComSourceInterfaces(typeof(IAddinHelper))]
public class AddinHelper : StandardOleMarshalObject, IAddinHelper
{
public string GetString()
{
return Globals.ThisAddIn.Application.ActiveWorkbook.Name;
}
}
Application = new Application();
Workbook = Application.Workbooks.Add();
COMAddIns comAddins = Application.COMAddIns;
COMAddIn comAddin = comAddins.Item("MyAddIn");
IAddinHelper comObject = (IAddinHelper) comAddin.Object;