不能在原始编译机器以外的机器上部署.Net DLL

我已经在Visual Studio 2010 Express中编写了一个VB.NET类库。 我确保在Properties – > Application – > Assembly Information选项卡上select“Make assembly COM-Visible”。 我还确保在属性窗口的编译选项卡上select“Register for COM Interop”。

生成的DLL在编译该项目的机器上正常工作。 该DLL旨在对来自Excel的几个input数组执行一些繁重的处理,并返回一个输出数组。 我能够在VBA中添加对DLL的引用,并使用该function。

我无法弄清楚如何在其他机器上安装DLL。 我确保将.NET更新到部署机器上的当前版本。 然后我运行下面的batch file:

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe“C:\ Users \ Public \ DRAPERLibrary.dll”/ codebase /tlb:DRAPERLibrary.tlb

RegAsm的这个调用返回没有错误。

我可以看到Windowsregistry有一些新的引用到这个DLL,但我看不到在Excel中的DLL。 如果我手动浏览到DLL它回来的错误“无法添加指定文件的引用”。

我在哪里错了? 什么是Visual Studio创build一个Excel引用? 有什么我可以添加到我的batch file导致Excel将此DLL识别为VBA中的可用引用吗?

非常感谢您花时间回复。

我能够让DLL在今天的其他机器上工作。 我最初犯了一些错误,导致DLL失败。 我的问题的起源是由使用RegAsm的64位版本而不是32位版本注册DLL引起的。 下面列出的操作顺序是最终得到这个清理。

  • 删除VBA中的任何旧的DRAPERLibrary引用
  • 用/ u参数完全注销使用RegAsm的DLL
  • 使用RegAsm的32位版本注册新DLL,因为我正在使用32位版本的Excel(\ Microsoft.NET \ Framework \而不是\ Microsoft.NET \ Framework64)
  • 在VBA中select对新DRAPERLibrary的引用
  • 更新模块代码以反映最新的DLL版本号

感谢@HansPassant帮助我解决这一切。