你可以在GAC中注册你的类库,首先用sn.exe生成一个key文件,然后用这个文件签名你的dll,
在gacutil.exe注册你的组件到GAC中,如果要调要的,只要添加.net引用就行了事先不知道这个dll的名称,只是能得到一个dll名称的字符串,这个名称的字符串就是dll的名称呀

解决方案 »

  1.   

    由于是接触c#才几天,所以能不能说一下详细的步骤:比如我的dll名称为Serve.dll,namespace也是Serve,注册后客户端如何动态调用?事先不知道这个dll的名称,只是能得到一个dll名称的字符串,这个名称的字符串就是dll的名称呀-------->>>>>是的,或者我可以做一个对照表
      

  2.   

    如果你注册成功后,你在vs.net中添加引用--〉.net引用,就会看到你的server.dll在列表中
    选中就可以了
    然后,如果你知道server.dll中类和方法就可以调用了
      

  3.   

    谢谢你的回答,但是即使我注册成功了以后,在客户端如何能够动态加载呢?用Assembly 类吗?
    用CreateInstance()吗?希望能够解答!
      

  4.   

    注册后好像是出现在引用-->com里面而不是.net里面的,而且是Server而没有后缀,这样应该也是对的吧?
      

  5.   

    另外我在引用-->com中选择Server的时候,报错,说是未能添加对"Server"的引用,将类型库转换为.net程序集失败,类型库Server是从CLR程序集导出的,无法将其作为CLR程序集重新导入.这个是怎么回事,是不是我还没有注册好啊,我注册没有按照你说的那些步骤,我就是普通的dll在属性里面将配置属性--生成--注册COM interop属性设成TRUE,另外在.net的命令行中将asmreg pathname\Server.dll 键入提示注册成功,这样的注册是不是不够完整?
      

  6.   

    1.不在项目中引用就不能用
    2.在DOTNET的提示符下键入REGASM [你的DLL路径].
    3.注册成功可以在COM中引用它.
      

  7.   

    想要动态调用,可以通过Reflection 实现
    通过 System.Reflection.Assembly.LoadFrom 可以得到一个 System.Reflection.Assembly的object A ,再通过该GetType() ,可以得到某个Class 的 type ,然后调用A的CreateInstance方法创建对象
    string DllName = "x.dll";
    string ClassName = "MySample.Test";System.Reflection.Assembly dllFile
    try
    {
      dllFile = System.Reflection.Assembly.LoadFrom(DllName);
    }
    catch(System.IO.FileNotFoundException ec)
    {
        return false;
    }
    System.Type theType = dllFile.GetType(ClassName);
    if(theType != null)
    {
    System.Object obj = dllFile.CreateInstance(theType.FullName);
    }
     else
    {
         return false;
    }
      

  8.   

    不明白你想要干什么了,你是想unmanagement 的 code 调用.net 的组件,还是在.net 环境中动态调用dll,还是?
      

  9.   

    谢谢 jasmine(Yaya),你非常cool,提出的解决方案也是很cool
    还有最后一个问题就是,我已经得到了Server的实例,但是我要调用它下面的一个Test方法的时候,编译提示object并不包含对"Test"的定义,这个怎么解决?