在另一台计算机上部署并注册.Net
Excel.dll
时,尝试在Can't add a reference to the specified file
编辑器中添加对DLL
的引用时出现错误VBA
。
我已在Excel.dll
C#
中Visual Studio
创建了Windows 7
,该Office 2010
在Excel VBA
和Vista
的机器上正常运行。在我的计算机上的Excel 2007
编辑器中添加对dll的引用没问题。我的问题是在另一台运行regasm
和using 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}}
答案 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版本 - 但至少这可能让它适合你!