两台不同计算机上的不同Interop参考不起作用

当我在计算机上添加对Microsoft.Office.Interop.Excel的引用时,Visual Studio将其添加到项目文件中:

<COMReference Include="Excel"> <Guid>{00020813-0000-0000-C000-000000000046}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>5</VersionMinor> <Lcid>0</Lcid> <WrapperTool>primary</WrapperTool> <Isolated>False</Isolated> </COMReference> 

团队中还有另外一名开发人员遇到错误,需要将一个DLL文件添加到名为Interop.Excel.dll的项目中,该项目将在项目文件中用以下代码replace上面的代码:

 <Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>My Project\Interop.Excel.dll</HintPath> </Reference> 

这在我的电脑上工作。

你能解释一下这两种方法之间的区别,哪一个最好,以及如何让其他电脑上的第一个工作?

我也没有看到你的方法有问题。

通常,当您添加对组件的引用时,VS将自动为COM组件生成一个互操作程序集。 但是,如果添加对某个Office组件(XP或更高版本)的引用,则会像第一个示例中那样添加对Microsoft预生成(并经过优化)的主互操作程序集的引用。 该线

 <WrapperTool>primary</WrapperTool> 

意味着使用这个PIA。

如果您正确地添加了PIA引用,则此引用的CopyLocal属性应该设置为false,并且Path属性应该是类似的

 C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll 

您将在本MSDN 文章中find有关interop程序集的更多详细信息。

要获得第一种方法,必须在机器上安装Office主互操作程序集(PIA)。 有一个可从微软提供的可再发行版本:

  • Office 2003 PIA
  • Office 2007 PIA

AFAIK,这些PIA只有在安装了.NET Framework的情况下才能通过Office安装程序进行安装,这就是为什么PIA有单独的可再发行组件。

注意:确保您参考了您所定位的Office版本。 当针对多个版本的Office时,您可能会遇到一些问题。 在这种情况下,解决scheme可能会迟到(如果性能不是问题)。

我已经使用Excel自动化的方式比我想承认,我从来没有引用Interop.Excel.dll。 我一直引用前者。 他为什么提到这个,他得到了什么错误?

你们是否引用了相同版本的excel(5.0节11.0)? 你们是否有完全相同的办公室,服务包和所有版本? 这可能是不同的。

我发现使用它的最干净的方法,这也允许多个版本的互操作,是创build一个共享bin \ Office Interop \ 11或12 \ Microsoft.Office.Interop.Excel.dll \,并从项目refeferenced他们,为不同的版本工作