經過網上查,發現兩者的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#項目後直接啟動調試即可接受此變化,無需重新引用。