创建.NET COM组件

创建.NET COM组件,.net,com,asp-classic,.net,Com,Asp Classic,我需要创建一个可以通过的Server.CreateObject方法访问的类,该类公开三个属性(int-Width、int-Height、bool-Loaded)和三个方法(void-Load(string-locatoin)、void-Resize(int-Width、int-Height)和void-Save(string-location))。 到目前为止,我所有的尝试都没有成功。构建对象非常简单-注册它和管理COM依赖关系可能非常棘手 您的.NET项目应该是一个类库,并且您的类可以是一个直

我需要创建一个可以通过的Server.CreateObject方法访问的类,该类公开三个属性(int-Width、int-Height、bool-Loaded)和三个方法(void-Load(string-locatoin)、void-Resize(int-Width、int-Height)和void-Save(string-location))。
到目前为止,我所有的尝试都没有成功。

构建对象非常简单-注册它和管理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 */ }
  }
}
右键单击项目,选择属性、应用程序,然后单击程序集信息。。。并确保在“部件信息”对话框底部选择了“使部件COM可见”

构建您的项目-您应该在\bin\debug\文件夹中找到MyCompany.MyProject.Com.dll

构建一个简单的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>
现在刷新您的网页,您应该会在输出中看到宽度+高度=60


这些指令假设您没有运行64位的任何东西;如果你是,它会变得更复杂。(您需要以64位运行所有内容-编译64位项目并使用64位版本的regasm.exe为64位COM注册它,由运行64位脚本主机的IIS访问)-或者手动将所有内容强制为32位。

构建对象非常简单-注册它和管理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 */ }
  }
}
右键单击项目,选择属性、应用程序,然后单击程序集信息。。。并确保在“部件信息”对话框底部选择了“使部件COM可见”

构建您的项目-您应该在\bin\debug\文件夹中找到MyCompany.MyProject.Com.dll

构建一个简单的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>
现在刷新您的网页,您应该会在输出中看到宽度+高度=60


这些指令假设您没有运行64位的任何东西;如果你是,它会变得更复杂。(您需要以64位运行所有内容-编译一个64位项目,并使用64位版本的regasm.exe为64位COM注册它,由运行64位脚本主机的IIS访问)-或者手动将所有内容强制为32位。

问题可能是我的操作系统是x64。我有没有办法让它在全球范围内运行?我的意思是,一定有一些程序或库需要这种功能?你说的“全局”是什么意思?你想创建一个纯64位COM对象,还是一个x86/x64双目标COM对象,或者只是将64位系统配置为运行和托管32位COM DLL?我想创建一个x86/x64双目标COM对象,该对象将在包含依赖项的任何计算机上工作。COM对象将由web服务器使用,我不能强制任何人在x64或x86中使用它,它需要同时适用于这两种情况。问题可能是我的操作系统是x64。我有没有办法让它在全球范围内运行?我的意思是,一定有一些程序或库需要这种功能?你说的“全局”是什么意思?你想创建一个纯64位COM对象,还是一个x86/x64双目标COM对象,或者只是将64位系统配置为运行和托管32位COM DLL?我想创建一个x86/x64双目标COM对象,该对象将在包含依赖项的任何计算机上工作。COM对象将由web服务器使用,我不能强迫任何人在x64或x86中使用它,它需要同时适用于这两者。