Использование System.Collections.ArrayList из .NET в VB6 - PullRequest
0 голосов
/ 05 января 2019

На моей машине разработки и в среде заказчика у нас есть двоичный файл Visual Basic 6, который делает это:

dim x as object
set x = CreateObject("System.Collections.ArrayList")

... он работает как положено (мы можем добавлять к нему элементы, получать количество и т. Д.).

Недавно мы установили новый компьютер с Windows Server 2012 R2 (на котором установлена ​​ОС .NET 4.X). Когда я пытаюсь запустить тот же двоичный файл VB6 на этом компьютере, строка выше выдает ошибку:

"Ошибка автоматизации"

Если я добавлю ссылку на C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib.tlb, она все равно будет работать на моей локальной машине для разработки

dim x as New ArrayList
x.Add("test")
x.Count ' 1

... но все равно выдается ошибка автоматизации на сервере 2012.

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

Почему эта разница между двумя компьютерами / средами?

1 Ответ

0 голосов
/ 07 января 2019

Похоже, что .NET 4.X был установлен с Windows. ИТ-специалист использовал для установки .NET 2.x и 3.x интерфейс добавления и удаления функций Windows. Ранее я пытался установить их с помощью веб-установщика Microsoft, но это не удалось. С установленными .NET 2.x и 3.X исполняемый файл VB6 теперь корректно создает экземпляр библиотеки System.Collections.ArrayList и работает без ошибок. Я подозреваю, что это означает, что .NET 4.x не предоставляет интерфейс COM.

...