如何在一个项目中使用两个不同的Microsoft Interop程序集?

时间:2009-09-03 08:14:57

标签: c# .net assemblies conflict

我想使用两个不同的Microsoft.Office.Interop程序集(版本11和12),具体取决于客户计算机上安装的Office版本。

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

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

  

无法解决之间的冲突   “的Microsoft.Office.Interop.Excel,   版本= 12.0.0.0,文化=中立,   PublicKeyToken = 71e9bce111e9429c“和   “的Microsoft.Office.Interop.Excel,   版本= 11.0.0.0,文化=中立,   公钥= 71e9bce111e9429c”。   选择   “的Microsoft.Office.Interop.Excel,   版本= 12.0.0.0,文化=中立,   公钥= 71e9bce111e9429c”   任意。

1 个答案:

答案 0 :(得分:0)

是的,这很糟糕,但可以理解。我强烈建议您查看用于无COM生成的Open XML SDK。但我理解时间紧缩和其他要求,所以如果你不能......这就是我要做的事。

要确保它们位于同一页面上,这就是我想要别名http://www.dotnetperls.com/extern的内容,如果由于一些不适合您的奇怪原因,您可以使用下面的其他方法。

为了清洁,您可以创建几个新项目。对于您需要实现的每个版本,请为其命名,例如Excel11,Excel12等特定版本。

然后为你希望能够从每个函数访问的函数构建包装类,你可以得到花哨的dancy并在你的包装类扩展的单独的Common Project中构建一个抽象类,这样你就可以从你的main中一般地引用它们了。代码由Abstract类名称表示均匀性。您只需要在主项目中添加对新项目的引用,并根据您检查版本,注册表项或其他方式选择所需的包装器。希望它有所帮助。