经过⽹上查,发现两者的dll应该能共⽤的,就试了⼀下,好⼀会⼉才成功,不多说,直接上⽰例。IDE为vs2008。VB.net中编写类库,设置项⽬名称(同时默认为解决⽅案名称)后开始编写,代码如下:Namespace test1 Public Class Cls1
Public Function plus(ByVal a As Double, ByVal b As Double) AsDouble
plus = a + b * 2 End Function End ClassEnd 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⽂件的命名空间,此命名空间记得先写上根命名空间,即本例中的usingvbTestDll.test1⽽⾮using test1;
4)已经过测试,按上述步骤应⽤dll⽂件后,如果dll源代码内容有变化,重新⽣成后,到C#项⽬后直接启动调试即可接受此变化,⽆需重新引⽤。
因篇幅问题不能全部显示,请点此查看更多更全内容