У меня есть библиотека классов, которую я написал на C # .net.Я хочу зарегистрировать его в COM на моей машине с 64-битным Windows, чтобы я мог создавать его экземпляры с помощью CreateObject () в сценариях (javascript, vbscript и т. Д.).Поэтому я создал проект установки.Я установил Целевую платформу проекта установки на x64.Целевая платформа проекта библиотеки классов установлена для AnyCPU.Я создал пользовательское действие для установщика, который выполняет регистрацию драйвера вручную, и это выглядит так ...
RegistrationServices regsrv = new RegistrationServices();
if (!regsrv.RegisterAssembly(this.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase))
{
throw new InstallException("Failed To Register driver for COM Interop");
}
Я могу подключить отладчик к этому процессу, когда он запускается, и точно знаю, чтоэта регистрация происходит успешно.
По какой-то причине, когда я пытаюсь создать объект класса с помощью CreateObject (), он выдает мне сообщение об ошибке «Не удалось создать объект с именем ...».Однако, если я запускаю сценарий с помощью cscript.exe в папке SysWOW64 (32-битная папка), объект создается успешно, а остальная часть моего сценария работает нормально.Таким образом, создается впечатление, что класс успешно регистрируется для 32-битной, но не для 64-ИЛИ ИЛИ, что мой проект имеет 32-битную зависимость и 64-битный хост-процесс Cscript не может создать его из-за этой зависимости.Моя библиотека классов ссылается на еще один проект, который я написал, но он также настроен на ЛЮБОЙ ЦП.Так что это должно быть хорошо для 32- и 64-битных процессов.
У кого-нибудь есть какие-либо предложения о том, как мне отслеживать эту 32-битную зависимость?