5

我想根据客户机器上安装的 Office 版本使用两个不同的 Microsoft.Office.Interop 程序集(版本 11 和 12)。

我已经能够将这两个程序集添加到我的项目中(我在本地使用它们 - 它们在我的 bin 文件夹中,在两个不同的子文件夹中),我在这个程序集上使用了别名以便能够在我的项目中使用它们(别名分别为 Excel11 和 Excel12)。

但不幸的是,当我尝试构建解决方案时,我收到了警告:

无法解决“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”和“Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken”之间的冲突=71e9bce111e9429c”。任意选择“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”。

4

1 回答 1

-1

是的,这很恶心,但可以理解。我强烈建议研究 Open XML SDK 以进行无 COM 生成。但我理解时间紧迫和其他要求,所以如果你不能......这就是我会做的。

为了确保在同一页面上,这就是我正在考虑的别名http://www.dotnetperls.com/extern如果由于某些奇怪的原因不适合您,您可以在下面使用另一种方法。

为了清洁,您可以创建几个新项目。为您需要实施的每个版本命名一个,将它们命名为特定于版本的名称,例如 Excel11、Excel12。

然后为您希望能够从每个函数访问的函数构建包装器类,您可以花哨并在您的包装器类扩展的单独公共项目中构建一个抽象类,因此您可以通过统一的抽象类名。您只需要在主项目中添加对新项目的引用,然后根据您正在检查的版本、注册表项或其他方式选择所需的包装器。希望能帮助到你。

于 2013-06-25T14:45:06.277 回答