【问题标题】:Simplified way of installing a com dll created in C# - Need expert suggestion安装在 C# 中创建的 com dll 的简化方法 - 需要专家建议
【发布时间】:2011-09-08 00:23:20
【问题描述】:

要求 从经典 ASP 调用 C# 函数。

解决方案

经过数小时的研究,我能够从经典的 asp 调用 c# 函数。我觉得我已经做了很多步骤(如下)。不确定这是否是正确的方法。寻求专家建议。

开发机器:VS 2010 生产服务器:安装了 Framework 4 的 Windows 2008

在 C#(开发机器)中创建 com dll 的步骤

  1. 创建类库项目
  2. 粘贴以下代码

    使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Text; 使用 System.Runtime.InteropServices;

    命名空间cominter { [指南(“EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F”)] 公共接口 ComClass1Interface { 字符串测试();

    }
    
    
    
    [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
        ClassInterface(ClassInterfaceType.None)]
    [ComVisibleAttribute(true)]
    public class ComClass1 : ComClass1Interface
    {
        public string test()
        {
            return "vivek";
        }
    
    }
    

    }

  3. 在属性->构建中,勾选注册COM互操作

  4. 在属性-> 签名中,勾选签署程序集。创建了一个密钥文件
  5. 构建解决方案
  6. 使用 regasm /regfile 创建 regfile

Server 2008(生产)中安装 dll 的步骤

  1. 将 gacutil.exe 和 gacutil.exe.config 从开发机器 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\ 复制到服务器 C:\Windows \Microsoft.NET\Framework\v4.0.30319

  2. 运行开发机生成的注册表文件

有没有更好的方法?我也不确定是否需要上述所有步骤。任何专家的建议都会很棒。

问题

  1. 类名和接口名上面的 GUID 有什么用。真的需要吗?我刚刚从msdn复制了这个。如果需要,我应该创建自己的 id 还是留下它。是否有创建此 guid 的工具

  2. 是必需的接口。不带接口也能用吗?

  3. 需要创建密钥。当我在生产中安装这个 dll 时,我没有复制密钥文件。

  4. 要复制哪些文件。我复制了 dll 和 tlb 文件并运行了 gacutil

  5. 有没有更好的方法来安装这个 com dll

  6. 我运行了注册表脚本。这是必需的吗?

【问题讨论】:

    标签: asp.net windows-server-2008


    【解决方案1】:

    我不是这个主题的专家,但我做过几次类似的事情。在我的情况下,它是 VB6 应用程序使用的 .Net 程序集,而不是网站。以下是我对您的问题的经验。

    1. 我从未在我的项目中使用过 GUID,所以它不是必需的。 (.NET SDK 中有一个工具可以创建 GUID)
    2. 据我所知,需要一个接口。
    3. 必须对程序集进行签名,如果未签名,则无法安装/注册 dll。您无需复制密钥文件,它仅在编译项目时使用。
    4. 您只需要您的 dll 和 tlb 文件。如果您要引用正在使用的任何其他库,则也需要它们。
    5. 在我的项目中,我使用了 Visual Studio 的安装项目来注册我的 VB6 应用程序和我的 .Net 库,在分发应用程序时对我来说效果很好。
    6. 据我所知,这不是必需的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2011-10-11
      相关资源
      最近更新 更多