繁体   English   中英

Visual Studio 2008 Office Interop 2003与2007

[英]Visual Studio 2008 Office Interop 2003 vs 2007

我正在使用Visual Studio .NET 2008开发Microsoft Excel的加载项。

该加载项创建一个工具栏按钮,可以单击该按钮以启动表单,该表单可用于将数据库中的值添加到活动电子表格的单元格中。

1)要求该工具在Excel 2003和2007中均可用。

2)另一个要求是,在Excel 2007中,启动按钮位于其自己的功能区选项卡上。

由于功能区选项卡的要求,我在Visual Studio中创建了两个单独的Excel加载项项目 - 每个版本的office都有一个。

但是,因为这两个加载项必须引用两个不同的Office.Interop程序集,并且提供数据库查询表单的项目只能引用一个,我发现自己无法在两个加载项项目之间共享第三个程序集。

有没有人比为两个附加版本中的每一个维护表单代码的单独副本有更简单的解决方案?

谢谢。

有两种选择:

选项1:不要在提供数据库查询的共享项目中引用任何Interop程序集。 使用接口和依赖项注入从加载项项目中提供所需的Excel互操作性代码。

让我举个例子:假设你的共享项目需要执行一些需要访问Interop库的函数func 您可以在共享项目中创建一个界面:

public interface ExcelInterface {
    void func();
} 

在您的加载项项目中,您提供此接口的实现:

class Excel2003Interface : ExcelInterface { // located in your Excel 2003 Addin
    void func() {
        // the code here can use the Excel 2003 interop reference
    }
}

同样,您在Excel 2007插件中创建Excel2007Interface

然后,在共享项目中打开表单时,您传递Excel2003InterfaceExcel2007Interface的实例,该表单用于调用func

void DoSomething(ExcelInterface iface) {  // this is in your shared project
    ...
    iface.func();
    ...
}

选项2:使用Visual Studio的已知链接文件功能在两个加载项项目之间共享代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM