2012-09-11 130 views
0

我有一个VB6应用程序,它引用了一个COM可见的.Net应用程序, .Net应用程序是一个包含某些窗体的Windows窗体项目。在COM应用程序中使用Click-Once部署的应用程序(VB6)

VB6应用程序从.Net应用程序调用一个方法来显示一些表单并保存数据。

问题是:我如何使.Net应用程序部署,自动更新使用点击一次,仍然可以从VB6访问? 由于.Net程序集应该在部署后使用(RegAsm.exe)进行注册! 和程序集应该在VB6应用程序exe文件旁边。

下面的代码片段从VB6

Dim a As HISIntegration.HIS 
Set a = New Rims_HISIntegration.HIS 
a.Show 

下面是Net代码:

[Guid("C79963CC-0284-4848-BAED-F24FC19433F9"), ClassInterface(ClassInterfaceType.AutoDual)] 
public class HIS 
{ 
public bool Show() 
    { 
     /// ...... some code. 
     return (frm.ShowDialog() == DialogResult.OK); 
    } 
} 

回答

1

你不会得到.NET程序集 “旁边的VB6应用程序EXE”,除非你部署带有ClickOnce的VB6应用程序。而且您无法直接使用ClickOnce部署VB6应用程序,因为ClickOnce应用程序的入口点必须是.NET EXE。

可以创建一个.NET存根应用程序,只需启动您的VB6应用程序,然后用ClickOnce部署所有文件(存根,VB6,.NET程序集)。这似乎是最干净的解决方案。

+0

实际上VB6应用程序已经存在了,我们通过添加.Net应用程序进行了增强,并且我们需要程序集接近VB6 exe文件,因为某些程序集在运行时加载(使用Castle.Windsor注入) 。 –

+0

那么你不能使用ClickOnce。您无法控制ClickOnce安装文件的位置。它将它们置于混淆的用户配置文件夹中。没有办法绕过它。 – codeConcussion

相关问题