39

我已经为本地机器上的工作流创建了一个类库并构建它。我将完整的解决方案移至 Tridion 服务器,并尝试使用 regasm.exe 工具在服务器中注册程序集,如下所示:

C:\User\XYZ\Desktop\>RegAsm \codebase F:\Workflow\WorkflowHandler/bin/debug/WorkflowHandler.dll

我收到以下错误:

无法加载“F:\Workflow\WorkflowHandler/bin/debug/WorkflowHandler.dll”,因为它不是有效的 .NET 程序集。

我的服务器详细信息:

已安装64 位、Windows Server 2008 R2 Enterprise 和 .NET Framework 4。

4

2 回答 2

75

你确定你RegAsm的路径是正确的,因为你只通过 exe 名称调用它而不指定完整路径?您必须调用正确版本的 RegAsm 才能使其工作,即 .NET 4 的 32 位或 64 位版本。

尝试指定完整路径:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase F:\Workflow\WorkflowHandler\bin\debug\WorkflowHandler.dll

或者

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /codebase F:\Workflow\WorkflowHandler\bin\debug\WorkflowHandler.dll

我还注意到,在您的程序集的路径中,您有一些/字符而不是\. 确保您输入正确的路径。

于 2012-07-04T04:51:02.013 回答
2

我将用我的解决方案扩展已接受的答案。

首先,我遇到了“AnyCPU”的问题(我必须与 COM 互操作,因此我这样做的原因),所以我将平台限制为 x86 和 x64。我希望它将组件注册为构建的一部分,所以我将其作为构建后事件进行:

if $(PlatformName) == x64 (
    set RegAsm=$(MSBuildFrameworkToolsPath64)regasm.exe
) else (
    set RegAsm=$(MSBuildFrameworkToolsPath)regasm.exe
)

echo Creating TypeLib
"%RegAsm%" /tlb "$(TargetPath)"
echo Registering Component
"%RegAsm%" "$(TargetPath)"

注意:这可能不适用于 ia64。但是,如果您必须为其中之一做这项工作,那么您将遇到比这更大的问题。:-)

于 2019-02-13T01:35:19.717 回答