У меня есть некоторый код .NET, который я использую из кода VB6. Я всегда разрабатывал это на компьютере с XP, создавая файл VB6.exe.manifest, в котором перечислены зависимые сборки .NET.
Например, скажем, что мои 2 .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, я получаю
"Компонент ActiveX не может быть создан
Объект ".
На XP это удается. Если я намеренно ошибаюсь в написании зависимой сборки в VB6.EXE.manifest - на XP я получаю
"Это приложение не удалось запустить
потому что конфигурация приложения
это неверно. Переустановка
Приложение может решить эту проблему. "
На WIN7 VB6 просто загружается. Как будто он игнорирует манифест на WIN7, поэтому я не могу загрузить свой объект .NET с помощью методов REG FREE на WIN7. Если я regasm
DLL, все работает.
Любые идеи о том, как заставить VB6 работать с reg free com на WIN7 (64 BIT)?