2012-09-11 71 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

相關問題