好的,我有 2 个问题,我在这里很忙,已经有一个星期了。
重要- 没有应用程序会构建或运行它。它将是单个客户端 dll(引用其他几个 dll),将放置在特定文件夹中,我需要使用 regasm 或其他方式注册此 dll。
概述:
所以我写了ac# COM ScannerController.dll。ScannerController 引用了五个 3rd 方 dll,这些 dll 已经安装并注册在 c:\Program Features\etc...的文件夹中。(位置将根据它们所在的软件版本而变化,但 dll 将是相同的。)
这个 dll(integration.ActiveX(它是一个程序集))有一个名为 InstalledPath 的方法。InstalledPath 返回执行程序集的实际位置。当我完成 dll 时,我通过 IExplorer 运行它,它返回了正确的“../program features/....”。
然后,为了在另一台计算机上设置它,我取消了注册,然后运行了一些 regasms 并在“Scanner/bin/debug/integration.ActiveX”注册了 dll(其中 oleview 说它找不到它的依赖项)所以我取消注册它是在 vs2012 中构建的,现在当我从 IExplorer 运行它时,InstalledPath 是“../bin/debug/”。我创建了一个新项目,构建了它并自动注册它,然后从 iexplorer 运行它,InstalledPath 是“..Scanner-fake/bin/debug/”。我已经在 cmd 中注销了它一百万次,无论我做什么,它现在总是指向已注册的 ScannerController 的调试文件夹。
问题一:
我到底如何使用 regasm 之类的东西注册我的 COM ScannerController.dll,并将其指向 ScannerController 引用的五个第 3 方 dll?
问题2:
我尝试将其修复到我计算机上本地路径中不存在 Integration.dll 的位置(因为我正在构建它)所以我将本地副本设置为 false。当我构建它时,在 oleview 中查看它,它说无法加载或找到它的依赖项。如何设置项目,以便在复制 local = false 的情况下,引用可以找到其他 3rd 方 dll?
很抱歉这个冗长的问题,但非常感谢您阅读并尝试帮助我。我为此寻找了高低,我现在只是精神疲惫。