none
C# 编译的 dll 如何注册(不使用regasm) RRS feed

  • 常规讨论

  • 我用C#写了一个类库,然后使用vs2005 做安装部署,(默认的)添加主输出,生成安装程序。这个安装程序安装时 无法把主输出的*.dll注册到Net中,必须使用Regasm.exe 把这个dll注册一下。
    我尝试在生成安装程序前 修改主输出*.dll的注册属性  为 vsdrpCOMSelfReg  ,这样无法生成安装程序
    vs提示: 程序集中该dll不能使自行注册的。请问原因及如何解决?
    ------
    我在程序集里已经添加了组件 install.cs  并且有如下代码希望能实现注册
    //
      public override void Install(System.Collections.IDictionary stateSaver)
            {
                base.Install(stateSaver);
                RegistrationServices regasm1 = new RegistrationServices();
                regasm1.RegisterAssembly(base.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase);
            }
    //
    仍是不可以,求助……
    由于 regasm.exe 在.Net的安装目录下,所以用 process调用 困难啊,也不知道.Net的安装路径啊
    2009年3月27日 7:22

全部回复

  • 还有就是:
        使用regasm 时候  可以只注册 dll  也可把 tlb一并注册了,只注册dll 就可以用了,还有必要注册tlb吗?
    帮助文档里说了“注册程序集中的类型和注册类型库是截然不同的活动”,谁能解释一下这句话?

    2009年3月27日 7:41