Solved

Call a VB routine from C#

Posted on 2008-06-10
13
769 Views
Last Modified: 2013-12-17
Hi,

I have this file in VB (.vb) that has a routine I must call from another file in C#.

I have no idea on how to do that.

Any help would be appreciated.

Warm Regards,
Mário Gamito
0
Comment
Question by:angelsofgrace2006
  • 5
  • 5
  • 3
13 Comments
 
LVL 9

Expert Comment

by:Rob Siklos
ID: 21751666
Compile the VB program into a library (DLL).  

In your C# project, add a reference to that DLL.

In your C# code, add a "using" statement for the namespace in which your routine is defined.
0
 

Author Comment

by:angelsofgrace2006
ID: 21751719
Dear rob263,

How do I compile the .vb file to a DLL ?

How do I add a reference to it in my C# file ?

How do I identify the namespace of the routine ?

Where do I put the created DLL (C:\Windows\system32) ?

Sorry for the lame questions, but I'm really a newbie at C#

Warm Regards,
Mário Gamito
0
 
LVL 18

Expert Comment

by:jcoehoorn
ID: 21751789
Is this .vb file vb6 or vb.net?
0
 
LVL 9

Accepted Solution

by:
Rob Siklos earned 250 total points
ID: 21751860
In your VB source, check to see if your routine is inside a "Namespace / End Namespace" scope.  If not, add one around the code (see code snippet below)

In your VB project,  go to the "Project" menu, and then "<Project Name>  Properties".  Make sure the Application Type is set to "Class Library".

Compile the project, and you will find the DLL in the bin/Debug or bin/Release folder underneath your main project folder.

Take the DLL (and any other DLLs in that folder) and copy them to the "bin" folder of your C# project.

In your C# project, go to the "Project" menu, and click "Add Reference".  Go to the "Browse" tab, and navigate to the "bin" folder of your c# project.  Select all DLL files and add them as references.

In your c# code file, add something like "using MyVbLibrary;"
Namespace MyVbLibrary
 

  Public Module MyModule
 

    Public Sub DoSomething()

      ' code goes here

    End Sub
 

  End Module
 

End Namespace

Open in new window

0
 

Author Comment

by:angelsofgrace2006
ID: 21752059
Dear rob263,

I can't find any "Project" menu or any other thing that has what you mention.

I'm using Visual Studio 2008.

BTW, do I have to compile the whole website as a DLL or only the file that has the routine I want to call from C# ?

Warm Regards,
Mário Gamito
0
 
LVL 9

Expert Comment

by:Rob Siklos
ID: 21752096
Oh - you didn't mention that it was a web site.

In that case, you should create a new VB "Class Library" project, and move the code which you want to be shared into there.
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:angelsofgrace2006
ID: 21752128
Dear rob263,

Move the code to where ?

Does the rest still applies ?

Warm Regards,
Mário Gamito
0
 
LVL 9

Expert Comment

by:Rob Siklos
ID: 21752167
Dude, if you don't know how to make a new VB project in VS 2008, you're in trouble.

- Open VS 2008.
- Create a new project
- Choose VB.NET as the Language
- Choose Class Library as the project type
- Take the code which has the sub-routine you want to call from C#, and move (or copy) it to your new project.
- compile the project, and copy the DLL as described above.
0
 
LVL 18

Expert Comment

by:jcoehoorn
ID: 21752224
It might be simpler if you just post the routing and let us translate it to C#...
0
 
LVL 9

Expert Comment

by:Rob Siklos
ID: 21752262
jcoehoorn:

FYI, I think .vb files are only for .NET.  VB6 uses .frm, .mdl, .cls, etc..
0
 

Author Comment

by:angelsofgrace2006
ID: 21752521
Hi,

I know how to make a new project in any language.
That's not the problem. The problem is how to invoke a VB function from C#, being them in separate projects/websites.

Site 1 is located at C:\site1 in C# running on port 80.
Site 2 is located at C:\site2 in VB running on port 8020.

All that I need is from Site 1 to access a tiny function in a .vb file in Site 2.

Regards,
Mário Gamito
0
 
LVL 18

Expert Comment

by:jcoehoorn
ID: 21752549
You need to put the vb function in a class library project, not in a web site.
0
 

Author Comment

by:angelsofgrace2006
ID: 21752594
Just one more thing: the author of Site 2 says that I can only empty the cache (by calling the function) if Site 1 is within the same folder as Site 2.

Mário Gamito
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

It seems a simple enough task, yet I see repeated questions asking how to do it: how to pass data between two forms. In this article, I will show you the different mechanisms available for you to do just that. This article is directed towards the .N…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now