Регистрация Свободный COM Interop: приложению не удалось запуститься, потому что бок о бок конфигурация является неправильной

Фон. У меня есть блок Обертки COM под названием ComWrapper.dll, записанный в C# и приложении Visual Basic 6 под названием Project1.exe. Я добавил файл Project1.exe.manifest (содержание которого показывают ниже), и я получаю ошибку, которая говорит, что "приложению не удалось запуститься, потому что бок о бок конфигурация является неправильной. Вот моя конфигурация.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32"
                    name="Project1.exe"
                    version="1.0.0.0"
                    processorArchitecture="x86" />
  <dependency>
    <dependentAssembly>
      <assemblyIdentity name="ComWrapper" version="1.0.0.0" processorArchitecture="msil"></assemblyIdentity>
      <clrClass clsid="{3ac3d04e-1f83-4a27-b516-95e38126685d}" progid="MyComObjectNamespace.myclass" threadingModel="Both" name="MyComObjectNamespace.myclass" runtimeVersion=""></clrClass>
      <file name="ComWrapper.dll" hashalg="SHA1"></file>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity name="mscorlib" version="2.0.0.0" publicKeyToken="b77a5c561934e089"></assemblyIdentity>
        </dependentAssembly>
      </dependency>
    </dependentAssembly>
  </dependency>
</assembly>

Любая справка очень ценилась бы.

5
задан JohnFx 16 February 2012 в 21:42
поделиться

1 ответ

Вам нужно использовать sxstrace.exe, чтобы определить фактическую причину ошибки, как говорит вам (полный) текст сообщения об ошибке. Вот что не так:

INFO: Parsing Manifest File

C:\Temp\sxs\Project1.exe.Manifest.

INFO: Manifest Definition Identity is Project1.exe,processorArchitecture="x86",type="win32",version="1.0.0.0".

INFO: Ссылка: ComWrapper,processorArchitecture="msil",version="1.0.0.0"

ERROR: Строка 9: Элемент clrClass появляется как дочерний элемент элемента urn:schemas-microsoft-com:asm.v1^dependentAssembly, который не поддерживается данной версией Windows.

Проблема в том, что элемент dependentAssembly не должен предоставлять полное описание сборки - он используется только для указания ссылки. Вы должны предоставить отдельный файл манифеста компонента для этой сборки, который затем описывает экспортируемые COM-классы через clrClass. Более подробно это описано в этой статье MSDN.

6
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: