Click here to Skip to main content
15,892,737 members
Articles / Programming Languages / Visual Basic

Compile VB.NET code without Microsoft.VisualBasic.dll

Rate me:
Please Sign up or sign in to vote.
2.97/5 (11 votes)
1 Aug 2006CPOL2 min read 105.7K   20   20
Compile VB.NET code without an implicit reference to Microsoft.VisualBasic.dll.

Introduction

Let's say you are developing a program using Visual Basic .NET (2003 or 2005), and you wish to make sure that your code is using "pure" .NET and is VB6 free.

Background

As you all know, Visual Basic .NET enables you to code using VB 6 legacy syntax and keywords. For example, we can use CInt, Mid, InStr etc. The implementation of the compatibility layer is at the Microsoft.VisualBasic.dll library.

Behind the scene

When compiling your program, using either the Visual Studio IDE or the vbc command line compiler, Microsoft.VisualBasic.dll is added as a reference, and there is no direct approach of removing this reference. The official (and quite not reasonable) solution to the problem is to add the -sdkpath command line option to the vbc (you cannot set this option in a VB Visual Studio project). Copy the .NET platform assemblies that are required by your project references, into a different directory, and build your program from the command line, having the -sdkpath pointing to that directory.

Behind the whole theater

There is an undocumented vbc command line option -novbruntimeref, which you can use (at your own risk :), as an alternative to -sdkpath. Adding -novbruntimeref excludes the implicit addition of the Microsoft.VisualBasic.dll reference. For example, compiling with the -novbruntimeref option will fail if you will use Mid instead of Substring.

Now, your compilation is VB6 free. And don't get me wrong, VB was a great friend of mine since VB3, and some of my best friends are ... well, you got the point.

Should I stop using the Microsoft.VisualBasic namespace?

Yes and No.

No - Productivity. If you wish to parse strings using the VB6 Mid instead of Substring, it's your call. After all, this layer was made for enabling you to import VB6 applications into .NET, seamlessly, without code changes.

Yes - Compatibility. For example, VB6 collections are 0 based for read, and -1 based for insertion. Upgraded application that use VB collections through inconsistent implementations of IList may experience some bugs.

Both points are very important. The choice is all yours.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Chief Technology Officer Feng-GUI
United States United States
Rafael Mizrahi is a CTO at Feng-GUI

He is also a hacker contributor at the mono project, and a GarageGeeks member.

Rafael Mizrahi personal blog -
http://rafaelmizrahi.blogspot.com

Comments and Discussions

 
NewsMicrosoft now released this feature in VB9 ORCAS Pin
Rafael Mizrahi12-Jun-07 0:37
Rafael Mizrahi12-Jun-07 0:37 
Questionwhat happen when I use DirListBox in c# Pin
Do.It11-Apr-07 1:00
Do.It11-Apr-07 1:00 
GeneralYou people need to calm down [modified] Pin
LuharVB25-Jan-07 7:01
LuharVB25-Jan-07 7:01 
AnswerRe: You people need to calm down Pin
Rafael Mizrahi25-Jan-07 7:26
Rafael Mizrahi25-Jan-07 7:26 
Newsnovbruntimeref compiler option Pin
Rafael Mizrahi4-Aug-06 0:10
Rafael Mizrahi4-Aug-06 0:10 
GeneralWrong reason Pin
jim_23-Aug-06 4:42
jim_23-Aug-06 4:42 
QuestionWhy? Pin
jim_21-Aug-06 4:10
jim_21-Aug-06 4:10 
GeneralRe: Why? Pin
Anthony Missico3-Aug-06 9:01
Anthony Missico3-Aug-06 9:01 
AnswerRe: Why? [modified] Pin
Michel Posseth1-Aug-06 22:51
Michel Posseth1-Aug-06 22:51 
You are right

The person who wrote this article is totally wrong with his arguments

i invite him to tell his ferry tale here

http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.dotnet.languages.vb&lang=en&cr=US[^]

The Microsoft.VisualBasic.dll has nothing to do with Visual Basic 6

This hole article is unnecesary
if you are a VB programmer who wants to code without VB syntax well ( i wonder what you do in the VB IDE then just code in C++ or C# or whatever )

Wake up ! the visual basic namespace is nothing more as a framework wrapper some of the methods you find there are more efficient as writing it all out in framework code the methods are just shortcuts in the framework

simple example ? len() does the same as string.length however it will not raise an error if the string was not initialized but simply returns zero and so i can dig up several examples ,,,


It is all a mather of preference , but as i said we are talking about native VB syntax if you do not want to code in VB then Code in another language , but do not tell people to criple there VB
VB is a RAD removing the Microsoft.VisualBasic.dll will make VB a C# / C++ etc etc


my personal opinion is that the advantage of the framework is that a vb progger can also choose to use pure framework code if he does not need the additional checks that code in the Visual basic namespace performs to speed up code execution


p.s.

You can remove the vb namespace under project , properties , references ( the namespace box )
result is C# without the curly braces and weird variabel declaration



regards

Michel Posseth [MCP]


-- modified at 6:18 Wednesday 2nd August, 2006
General[Message Deleted] Pin
Rafael Mizrahi1-Aug-06 23:07
Rafael Mizrahi1-Aug-06 23:07 
GeneralRe: Why? Pin
Michel Posseth1-Aug-06 23:36
Michel Posseth1-Aug-06 23:36 
GeneralRe: Why? [modified] Pin
Anthony Missico3-Aug-06 9:06
Anthony Missico3-Aug-06 9:06 
GeneralPrevent the reference being added to new projects ... Pin
Duncan Edwards Jones28-Jul-06 6:47
professionalDuncan Edwards Jones28-Jul-06 6:47 
GeneralRe: Prevent the reference being added to new projects ... Pin
Daniel Finger1-Aug-06 1:38
Daniel Finger1-Aug-06 1:38 
GeneralRe: Prevent the reference being added to new projects ... Pin
Daniel Finger1-Aug-06 2:28
Daniel Finger1-Aug-06 2:28 
GeneralRe: Prevent the reference being added to new projects ... Pin
lpellerin6-Sep-06 3:37
lpellerin6-Sep-06 3:37 
GeneralRe: Prevent the reference being added to new projects ... Pin
Rafael Mizrahi6-Sep-06 21:04
Rafael Mizrahi6-Sep-06 21:04 
QuestionRe: Prevent the reference being added to new projects ... Pin
nitkapy2k@gmail.com12-Mar-08 21:42
nitkapy2k@gmail.com12-Mar-08 21:42 
GeneralRe: Prevent the reference being added to new projects ... Pin
Rafael Mizrahi12-Mar-08 22:01
Rafael Mizrahi12-Mar-08 22:01 
GeneralRe: Prevent the reference being added to new projects ... Pin
nitkapy2k@gmail.com13-Mar-08 4:29
nitkapy2k@gmail.com13-Mar-08 4:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.