随笔 - 435  文章 - 0  评论 - 111  阅读 - 62万 

有的时候找到的资源是only for .net的。 但如果要在vb里使用,又不想翻译代码。可以考虑把资源写出activeX dll,在vb里使用

 

步骤如下:

1.在解决方案中添加一个类库项目

2.需要设置类库项目属性->程序集信息->使程序集COM可见

 

 

3. 设置该项目的一个属性: 为COM互操作注册, 这样就会在bin目录生成一个*.tlb文件. 这个tlb文件可以用regasm 来注册

例子代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace activeXDemo
{
    public class clsDemo
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}

 

编译成dll, 用RegAsm注册控件, 注册接口的参数不能是复杂类型,不能是List<T>,不能是泛型,不能有可变参数,不然会报错

 

 regasm assemblyFile [options]

assemblyFile表示要向COM注册的程序集文件路径

选项说明
/codebase 在注册表中创建一个Codebase项。codebase项指定未安装到全局程序集缓存中的程序集的文件路径。如果随后要安装正在注册到全局程序集缓存中的程序集,则不应指定此选项。用/codebase选项指定的assemblyFile参数必须是具有强名称的程序集。
/registered 指定此工具将仅引用已经注册的类型库
/unregister或/u 注销在assemblyFile中找到的可创建类。
/?或/help 显示该工具的命令语法和选项

需要注意的一点是在32位系统上要使用C:\windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe

在64位上要使用

C:\windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe

-=================================================

 

 

vb加引用。

 假如要更改activeDLL,记得要先关掉VB,正在使用的话,build dll时会出现这个错误. build完之后如果改了接口, 重新用RegAsm注册.重新build exe

 Unable to delete file "D:\work\demo\bin\Debug\activedemo.tlb". Access to the path 'D:\work\Fdemo\bin\Debug\activedemo.tlb' is denied.    

另外可以用VS附加调试到VB6.exe, 这个当vb调用net的dll时,就会触发断点,

VB运行调用dll时,几种取当前目录的写法,返回的值如下: 另外在system32目录下建文件夹的操作不会成功,但也不会报错

 

posted on   Gu  阅读(630)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
历史上的今天:
2018-04-14 把旧系统迁移到.Net Core 2.0 日记(9) -- T4 Template
点击右上角即可分享
微信分享提示