vb6 и vb .net взаимодействуют на Vista 64 против Windows 7 - PullRequest
1 голос
/ 19 февраля 2010

Я написал .net dll, который я могу успешно вызвать с vb6. Развертывание на xp, vista 32 и vista 64 box работало. Это не работает на Windows 7 64 бит. Я не могу запустить regasm.exe /codebase name.dll на компьютере конечного пользователя, поскольку он не является администратором.

В настоящее время мое приложение развернуто в каталоге "c: \ Program Files (x86) \ имя приложения".

Ответы [ 3 ]

2 голосов
/ 19 февраля 2010

Я использую COM без регистрации для доступа к сборкам взаимодействия .NET.

Сначала необходимо создать манифест сборки с помощью mt.exe и дополнительно подписать строгие имена с помощью sn.exe, например,

mt.exe -managedassemblyname:{Your_DLL} -nodependency -out:{Your_DLL}.manifest
mt.exe -manifest {Your_DLL}.manifest -outputresource:%{Your_DLL};1
sn -Ra {Your_DLL} {Your_PFX}

Затем укажите этот манифест сборки в своем манифесте приложения следующим образом:

<dependency>
    <dependentAssembly>
        <assemblyIdentity name="{Your_DLL}" version="1.0.0.0" publicKeyToken="hash_here" processorArchitecture="x86" />
    </dependentAssembly>
</dependency>

, где assemblyIdentity соответствует assemblyIdentity в манифесте сборки {Your_DLL}.

На клиентских компьютерах исполняемый файл VB6 и DLL-библиотека .NET должны находиться в одной папке. Нет необходимости в регазме и регистрации в GAC.

Я использую UMMM для автоматизации процесса создания манифеста, но вы можете сделать это вручную, если это однократная настройка.

1 голос
/ 19 февраля 2010
0 голосов
/ 19 февраля 2010

Для развертывания требуются права администратора. В этом случае предполагается потерпеть неудачу.

...