保证揭帖!一个关于dll注册和调用的问题 你可以在GAC中注册你的类库,首先用sn.exe生成一个key文件,然后用这个文件签名你的dll,在gacutil.exe注册你的组件到GAC中,如果要调要的,只要添加.net引用就行了事先不知道这个dll的名称,只是能得到一个dll名称的字符串,这个名称的字符串就是dll的名称呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于是接触c#才几天,所以能不能说一下详细的步骤:比如我的dll名称为Serve.dll,namespace也是Serve,注册后客户端如何动态调用?事先不知道这个dll的名称,只是能得到一个dll名称的字符串,这个名称的字符串就是dll的名称呀-------->>>>>是的,或者我可以做一个对照表 如果你注册成功后,你在vs.net中添加引用--〉.net引用,就会看到你的server.dll在列表中选中就可以了然后,如果你知道server.dll中类和方法就可以调用了 谢谢你的回答,但是即使我注册成功了以后,在客户端如何能够动态加载呢?用Assembly 类吗?用CreateInstance()吗?希望能够解答! 注册后好像是出现在引用-->com里面而不是.net里面的,而且是Server而没有后缀,这样应该也是对的吧? 另外我在引用-->com中选择Server的时候,报错,说是未能添加对"Server"的引用,将类型库转换为.net程序集失败,类型库Server是从CLR程序集导出的,无法将其作为CLR程序集重新导入.这个是怎么回事,是不是我还没有注册好啊,我注册没有按照你说的那些步骤,我就是普通的dll在属性里面将配置属性--生成--注册COM interop属性设成TRUE,另外在.net的命令行中将asmreg pathname\Server.dll 键入提示注册成功,这样的注册是不是不够完整? 1.不在项目中引用就不能用2.在DOTNET的提示符下键入REGASM [你的DLL路径].3.注册成功可以在COM中引用它. 想要动态调用,可以通过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 dllFiletry{ 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;} 不明白你想要干什么了,你是想unmanagement 的 code 调用.net 的组件,还是在.net 环境中动态调用dll,还是? 谢谢 jasmine(Yaya),你非常cool,提出的解决方案也是很cool还有最后一个问题就是,我已经得到了Server的实例,但是我要调用它下面的一个Test方法的时候,编译提示object并不包含对"Test"的定义,这个怎么解决? 将以下JSON转换成.net类(微博JSON数据) 在c#应用程序中,修改oracle表中的一个字段值不变问题 C#正则表达式/b([a-z]+)/1/b 这个实现不了文章说的那个功能!请为我解析以下 找不到类型或命名空间名称“Word”(是否缺少 using 指令或程序集引用?) 如何使一个按钮按TAB键不经过它? 如何把文本框嵌入到DataGrid里的指定一列中?(webform) 我想把数据库中的几条纪录横着显示一列怎办? datatable插入列 怎么打开XML文件 现在怎样增加可用分? 如何在判断datagrid中选择了那几行记录? 请问Update的问题
选中就可以了
然后,如果你知道server.dll中类和方法就可以调用了
用CreateInstance()吗?希望能够解答!
2.在DOTNET的提示符下键入REGASM [你的DLL路径].
3.注册成功可以在COM中引用它.
通过 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;
}
还有最后一个问题就是,我已经得到了Server的实例,但是我要调用它下面的一个Test方法的时候,编译提示object并不包含对"Test"的定义,这个怎么解决?