我们正在开发一个用于遗留 VB6 应用程序的 COM 感知 .Net 程序集,并在通过 SDKInstanceManager.Instance.OpenDatabase 打开连接时不断收到上述消息。当我们从另一个 .Net 程序集内部调用我们的方法时,这不会发生,对 open 的调用工作正常。下面是我们使用的类:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComSourceInterfaces(typeof(IMyClass_ThreadedEvents))]
[Guid("A8F518D8-6446-11E2-BC88-724F6188709B")]
public class MyClass : IDisposable
{
public string OpenConnection()
{
string retVal = string.Empty;
try
{
retVal = "OpenConnection|@@|*NOERROR*|@@|*ALLOK*|@@||@@|";
string conInstallFolder = @"C:\Users\Public\Documents\Simply Accounting\2017\Samdata\Pro";
string conCompany = "Universl";
string conUserName = "sysadmin";
string conPassword = "12345";
string conVersName = "Sage 50 Accounts";
string conVersNumber = "2017";
string conVersCountry = "Canada";
bool allok = SDKInstanceManager.Instance.OpenDatabase(conInstallFolder + @"\" + conCompany + ".SAI", conUserName, conPassword, true,
conVersName + " " + conVersNumber + " " + conVersCountry, "SASDK", 1);
}
catch (Exception ex)
{
retVal = "OpenConnection|@@|*ERROR*|@@|" + ex.Message;
}
return retVal;
}
}
.Net 程序集仅引用 Sage_SA.SDK、Sage_SA.Domain 和 Sage_SA.Domain.Utility 并以 x86 为目标。没有 Sage 或应用程序的实例正在访问公司文件。
有什么我们想念的吗?我们被困住了,想解决这个问题。非常感谢。
请注意,这也已发布在 Sage Canada 社区论坛上。