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

时间:2012-07-10 09:11:15

标签: c# com vbscript tridion tridion-2011

VB Script没有从工作流程中调用c#方法。我做得对吗?我能够从服务器测试相同的代码。

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

3 个答案:

答案 0 :(得分:3)

过去几天我一直在处理类似的问题。

我毫无疑问是注册问题。

在我的情况下,我使用位于以下位置的regasm注册了程序集:

  • C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

工作流代理是一个32位应用程序,所以我刚刚使用位于以下位置的regasm可执行文件注册了程序集:

  • C:\的Windows \ Microsoft.NET \框架\ v4.0.30319

像魅力一样工作

另外,请确保构建您的dll以使用任何CPU

答案 1 :(得分:2)

这显然是大会注册的问题。您是否“只使用”RegAsm,还是使用了RegAsm / codebase?

无论如何,在您的注册表中搜索“CoreComponentWorkflow.WorkflowHandler”。你应该找到一个带有大GUID的密钥,下面应该有一系列其他的注册表项。其中一个将被称为InProcServer32,在里面你应该找到一些字符串值,包括“汇编”和“代码库”。

如果找到密钥,请仔细检查值是否正确。如果找不到密钥,请尝试使用RegAsm /codebase <path to your assembly>

再次注册程序集

答案 2 :(得分:1)

你的VB看起来很好。确保你: 1)注册您的程序集(使用RegAsm)或将其放在GAC中。 2)将代码中的ProgId设置为“CoreComponentWorkflow.WorkflowHandler”。以下是有关ProgIds的更多信息:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.progidattribute(v=vs.90).aspx