Используя VS 2008 (vb.net), мне нужно создать объект, который я могу использовать в классическом ASP с CreateObject

Я новичок в VB.net. Я писал эти объекты на VB6 раньше. Я просто потерялся в VB.net, но (пинается и кричит) мне нужно научиться это делать. Я гуглил часами, сделав лишь незначительные шаги вперед. Может ли кто-нибудь опубликовать ссылку, объясняющую, как это сделать, от начала до конца?

Мне удалось написать объект класса. Я не могу сказать, как его зарегистрировать и откуда берутся name1 и name2 в CreateObject ("Name1.Name2").

Regsrv32 работать не будет. Он говорит «Точка входа не найден» и не регистрирует его. Также не могу закинуть в директорию Assemblies. Я читал что-то о команде regasm, которую кто-то использует, но, похоже, я тоже не могу заставить ее работать.

Спасибо заранее за любую помощь.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 940
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно перейти в свойства библиотеки классов и выбрать опцию «Зарегистрироваться для COM-взаимодействия». Это сделает вашу сборку доступной для COM.

Вы хотите создать то, что называется Вызываемая оболочка COM (иначе CCW) для вашего .NET-компонента. В основном это влечет за собой настройку некоторых интерфейсов COM с некоторыми идентификаторами GUID и включение параметра «Регистрация для взаимодействия с COM» в свойствах проекта (как упоминалось) или использование regasm.exe.

Ответ принят как подходящий

Я предполагаю, что вы пытаетесь написать не COM-DLL, а скорее законченный проект, который вызывает различные подсборки, такие как VB6 EXE, вызывает ActiveX DLL. Если бы вы могли быть более конкретными в том, что вы пытаетесь сделать, это помогло бы мне лучше.

Несколько замечаний о сравнении VB.NET и VB6.

1) Для .NET только проектов регистрации нет. Если EXE или DLL ссылается на другую .NET DLL, единственное требование - это наличие DLL в родительском каталоге.

2) Вы можете выполнить регистрацию в стиле COM для приложений .NET, только зарегистрировав сборку .NET в GAC. Однако для этого есть несколько требований. Поищите в .NET GAC, и вы узнаете, как это сделать.

3) Вы можете настроить сборку .NET для использования COM, и в этом случае она будет работать по правилам COM, включая регистрацию в regsvr.

Вы найдете для проекта только для .NET, что №2 или №3 встречаются только в редких случаях. №1 будет применяться для 90% ваших сборок DLL. Это зависит от вашего проекта.

Обычно CreateObject позволяет использовать подключаемые модули или устанавливаемые библиотеки. .NET обрабатывает это через Reflection API. С помощью API отражения вы можете заглянуть в каталог, пройтись по каждой .NET DLL и посмотреть, что они собой представляют, и создать объекты из того, что вы найдете. Найдите .NET Reflection, чтобы прочитать об этом.

Если ваш проект является только .NET, я рекомендую вам создать сборку, на которую ссылаются как основная сборка, так и отдельная подсборка, определяющая интерфейсы создаваемых вами объектов. Это, когда вы используете API отражения и определяете тип объекта, вы можете назначить его переменной этого интерфейса и нормально кодировать с помощью intellisense и других вспомогательных средств.

если у вас есть старые элементы управления ActiveX COM или библиотеки DLL. .NET создаст класс-оболочку, который предоставляет .NET объекты ActiveX. Я бы потратил некоторое время на изучение того, как .NET это делает. Я создаю фиктивный проект и имею ссылку на .NET ActiveX, который мне нужен. Затем я нахожу проекты оболочки и созданную DLL и перемещаю их в центральную область. Вот почему, когда я работаю над последующими проектами с использованием того же материала ActiveX, я знаю, где находятся все обертки.

Вам нужно установить нет в GAC для взаимодействия. Regasm с переключателем кодовой базы позволит вам размещать за пределами GAC.

Mark Brackett 16.11.2008 16:31

Я не говорил о COM-взаимодействии. Но разные способы, которыми .NET может делиться сборками. Вы предполагаете, что спрашивающий говорил о COM. Мой ответ не предполагает, что здесь основное внимание уделяется бесчисленным способам совместного использования сборок .NET.

RS Conley 18.11.2008 22:45

Другие вопросы по теме