【发布时间】:2021-12-03 16:04:45
【问题描述】:
早安,
简介:
我的问题是关于 C# dll 和 VB6。它指的是为什么我看不到 C# 属性的值,但我可以在我的 VB6 项目中看到这些属性的相同值。
说明:
我使用 VS19 (Visual Studio 2019) 从 Windows 窗体应用程序创建了一个 dll 文件和一个 tlb 文件。
我进入属性 -> 应用程序,并将“输出类型”从“Windows 应用程序”更改为“类库”。之后,我点击了“Assembly information”,并在我点击时出现的窗口底部检查了COM可见声音。
之后我进入“编译”并选中底部的“互操作 COM”复选框。
最后,我编译了解决方案并将这两个文件移动到使用 Virtual Box 创建的虚拟机(Win XP 32 位 SP3)中。那里有我用 VB6 开发的应用程序。
在我的 VB6 项目中,我可以设置和使用 .NET dll 的属性和方法,并且可以看到值(EOL 和 EOL 是我的 .NET 类)。
像这样:
Vin_car_11 = Mid$(frmInput.txtVinCode.Text, 11, 1)
Select Case Vin_car_11
Case "2"
EOL.XMLPrdWsUrl = "URL" 'Brescia
Case "5"
EOL.XMLPrdWsUrl = "URL" 'Suzzara
Case "9"
EOL.XMLPrdWsUrl = "URL" 'Bolzano
End Select
EOL.Vin = frmInput.txtVinCode.Text
EOL.Van = frmInput.txtVanCode.Text
returnCode = EOLs.GetXMLFile()
问题出在这里:
为什么我在 VB6 中看到“EOL.vin”的值,但在 C# 中看不到相同的值?
这里是我的 EOL 类的代码:
public class cEOL
{
private string vin;
public string Vin
{
get
{
return this.vin;
}
set
{
this.vin = value;
}
}
}
这里是我的 EOLs 类的代码:
public class cEOLs
{
#region DICHIARAZIONI
Vehicle.AuthHeader auth;
cEOL EOL;
string result;
string errorDescr;
#endregion
#region COSTRUTTORE
public cEOLs()
{
EOL = new cEOL();
auth = new Vehicle.AuthHeader();
result = "";
errorDescr = "";
}
#endregion
#region METODO
public int GetXMLFile()
{
//chiave di autenticazione server rilasciato da EHSA (IVECO)
auth.AuthKey = "Key";
var client = new Vehicle.EOLClientsAPI4EXT { Url = EOL.XMLPrdWsUrl };
EOL.ReturnCode = client.GetProductionXML(EOL.Vin, EOL.Van, out result, out errorDescr);
EOL.Result = result;
EOL.ErrorDescr = errorDescr;
return EOL.ReturnCode;
}
#endregion
提前致谢!我希望我的解释很清楚!
【问题讨论】:
-
你在哪里看到
EOL.vin在VB6中的值?调试器?我实际上希望调试器也能显示私有字段。 -
是的,当我调试项目时,我看到了 VB6 项目中的值。在同一时间,我在 C# dll 中看不到相同的值。
-
您是否在要在 VB6 中使用的 C# 类上设置了 [ClassInterface]、[Guid] 等属性?
-
嘿,很抱歉回答迟了。我解决了这个问题。我在底部的答案框中直接发布了我使用的解决方案。非常感谢!
标签: c# dll vb6 vb6-migration