Pra*_*abu 52 asp.net interop crystal-reports
我需要一些澄清.我有一个使用Crystal Reports的Reportwriter dll.它是用VB6编写的.我必须将这个dll添加到我的asp.net项目中,它创建一个interop dll.
根据我的理解,interop dll作为中介,以便我的.net代码可以与Reportwriter dll通信.
那么我注册interop dll还是注册原始dll?
Pav*_*aev 92
在VB6中编写代码时,编译结果是COM组件.COM组件提供接口,coclass,结构和枚举,通常使用COM类型库进行描述.但是,要在.NET中使用该COM组件,您需要以.NET理解的格式进行类型描述 - 即.NET程序集(因为它不能直接与类型库一起使用).因此,互操作程序集只是一个"转换"的COM类型库,在某种意义上它包含对应于类型库中相同内容的接口,结构等的描述.
(以上是某种程度的简化,因为互操作组件不具有被从类型库生成-你可以手工编写一个,如果需要,例如).
与通常所说的相反,互操作程序集不包含任何可执行代码,并且它不执行任何编组操作.它只包含类型定义,并且它可以拥有方法的唯一位置是接口,接口中的方法没有实现.对来自COM的Marshaling .NET调用实际上是由CLR本身根据从互操作程序集加载的类型描述完成的 - 它会动态生成所有必需的代码.
现在你的问题.您需要注册您的COM DLL(VB6的输出)项目 - 例如,使用regsvr32.exe.你不应该(事实上,你不能)以这种方式注册一个互操作程序集,因为它不是一个COM组件 - 它只是一个普通的.NET程序集,所以你可以将它放在与.exe/.dll相同的文件夹中或像往常一样将其放入GAC.
帕维尔的答案很好.此外,从.NET Framework版本4开始,您不需要在应用程序中部署互操作程序集 - http://msdn.microsoft.com/en-us/library/tc0204w0.aspx
| 归档时间: |
|
| 查看次数: |
41365 次 |
| 最近记录: |