Создание компонента .NET COM - PullRequest
0 голосов
/ 12 января 2010

Мне нужно создать класс, который будет доступен через метод Server.CreateObject ASP Classic и который предоставляет три свойства (int Width, int Height, bool Loaded) и три метода (void Load (строка locatoin), void Resize (int width, int height) и void Save (строка string)). Все мои попытки пока не увенчались успехом.

1 Ответ

2 голосов
/ 14 января 2010

Создать объект очень просто - зарегистрировать его и управлять зависимостью COM может быть довольно сложно.

Ваш .NET-проект должен быть библиотекой классов, а ваш класс может быть простым C # / .NET CLR-объектом:

namespace MyCompany.MyProject.Com {
  public class MyObject {
      public int Width { get; set; }
      public int Height { get; set; }
      public void Load(string location) { /* implementation here */ }
      public void Resize(int width, int height) { /* implementation here */ }
  }
}

Щелкните правой кнопкой мыши свой проект, выберите «Свойства», «Приложение», нажмите «Информация о сборке» и убедитесь, что в нижней части диалогового окна «Информация о сборке» выбран «Сделать сборку видимой».

Создайте свой проект - в результате вы должны получить MyCompany.MyProject.Com.dll в папке \ bin \ debug \.

Создайте простую веб-страницу ASP, которая выглядит следующим образом:

<% option explicit %>
<%
dim myObject
set myObject = Server.CreateObject("MyCompany.MyProject.Com.MyObject")
myObject.Width = 20
myObject.Height = 40
%>
<html>
<head>COM Interop Demo</head>
<body>
<p>Width + Height = <%= myObject.Width + myObject.Height %></p>
</body>
</html>

Откройте эту страницу на http://localhost/ и убедитесь, что вы получаете сообщение «Server.CreateObject fail» при первой попытке его запустить.

Теперь зарегистрируйте вашу DLL как COM-объект, используя regasm.exe, установленный с платформой .NET:

C:\>C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb MyCompany.MyProject.Com.dll     /codebase

Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.4927
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully
Assembly exported to 'D:\WebDlls\MyCompany.MyProject.Com.tlb', and the type library w
as registered successfully

Теперь обновите вашу веб-страницу, и вы должны увидеть Ширина + Высота = 60 в вашем выводе.

В этих инструкциях предполагается, что вы ничего не запускаете в 64-битной среде; если вы, это становится более сложным. (Вам либо нужно запустить все как 64-битные - скомпилируйте 64-битный проект и используйте 64-битную версию regasm.exe, чтобы зарегистрировать его для 64-битного COM, доступ к которому осуществляется IIS под управлением 64 (или хост-сервер сценариев) - или вручную принудительно принудительно установим все 32-разрядные.

...