c#excel dll - 无法添加对指定文件的引用 - regasm

时间:2012-09-18 15:30:59

标签: c# dll windows-vista excel-2007 regasm

在另一台计算机上部署并注册.Net Excel.dll时,尝试在Can't add a reference to the specified file编辑器中添加对DLL的引用时出现错误VBA

我已在Excel.dll C#Visual Studio创建了Windows 7,该Office 2010Excel VBAVista的机器上正常运行。在我的计算机上的Excel 2007编辑器中添加对dll的引用没问题。我的问题是在另一台运行regasmusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace TestDll { [ClassInterface(ClassInterfaceType.AutoDual)] public class Test { public string HelloWorld { get { return "Hello World"; } } public void sayGoodbye1() { MessageBox.Show("Say Goodbye"); } public string sayGoodbye2() { return "Say Goodbye"; } } } 的计算机上部署。我将dll复制到此计算机并使用{{1}}注册dll。

有人能指出我正确的方向吗?这是代码和regasm:

  

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ regasm.exe excelDll.dll

{{1}}

2 个答案:

答案 0 :(得分:4)

您需要为excel注册类型库,以便在参考文献中查看您的dll。

即。 regasm.exe excelDll.dll /tlb:excelDll.tlb

标记。

答案 1 :(得分:-1)

我最近遇到并设法解决了这个问题 - 尽管我无法理解为什么我的解决方案有效。

我的系统都运行Windows 7 x64。一个是Excel 2010,另一个是Excel 2007。

所有C#程序集都设置为"平台目标:任何CPU"。主要程序集设置为"注册COM Interop"。整个事情是使用Visual Studio Installer项目创建的MSI安装的。

我发现如果我设置了Visual Studio Installer项目" Target Platform"到" x64",然后它可以在Excel 2010中运行,但不能在Excel 2007中运行。相反,如果我设置Visual Studio Installer项目"目标平台"到" x86",它适用于Excel 2007但不适用于Excel 2010。

可悲的是,我无法同时在同一台机器上测试两个Excel版本 - 但至少这可能让它适合你!