在之前的一篇使用自定义的类别透过SharpZip执行Zip压缩、解压缩(VB.NET) 小喵用一个类别把SharpZip做了一个包装,让使用上能够更直观。小喵心想如果能够再把他写成COM+组件的话,那么就能够让ASP或者VB呼叫使用,可用范围更扩大。

转成COM+的组件需要一些额外的设定,这与一般COM+组件的写法是一样的,有需要的请参考这篇:

N-Tiers开发方式(如何使用VB.NET撰写COM+组件)
N-Tiers开发方式(COM+组件的注册、修改)

但是小喵遇到一个状况,当小喵写好的组件注册后,要呼叫使用的时候却出现以下的错误讯息

无法加载档案或组件 'ICSharpCode.SharpZipLib, Version=0.85.4.369, Culture=neutral, PublicKeyToken=1b03e6acf1164f73' 或其相依性的其中之一。 系统找不到指定的档案。

原因在于ICSharpCode.SharpZipLib.dll没有注册到系统中,因此当小喵写的COM+要呼叫该dll的时候,就找不到了。

因此必须在OS中把这个dll注册。由于该dll并非COM+dll,所以要用以下的方式来注册

首先开启Visual Studio 2005的命令提示字符(VS2005的命令窗口,需安装SDK才有),接着将ICSharpCode.SharpZipLib.dll复制到某个存放dll的文件夹,然后输入以下的两个指令:

RegAsm /tlb ICSharpCode.SharpZipLib.dll
GACUTIL /i ICSharpCode.SharpZipLib.dll

这样会将该dll产生tlb并且注册到GAC中。COM+就能够正确的呼叫该dll并执行压缩/解压缩了。

小喵之后测试,在ASP中可以透过该COM+正确的压缩/解压缩文件案。这样可以透过COM+ASP/ASP.NET/VB/VB.NET这些所开发的系统都能有压缩/解压缩的能力了。

 

posted on 2008-06-08 00:10  topcat  阅读(838)  评论(0)    收藏  举报