C# 从VB脚本调用C函数不工作

C# 从VB脚本调用C函数不工作,c#,com,vbscript,tridion,tridion-2011,C#,Com,Vbscript,Tridion,Tridion 2011,VB脚本未从工作流中调用c方法。我做得对吗?我能够从服务器上测试相同的代码 Option Explicit Dim testwfhandler Set testwfhandler= CreateObject("CoreComponentWorkflow.WorkflowHandler") If Not testwfhandler Is Nothing Then Call testwfhandler.test() End If Set testwfhandler= Nothing

VB脚本未从工作流中调用c方法。我做得对吗?我能够从服务器上测试相同的代码

Option Explicit
Dim testwfhandler
Set testwfhandler= CreateObject("CoreComponentWorkflow.WorkflowHandler")
If Not testwfhandler Is Nothing Then    
Call testwfhandler.test()    
End If
Set testwfhandler= Nothing

你的VB看起来很好。确保您: 1使用RegAsm注册您的程序集或将其放入GAC。
2将代码中的ProgId设置为CoreComponentWorkflow.WorkflowHandler。以下是有关ProgID的更多信息:

这显然是程序集注册的问题。您是刚刚使用了RegAsm,还是使用了RegAsm/codebase

无论如何,请在注册表中搜索CoreComponentWorkflow.WorkflowHandler。您应该找到一个具有大GUID的注册表项,并且下面应该有一系列其他注册表项。其中一个将被称为InProcServer32,您应该在其中找到一些字符串值,包括Assembly和Codebase


如果找到键,请仔细检查值是否正确。如果找不到密钥,请尝试使用RegAsm/codebase重新注册程序集。过去几天我一直在处理类似问题

毫无疑问,我的注册有问题

就我而言,我使用位于以下位置的regasm注册了大会:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319 workflow agent是一个32位的应用程序,因此我刚刚使用位于以下位置的regasm可执行文件注册了程序集:

C:\Windows\Microsoft.NET\Framework\v4.0.30319 工作起来很有魅力


另外,请确保您构建的dll可以与任何CPU一起工作

我确定,我已经使用RegAsm.exe注册了我已经测试过在服务器中使用vb脚本代码创建com对象,它工作正常,我也使用了te ProgId,并将comvisible设置为True。当我执行.vbs文件时,abov代码在服务器上正常工作,但在工作流脚本编辑器中不工作。请检查事件查看器并将错误消息粘贴到此处。您是指CME中“管理”选项卡上的“打开事件日志”吗?我实际上指的是Tridion服务器事件查看器中的Tridion日志执行工作流脚本时出错。脚本引擎返回以下信息:源:行=3列=0编号=429源=Microsoft VBScript运行时错误描述=ActiveX组件无法创建对象:“CoreComponentWorkflow.WorkflowHandler”HelpContext=0原因:Microsoft VBScript运行时错误和描述:ActiveX组件无法创建对象:“CoreComponentWorkflow.WorkflowHandler”来源:LogScriptErrorThank Nuno,我已注册RegAsm/codebase。我可以在注册表中找到条目。在InProcServer32下,1.Assembly=CoreComponentWorkflow,Version=1.0.0.0,Culture=neutral,PublicKeyToken=21f061a704295678 2。代码基=file:///F:/Workflow-服务器/CoreComponentWorkflow/bin/Debug/CoreComponentWorkflow.DLL 3。Class=CoreComponentWorkflow.WorkflowHandler 4。Runtimeversion=v4.0.30319 5。ThreadingModel=两者。6.Default=mscoree.dll对于所有6个条目,类型为REG_SZ,键名为HKEY_CLASSES_ROOT\CLSID\{37703D4A-7F28-3A36-9E83-03B2BA07E977}这是我的assemblyinfo.cs文件928693b3-74ad-44df-b084-6df7c65c1832中的GUID。我可以在注册处的几个地方找到上述详细信息。HKEY_类_根和HKEY_本地_机器无法创建对象可能是有史以来最常见的错误之一。你有没有试过在构造器中加入一些东西来证明它被调用过?能否连接到工作流服务并尝试调试它?也许你可以尝试写一个文件,以确保你的代码至少被调用?我想用C写文本文件,这也不起作用,似乎C代码不是从VB中调用的。努诺,你能指导我简单地调试一下工作流吗?是否有任何指南/步骤/文档?