最近在做Windows Shell的扩展实现,需要用到regasm.exe注册程序集,故做个记录
程序集注册工具读取程序集中的元数据,并将所需的项添加到注册表中。注册表允许COM客户程序以透明方式创建.NET Framework类。类一经注册,任何COM客户程序都可以使用它,就好像该类是一个CO类。类仅在安装程序集时注册一次。程序集中的类实例直到被实际注册时,才能从COM中创建。
注册格式
regasm assemblyFile [options]
assemblyFile表示要向COM注册的程序集文件路径
选项 | 说明 |
---|---|
/codebase | 在注册表中创建一个Codebase项。codebase项指定未安装到全局程序集缓存中的程序集的文件路径。如果随后要安装正在注册到全局程序集缓存中的程序集,则不应指定此选项。用/codebase选项指定的assemblyFile参数必须是具有强名称的程序集。 |
/registered | 指定此工具将仅引用已经注册的类型库 |
/unregister或/u | 注销在assemblyFile中找到的可创建类。 |
/?或/help | 显示该工具的命令语法和选项 |
需要注意的一点是在32位系统上要使用C:windowsMicrosoft.NETFrameworkv4.0.30319RegAsm.exe
在64位上要使用
C:windowsMicrosoft.NETFramework64v4.0.30319RegAsm.exe
切记
附加一个我使用的批处理:
注册使用:
@echo off
rem 进入到当前目录
cd /d %~dp0
%windir%Microsoft.NETFramework64v4.0.30319RegAsm.exe /register /codebase RegistryNamespaceExtension.dll
rem 重启资源管理器
taskkill /f /im explorer.exe & start explorer.exe
pausee
注销使用:
@echo off
cd /d %~dp0
%windir%Microsoft.NETFramework64v4.0.30319RegAsm.exe /unregister RegistryNamespaceExtension.dll
taskkill /f /im explorer.exe & start explorer.exe
pause