Uwp 从Visual Basic 6.0调用COM互操作.Net程序集
我们有一个在VisualBasic6.0上运行的项目 我们尝试在桌面网桥中迁移。 当我们使用DAC命令提示符时,一切正常。 转换后的应用程序按原样转换,在任何测试计算机上都可以正常工作 我们甚至设法添加了一个COM Interop.NET程序集,以便能够使用UWP功能(如toasts) 一切都可以在任何开发机器上正常工作,但不能在测试机器上正常工作。 嗯,从Visual basic加载COM Interop.Net程序集似乎不起作用 与测试机器和开发机器的主要区别:Uwp 从Visual Basic 6.0调用COM互操作.Net程序集,uwp,desktop-bridge,Uwp,Desktop Bridge,我们有一个在VisualBasic6.0上运行的项目 我们尝试在桌面网桥中迁移。 当我们使用DAC命令提示符时,一切正常。 转换后的应用程序按原样转换,在任何测试计算机上都可以正常工作 我们甚至设法添加了一个COM Interop.NET程序集,以便能够使用UWP功能(如toasts) 一切都可以在任何开发机器上正常工作,但不能在测试机器上正常工作。 嗯,从Visual basic加载COM Interop.Net程序集似乎不起作用 与测试机器和开发机器的主要区别: 在开发计算机上,Visual
regasm
,在引擎盖下)regasm
。。。因为Visual Studio 6安装程序不知道如何注册互操作程序集(使用regasm
)
我们如何应对这种情况
作为细节,我们有一些简单明了的东西:
- MyApplication.exe(vb6)
- MyWrappers.dll(和.tlb)(.net C#程序集标记为COM互操作,并引用UWP SDK以能够启动通知)
Sebastien是的,您必须将COM注册作为包部署的一部分 一种方法是将COM注册添加到现有安装程序(或链接两个安装程序),然后再次在其上运行DAC 另一个选项是“手动”将COM注册添加到已有的DAC输出(即添加到registry.dat文件) 第三种选择是根本不使用COM,而是使用普通的Win32 interop从VB6应用程序调用UWP API 我已经发布了一篇关于后者的示例/博客文章:
谢谢您的快速回答!顺便说一句:-1:不确定我们能否“链接”两个安装程序:一个来自Visual Studio 6安装程序,另一个来自Visual Studio 2017安装程序。你们有做这个的样品吗2:此解决方案似乎已完成:如何在registry.dat文件中添加内容?那么,当安装appx时,我可以添加一些自定义操作来与这个registry.dat交互吗?有样品吗3:从VB6到C#组装是否可能?(您的示例是从VB6到C++)您有任何示例吗?:)谢谢!选项1相当简单,并且是适合您情况的最佳路径:您只需使用两行代码创建一个.bat文件——第一行代码调用您现有的安装程序,第二行代码注册COM组件。然后将DAC指向.bat(而不是指向安装程序)。顺便说一句,关于选项2:您可以将registry.dat文件加载到regedit.exe中,以便查看和编辑其内容。Thx,我们最终决定将安装过程迁移到Visual Studio 2017安装程序。顺便说一下,如果你有选项3的指针,我仍然感兴趣!如果您想在这里使用C#,那么最好使用COM互操作。但是,如果你的C汇编程序只是一个调用UWP API的薄层,那么在我的例子中C++路径会更轻/直(IMO)。