首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在原编译计算机以外的计算机上部署.Net DLL。

无法在原编译计算机以外的计算机上部署.Net DLL。
EN

Stack Overflow用户
提问于 2014-12-01 21:28:01
回答 1查看 361关注 0票数 1

我在VisualStudio2010Express中编写了一个VB.NET类库。我确保在Properties->Application->选项卡上选择“Visible”。我还确保在属性窗口的编译选项卡上选择“”。

生成的DLL在编译该项目的计算机上运行良好。DLL旨在对Excel中的几个输入数组执行一些繁重的处理,并返回一个输出数组。我可以在VBA中添加对DLL的引用,并很好地使用该功能。

我想不出如何在其他机器上安装DLL。我确保将.NET更新到部署机器上的当前版本。然后运行以下批处理文件:

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

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

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

我哪里出问题了?Visual正在做什么来创建Excel引用?有什么东西我可以添加到我的批处理文件,使Excel识别这个DLL作为一个可用的参考在VBA?

非常感谢你抽出时间来回应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 21:25:09

我今天能让DLL在其他机器上工作。我最初犯了几个错误,导致DLL失败。我的问题源于使用64位版本的RegAsm而不是32位版本注册DLL。下面列出的操作顺序是最终解决这一问题的原因。

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

感谢@HansPassant帮助我解决所有这些问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27237649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档