Call a VB routine from C#

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
angelsofgrace2006Asked:
Who is Participating?
 
Rob SiklosConnect With a Mentor Commented:
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
 
Rob SiklosCommented:
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
 
angelsofgrace2006Author Commented:
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
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
Joel CoehoornDirector of Information TechnologyCommented:
Is this .vb file vb6 or vb.net?
0
 
angelsofgrace2006Author Commented:
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
 
Rob SiklosCommented:
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
 
angelsofgrace2006Author Commented:
Dear rob263,

Move the code to where ?

Does the rest still applies ?

Warm Regards,
Mário Gamito
0
 
Rob SiklosCommented:
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
 
Joel CoehoornDirector of Information TechnologyCommented:
It might be simpler if you just post the routing and let us translate it to C#...
0
 
Rob SiklosCommented:
jcoehoorn:

FYI, I think .vb files are only for .NET.  VB6 uses .frm, .mdl, .cls, etc..
0
 
angelsofgrace2006Author Commented:
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
 
Joel CoehoornDirector of Information TechnologyCommented:
You need to put the vb function in a class library project, not in a web site.
0
 
angelsofgrace2006Author Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.