Подтвердить что ты не робот

Как зарегистрировать сборку .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. Установлены.

4b9b3361

Ответ 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

Также я заметил, что на пути к вашей сборке у вас есть несколько символов / вместо \. Убедитесь, что вы ввели правильный путь.

Ответ 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. Если вам нужно сделать эту работу для одного из них, у вас есть более серьезные проблемы, чем эта. :-)

Ответ 3

Это старый пост, но я столкнулся с этой проблемой сегодня, работая со старой программой, перемещающейся на новый сервер. Ответ 65 был правильным об использовании неправильной версии Regasm (на моем ноутбуке 12 версий).

Спасибо Дамиру Арх. Вы сделали это исправление гораздо быстрее.