Интеграция с .NET — как избавиться от regasm.exe?

Использование .NET-объектов в Clarion относительно легко реализуется через COM: сборка регистрируется с помощью regasm.exe и дальше работа с COM по накатанной (через OLE-контрол, интерфейсы либо с помощью сторонних генераторов классов). Однако регистрации  сборки в реестре можно избежать.

Для этого надо скачать утилиту GenMan32.exe отсюда: http://blogs.msdn.com/junfeng/archive/2007/04/14/genman32-a-tool-to-generate-sxs-manifest-for-managed-assembly-for-registration-free-com-net-interop.aspx, сгенерить манифест и добавить его в NET-сборку:

GenMan32.exe mynetdll.dll /outGenMan32.exe mynetdll.dll /add /manifest:mynetdll.dll.manifest

Сгенерить манифест  для Clarion-приложения (в Global properties > App settings > XP/Vista включить флаги «Generate manifest» и «Configure manifest for Vista (asInvoker)» и отключить «Link generated manifest in project», пересобрать app). В полученный файл манифеста appname.exe.manifest добавить секцию (имя сборки и версию надо поменять на реальные):

<dependency>
    <dependentAssembly>
    <assemblyIdentity
        name="mynetdll"
        version="1.0.0.0"
        processorArchitecture="MSIL" />
    </dependentAssembly>
</dependency>

Будьте бдительны — следующая пересборка затрёт Ваши правки, поэтому теперь надо выключить флаг  «Generate manifest». При желании этот манифест можно прилинковать в проект, а не таскать его с собой.Собственно, это и всё — теперь Clarion-приложение увидит NET-сборку «под ногами», а не будет пытаться читать для этого реестр.