C# RegAsm 的是ActiveX否需要强名注册??

Microsoft(R) .NET Framework 程序集注册实用工具 2.0.50727.4927
版权所有(C) Microsoft Corporation 1998-2004。保留所有权利。

RegAsm : warning RA0000 : 使用 /codebase 注册未签名的程序集可能会导致程序集妨碍
可能在同一台计算机上安装的其他应用程序。/codebase 开关旨在仅用于已签名的程序集。
请为您的程序集提供一个强名称并重新注册它。
RegAsm : error RA0000 : 在将注册信息写入注册表时出错。您必须具有管理凭据才能执行
此任务。请与系统管理员联系以获得帮助

  1、可以使用/regfile选项生成包含注册表项的.reg文件,而不是直接对注册表进行更改。通过注册表编辑器工具(Regedit.exe)导入.reg文件,可以在计算机上更新注册表。请注意,.reg文件不包含任何可由用户定义的注册函数完成的注册表更新。注意,/regfile选项只为托管类发出注册表项。此选项不为TypeLibID或InterfaceID发出注册表项。

  2、指定/tlb选项时,Regasm.exe生成并注册一个类型库,对在程序集中找到类型进行描述。Regasm.exe将生成的类型库放到当前的工作目录中或为输出文件指定的目录中。为引用其他程序集程序集生成类型库可能导致同时生成几个类型库。可使用类型库向开发工具(如VisualStudio2005)提供类型信息。如果正在注册的程序集是由类型库导入程序(Tlbimp.exe)产生的,则不应使用/tlb选项。如果程序集是从类型库导入的,则不能从它导出类型库。除了类型库导出程序(Tlbexp.exe)不能注册它产生的类型库外,使用/tlb选项同使用Tlbexp.exe和Regasm.exe的效果相同。如果使用/tlb选项注册某个类型库,则可将/tlb选项和/unregister选项一起使用,以注销该类型库。将两个选项一起使用将注销类型库和接口项,这样可较大程度地清理注册表。

  3、当您注册一个程序集供COM使用时,Regasm.exe会在本地计算机的注册表中添加一些项。更具体地说就是,它创建与版本相关的注册表项,这些项允许在一台计算机上并行运行同一程序集的多个版本。第一次注册程序集时,会为该程序集创建一个顶级项并为这个程序集版本创建一个唯一的子项。每次注册该程序集的新版本时,Regasm.exe都为新版本创建一个子项。

  4、例如,假设您要注册一个版本为1.0.0.0的托管组件myComp.dll供COM使用。后来,您又注册版本为2.0.0.0的myComp.dll。您确定计算机上的所有COM客户端应用程序都要使用2.0.0.0版本的myComp.dll,并且决定注销myComponent.dll版本1.0.0.0。此注册表方案允许您注销myComp.dll版本1.0.0.0,这是因为注销操作只移除1.0.0.0版本子项。

  5、使用Regasm.exe注册程序集之后,可以将该程序集安装在全局程序集缓存中,以便可以从任何COM客户端激活它。如果程序集仅准备由单个应用程序激活,则可以将它放到该应用程序的目录中。

  使用示例:

下面的命令注册myTest.dll中包含的所有公共类。
regasmmyTest.dll

下面的命令生成文件myTest.reg,该文件包含所有必要的注册表项。此命令不更新注册表。
regasmmyTest.dll/regfile:myTest.reg

下面的命令注册myTest.dll中包含的所有公共类,并生成和注册类型库myTest.tlb,该类型库包含myTest.dll中定义的所有公共类型的定义。
regasmmyTest.dll/tlb:myTest.tlb

用VS写的DLL,准备用REGASM进行注册,我设了一个BAT文件,内容只有一句:

"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" .\dbrLDAP.dll

放在DLL的编译目录下,执行时,却发生了错误:

RegAsm : error RA0000 : Unable to locate input assembly 'dbrLDAP.dll' or one of
 

its dependencies.

有人说是因为在REGASM.EXE的命令行中有空格,但不是这个原因.

后来,在命令行窗口下,进入REGASM的目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727, 然后运行

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regasm D:\VS2005Projects\dbrLDAP\ClassLibrary1\ClassLibrary1\bin\Debug\dbrLDAP.DLL

居然就成功了.看来,是REGASM还要调用其他执行文件而产生的路径问题

http://blog.csdn.net/xqf222/article/details/7236722
 
 2005/12/27 下午 11:01:01
>一:在賣這套軟體時,當然也要附上這個interop.CorelDraw.dll,會不會因此而侵權呢?(最重要的問題)

如果沒有和 Corel Draw 出售或是客戶沒有 Corel Draw 的合法授權 , 那就算侵權 .
不過我是以常見的看法來回應這個問題 , 你不妨打電話給 Corel 公司問看看 ...

>二:請問有什麼辦法把dll給合併到exe裡面嗎?

就 .NET Framework 來看是沒辦法 .
因為 TlbImp.exe 產生的就是 Proxy DLL 不是原始碼 ...

>三:請問有辦法把dll加密成自訂副檔名的檔案並且呼叫嗎?

我沒試過 , 但我想應該可以 ...

>四:請問如何呼叫不在同個資料夾底下的dll檔?

你是要用晚期繫結嗎 ?
不然你乾脆把 DLL 安裝到 GAC (但這必須要具有強型別的 DLL , 可參考 .NET SDK 文件) ...

我想你指的是 Primary Interop Assemblies 吧 .
Office XP/2003 本身就有附可轉散佈的 PIAs , 這些好像都是 GAC 中的 Proxy DLL ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值