我为本地计算机上的工作流创建了一个类库并构建它。我将完整的解决方案移动到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。
答案 0 :(得分:65)
您确定自己的路径中有RegAsm
,因为您只是在没有指定完整路径的情况下通过exe名称调用它吗?您必须调用正确版本的RegAsm才能使用它,即32位或64位版本的.NET 4。
尝试指定完整路径:
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
另外,我注意到在程序集的路径中,您有一些/
个字符而不是\
。确保你输入正确的路径。
答案 1 :(得分:0)
我将在解决方案中扩展接受的答案。
首先,我遇到了“ 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。但是,如果您必须为其中之一进行这项工作,那么您将面临的问题要比这大。 :-)