2

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

我已经创建了Excel.dll在我的机器上运行良好的 in C#in和. 在我的计算机上的编辑器中添加对 dll 的引用没有问题。我的问题是部署在另一台正在运行的机器上,并且. 我将dll复制到这台计算机并用于注册dll。Visual StudioWindows 7Office 2010Excel VBAVistaExcel 2007regasm

谁能指出我正确的方向?这里是代码和 regasm:

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

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";
    } 
  }
}
4

2 回答 2

5

您需要为 excel 注册类型库才能在 References 中查看您的 dll。

IEregasm.exe excelDll.dll /tlb:excelDll.tlb

标记。

于 2012-11-10T11:06:20.087 回答
-1

我最近遇到并设法解决了这个问题——尽管我不能声称完全理解我的解决方案为什么有效。

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

所有 C# 程序集都设置为“平台目标:任何 CPU”。主程序集设置为“注册 COM 互操作”。整个东西是使用由 Visual Studio Installer 项目创建的 MSI 安装的。

我发现如果我将 Visual Studio 安装程序项目“目标平台”设置为“x64”,则它在 Excel 2010 中有效,但在 Excel 2007 中无效。相反,如果我将 Visual Studio 安装程序项目“目标平台”设置为“x86” ",它适用于 Excel 2007,但不适用于 Excel 2010。

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

于 2014-07-07T03:17:31.877 回答