前提:
问题:
流程测试:
结论/问题:
答案 0 :(得分:0)
我已经完成了大量的第三方库,只要第三方库DLL与C#DLL位于同一目录中就不存在问题。
将第三方库添加到GAC应该可以解决问题,但由于需要对DLL进行签名,因此不一定可行/容易。因此,只需确保您引用的库位于您的库的目录中,并且VB6实际上是引用该库的版本(Debug / Release,无论上次编译的是什么)。您可能希望将RegAsm交给库以确保正确的库是Com Registered。
所以要贬低,假设您的源代码如下所示:
c:\projects\vb6project
c:\projects\c#project
你的项目设置为Debug,第三方库应该在:
c:\projects\c#project\bin\Debug
当您确实要分发应用程序时,请确保所有库与VB6 exe位于同一目录中。
答案 1 :(得分:0)
这将反映Kris Erickson的答案。
首先,对于解决这些问题的用法,我没有使用GAC。假设我的VB6应用程序在c:\ program files \ mycompany \ _vb6app.exe中,我将COM友好的.NET dll(让我们称之为net4vb.dll)放在带有可执行文件的文件夹中。然后我使用/ codebase选项使用RegAsm注册那个dll。最后,我将我正在包装或使用的.NET程序集(也称为purenet.dll)放在该文件夹中。
此时,vb6app.exe应该运行且没有错误。
请务必注意,如果在Visual Studio中选择“注册COM Interop”,则会覆盖您在上面执行的注册。所以不要使用此选项。坚持使用命令行工具。