Как зарегистрировать сборку.NET как COM?
Я создал библиотеку классов для рабочего процесса на локальной машине и собрал ее. Я переместил полное решение на сервер 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 установлены.
1 ответ
Вы уверены, что имеете право 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
Также я заметил, что на пути к вашей сборке у вас были некоторые /
символы вместо \
, Убедитесь, что вы вводите правильный путь.
Я расширю принятый ответ с моим решением.
Во-первых, у меня возникли проблемы с "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. Если вам нужно сделать эту работу для одного из них, у вас есть более серьезные проблемы, чем эта.:-)