Reg Free Com с VB6 в Windows 7

У меня есть код .NET, который я использую из кода VB6. Я всегда разрабатывал это на машине XP, создавая файл VB6.exe.manifest, в котором перечислены зависимые сборки .NET.

Например, у меня две сборки .NET: Some.Assembly.A.dll и Some.Assembly.B.dll, вот как выглядит VB6.EXE.manifest (ниже я использую версию = 1.1.0.0, потому что - это версия, которую я установил для .NET AssemblyVersion в AssemblyInfo.cs):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
   manifestVersion="1.0">
  <assemblyIdentity
              type = "win32"
              name = "client"
              version = "1.1.0.0" />
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
                  type="win32"
                  name="Some.Assembly.A"
                  version="1.1.0.0" />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
                  type="win32"
                  name="Some.Assembly.B"
                  version="1.1.0.0" />
    </dependentAssembly>
  </dependency>
</assembly>

Затем, наряду с библиотеками DLL в том же каталоге, у меня есть сборки и их собственные файлы манифеста. Вот пример «Some.Assembly.A.dll.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="Some.Assembly.A"
      version="1.1.0.0" />
  <clrClass
      clsid="{F1234567-1234-1234-1234-123456789012}"
      progid="Some.Assembly.A.Class1"
      threadingModel="Both"
      name="Some.Assembly.A.Class1" >
  </clrClass>
  <file name = "Some.Assembly.A.dll" />
</assembly>

Я также запускаю tlbexp для ссылочных библиотек DLL для создания файлов TLB, и это то, на что я ссылаюсь в моем файле проекта VB6.

Я хочу перейти на машину с Windows 7 64 BIT. Используя те же методы, когда я нажимаю код VB6, который создает экземпляр объекта .NET на машине WIN7, я получаю

" Object. "

В XP это успешно. Если я намеренно неправильно написала зависимую сборку в VB6.EXE.manifest - в XP я получаю

" Это приложение не запустилось потому что конфигурация приложения это неверно. Переустановка приложение может решить эту проблему. "

В WIN7 VB6 просто загружается. Это похоже на то, что он игнорирует манифест в WIN7, поэтому я не могу загрузить свой .NET-объект с помощью методов REG FREE в WIN7. Если я regasm DLL, все работает.
Есть идеи, как заставить VB6 работать с reg free com на WIN7 (64 бит)?

16
задан Jeremy Thompson 3 September 2016 в 15:31
поделиться