Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uwp 从Visual Basic 6.0调用COM互操作.Net程序集_Uwp_Desktop Bridge - Fatal编程技术网

Uwp 从Visual Basic 6.0调用COM互操作.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

我们有一个在VisualBasic6.0上运行的项目 我们尝试在桌面网桥中迁移。 当我们使用DAC命令提示符时,一切正常。 转换后的应用程序按原样转换,在任何测试计算机上都可以正常工作

我们甚至设法添加了一个COM Interop.NET程序集,以便能够使用UWP功能(如toasts)

一切都可以在任何开发机器上正常工作,但不能在测试机器上正常工作。 嗯,从Visual basic加载COM Interop.Net程序集似乎不起作用

与测试机器和开发机器的主要区别:

  • 在开发计算机上,Visual Studio 2017正在将dll注册为COM互操作(使用
    regasm
    ,在引擎盖下)
  • 在测试机上,我们首先制作一个.msi安装文件(使用Visual Studio 6安装程序,是旧的interdev样式IDE;),然后将DAC命令行应用于这个新的.msi
  • 因此,我们似乎必须在目标测试机器上手动注册此程序集,使用
    regasm
    。。。因为Visual Studio 6安装程序不知道如何注册互操作程序集(使用
    regasm

    我们如何应对这种情况

    作为细节,我们有一些简单明了的东西:

    • MyApplication.exe(vb6)
    • MyWrappers.dll(和.tlb)(.net C#程序集标记为COM互操作,并引用UWP SDK以能够启动通知)
    再一次,“安装”没有崩溃。仅调用COM互操作程序集以启动toast通知

    事实上,如果DAC没有为COM互操作打包这个程序集,那么这个错误看起来很明显,而且是有意义的

    有什么想法吗?:)


    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)。