Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用VSTO进行Excel插件单元测试_C#_Excel_Testing_Vsto_Office Interop - Fatal编程技术网

C# 使用VSTO进行Excel插件单元测试

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

我一直在尝试测试我的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链接似乎是完全相同的问题,但是我在运行测试时仍然有一个例外

[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;