У меня есть приложение ASP Classic, которое ссылается на некоторые VB6 COM-ОБЪЕКТЫ. Один из этих COM-ОБЪЕКТОВ VB6 ссылается на другую .Net DLL третьей стороны.
Сторонняя библиотека .Net DLL должна быть зарегистрирована на компьютере под управлением Windows Server 2008 R2 x64.
Я нашел сценарии для регистрации DLL в GAC без GACUTIL с использованием powershell (ref: http://weblogs.asp.net/adweigert/archive/2008/10/31/powershell-install-gac-gacutil-for-powershell.aspx)
Теперь мне нужно зарегистрировать сборку. Я использовал GACUTIL и REGASM на своей локальной машине для разработки (x86) без заминки. Но когда я пытаюсь получить DLL на тестовом сервере, у меня возникают проблемы.
Первый выпуск : НЕТ GACUTIL
На сервере нет GACUTIL, который я использовал, используя скрипт, упомянутый выше. Я понимаю, что его можно установить с помощью SDK, но я не хочу "загрязнять" окружающую среду.
Второй выпуск : REGASM НЕ МОЖЕТ НАЙТИ В СБОРКЕ
REGASM в 32-битной .Net Framework не находит DLL. Сообщение об ошибке: «RegAsm: ошибка RA0000: невозможно найти входную сборку« C: \ Windows \ System32 \ xxxxx.dll »или одну из ее зависимостей».
Итак, я использовал 64-битный вариант RegAsm, и это сработало.
Я обеспокоен тем, что это ложный положительный результат в том, что ASP classic не находит сборку, так как она не зарегистрирована 32-битным RegAsm.
Я запускаю свое приложение, в журнале событий появляются ошибки: «Компонент ActiveX не может создать объект». Вообще говоря, это происходит потому, что он не может найти объект для создания, что означает, что DLL-библиотека, в которой находится объект, зарегистрирована неправильно.
Итак, сейчас я пытаюсь выяснить, существует ли альтернативный метод REGASM, использующий powershell, который регистрирует сборку в 32-битной области.
Кто-нибудь знает, возможно ли это и каков будет сценарий, чтобы сделать это правильно?