首页 新闻 会员 周边 捐助

regasm的问题?

-1
悬赏园豆:50 [已解决问题] 解决于 2014-11-24 21:05

我用C#写了一个BHO程序,本地测试注册程序集使用 "regasm /codebase *.dll" 注册后就可以了,卸载用 "regasm /u *.dll"就可以了。

但现在我需要的是发布,在发布的计算机上我如何定位 regasm的位置和环境,我在本地直接把regasm 拷贝出来到另一个目录,命令是无法成功的。

有个说使用 "regasm /codebase *.dll /regfile:bhoreg.reg" 可以生成对应的注册表脚本,但经过我无数次测试,我几乎把所有参数都试了很多遍,无论怎么试,生成的 *.reg文件导入注册表后一点反应都没有,而我使用 regasm /code *.dll 一注册立即起作用了(msgbox出来了)。

谁能告诉我,我的程序发布时,我应该如何在客户端动态 “注册/注销” 我的BHO组件?
(我的bho.dll不是强命名的,我暂时不想强命名)

空明流光的主页 空明流光 | 初学一级 | 园豆:111
提问于:2014-11-23 21:34
< >
分享
最佳答案
0

regasm工具就在.NET Framework的目录下面,而.NET Framework在系统里的目录是固定的呀,都在C:\Windows\Microsoft.NET\Framework 或C:\Windows\Microsoft.NET\Framework64下面,然后根据自己DLL的.net 版本选择就行了。如果目标计算机没有装.net,那你肯定是找不到的。。。

收获园豆:50
XiaoFaye | 老鸟四级 |园豆:3087 | 2014-11-24 09:16

获取这个目录还真是麻烦,就怕这段代码有bug

空明流光 | 园豆:111 (初学一级) | 2014-11-24 09:40

@沧海一杰: 

C:\Windows用环境变量获取就行了,剩下的目录名都是固定的,绝对错不了。。。

注意:运行这个好像是要管理员权限的!

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-11-24 09:55

@XiaoFaye: 
v2.0.50727好像是变的,我正在测试

空明流光 | 园豆:111 (初学一级) | 2014-11-24 09:57

@沧海一杰: 是不是所有版本的.netframework安装后都有2.0目录呢,我是.net 4.5 开发的

空明流光 | 园豆:111 (初学一级) | 2014-11-24 09:58

@沧海一杰: 

你用.NET 4.5开发的东西,那目标计算机上肯定得有.NET 4.5才能运行吧?那你找V4.0的目录就行了,你找2.0的做什么? 我暂时不清楚不同版本的regasm能不能互用哦,你可以试试 。

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-11-24 10:07

@XiaoFaye: 试了2.0确实不行,但如何获取与当前程序集匹配的.netframework目录名?

空明流光 | 园豆:111 (初学一级) | 2014-11-24 10:11

@沧海一杰: 

你的是4.5的嘛,就找V4.0开头的就行了。

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-11-24 10:18

@沧海一杰: 

还要注意32位和64位是在不同目录的哦。

XiaoFaye | 园豆:3087 (老鸟四级) | 2014-11-24 10:20

@XiaoFaye: 一句代码搞定 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory();

空明流光 | 园豆:111 (初学一级) | 2014-11-24 21:05

@沧海一杰: 

或者引入 Microsoft.Build.Utilities.dll

Microsoft.Build.Utilities.ToolLocationHelper.GetPathToDotNetFramework(Microsoft.Build.Utilities.TargetDotNetFrameworkVersion.Version40);

空明流光 | 园豆:111 (初学一级) | 2014-11-24 21:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册