经过网上查,发现两者的dll应该能共用的,就试了一下,好一会儿才成功,不多说,直接上示例。IDE为vs2008。
VB.net中编写类库,设置项目名称(同时默认为解决方案名称)后开始编写,代码如下:
Namespace test1
Public Class Cls1
Public Function plus(ByVal a As Double, ByVal b As Double) As Double
plus = a + b * 2
End Function
End Class
End Namespace
之后发布,发布之前记得在项目属性中确认一下根命名空间,如下图,发布后形成dll文件。
之后,新建C#的项目,windows应用程序,添加引用,如下图所示,然后写代码。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using vbTestDll.test1;
namespace cccc_use_vb_dll
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Cls1 cc =new Cls1();
private void button1_Click(object sender, EventArgs e)
{
double a1 = Convert.ToDouble(textBox2.Text);
double a2 = Convert.ToDouble(textBox3.Text);
double a=cc.plus(a1,a2);
textBox1.Text =a.ToString ();
}
}
}
运行,成功,如下图所示,数据输入后也OK。
要点说明如下:
1)在编写VB类库时,用namespace包起来;
2)确认VB类库项目属性中的根命名空间,默认其与项目名称是一致,当然也可在项目属性中更改;
3)在C#编写时,先添加引用,然后使用using语句引入VB的dll文件的命名空间,此命名空间记得先写上根命名空间,即本例中的using vbTestDll.test1而非using test1;
4)已经过测试,按上述步骤应用dll文件后,如果dll源代码内容有变化,重新生成后,到C#项目后直接启动调试即可接受此变化,无需重新引用。