【发布时间】:2011-07-13 19:59:45
【问题描述】:
我一直在使用 vb6 互操作工具包来允许我在旧版 vb6 应用程序中使用 vb.Net 用户控件。我想开始使用 .Net 4 中的一些功能,但是当我将 .Net usercontrol 项目上的目标框架从“.Net Framework 2”更改为“.Net Framework 4”时,它构建正常,并且在我的开发中运行正常框,但是当我将应用程序部署到测试盒时,应用程序在启动时失败,并出现“内存不足”错误。
这里有一些关于我如何进行实验的更多细节......
使用安装了 Interop 2.1 Toolkit 的 VS 2010,我创建了一个“VB6 Interop Usercontrol”项目。我向默认的 InteropUsercontrol.vb 类添加了一个按钮(这样控件将在主机应用程序中可见)。我构建了dll。我创建了一个 vb6 项目 (Project1) 并从 vb6 项目/组件/控件对话框中引用“InteropUsercontrolLibrary1”组件。我将控件添加到窗体并编译 Project1.exe。然后我部署 Project1.exe、InteropUsercontrolLibrary1.dll 和 Project1.exe.manifest(见下文)来测试安装了 Framework 4.0 的机器(XP 和 Windows7)。只有这三个文件,应用程序运行良好。如果我重复相同的过程但将目标框架更改为 4.0,我会收到 Out of Memory 错误。
这是我的应用程序清单:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Test"
version="1.0.0.0"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="InteropUserControlLibrary1"
version="1.0.0.0"
/>
</dependentAssembly>
</dependency>
</assembly>
组件清单由 Interop Toolkit 预构建事件自动构建并嵌入到 dll 中。它适用于 2.0,所以我希望它也适用于 4.0。
无论我做什么,我都无法让用 .net 4.0 编写的用户控件在 vb6 应用程序中运行。任何建议将不胜感激。
乔尔
【问题讨论】:
标签: visual-studio-2010 vb6 com-interop