日期:2014-05-17  浏览次数:20894 次

C# 如何实现手动注册COM?
我在Lib类库里做了简单一个控件,实现了与HTML页面的交互,在本机上可以运行。我已经用regasm对DLL进行了注册,但我把生成的DLL文件与TLB文件以及HTML文件拷到别的电脑,却不能运行。

AssemblyInfo.cs代码如下(几乎全是系统生成的):


using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;

// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("cypLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Lenovo (Beijing) Limited")]
[assembly: AssemblyProduct("cypLib")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AllowPartiallyTrustedCallers()]


// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(true)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
//[assembly: Guid("34d64ec1-e367-475b-a0f2-8f3f9c07d267")]

// 程序集的版本信息由下面四个值组成:
//
//      主版本
//      次版本 
//      内部版本号
//      修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]



窗体控件库只有一个最简单函数:
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace cypLib
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        //private void button1_Click(object sender, EventArgs e)
        //{
            
        //    label1.Text = textBox1.Text;

        //}

        public void showMessage()
        {
            MessageBox.Show("Hello cyp!");
        } 

    }

}



html中也只有一两句代码 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<object id="UserControl1" classid="clsid:0CF3F87B-60E5-3A18-904D-F670C976579C" 

            width="18