473,511 Members | 17,577 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

How to create a single CLASS file that will be available to ANY PROJECT I want to link it to???

Again, I'm new to VB.net and there is something I need help with:

Like (I assume) many of us, over time I want to be able to create some
VB.net classes that I might want to use in more than one Project. So
let's say I've created a Folder called "MyVBNet Classes" to hold these
general-use VB.Net class files that I will eventually associate with
various Projects I create. Now let's imagine I've created a class
called "MyClass.vb" that I've placed into the "MyVBNetClasses" folder.
Let's also assume that, over time, I will be adding code to
"MyClass.vb", but the new code will never be written in a
Project-specific manner. In other words, I will only add code to
"MyClass.vb" that will keep it capable of providing general-use to any
Project that may need it.

My assumption has been that if I create a new project and want to
utilize my general-use "MyClass.vb" class in the project that I just
Right-Click the Solution in my new project's Solution Explorer, click
Add, click Existing Item, and then go to the "MyVBNet Classes" folder
and select "MyClass.vb" from it. So far so good...

....except that what this seems to result in is a copy of "MyClass.vb"
is created in my current Project's folder.

This (I think) is a problem. As I've said, I'm very careful to alter
this type of general-use class file in such a way that it won't become
project-specific; because I want to be able to drop this class where
needed into any project.

But, as I say, the process I've described above seems to create a new
separate and distinct "MyClass.vb" file. Presumably, if I make any
changes to that class while I'm working in a Project, I will ONLY BE
ALTERING THE VERSION of "MyClass.vb" that is in *that particular
Project's folder system*.

I hope somebody will tell me I'm doing this wrong because, given what
I've stated above, this defeats the whole purpose of being able to
create single general-use Classes that will get improved over time but
will be commonly available to any Project I begin to create.

That said, what am I doing wrong here?

Thanks in advance for any help.
Nov 5 '07 #1
4 4441
You are correct that a copy of the .vb file is being made. This is because
VB .NET projects have to have a master project folder that all project items
will be inside of (including sub-folders you may wish to make inside of the
project folder). You can't just have random files that are outside of the
project directory structure be part of your project.

Having said this, IMHO, you are going about this all wrong.

Rather than keeping a source code file hanging around (and getting copies
created each time you want to use it), why not just compile your general
purpose code into a .dll, install that assembly into the GAC and then you
can reference that library from any other project you wish to (without
having to make copies of the .dll). If you wanted to extend the code, you
can simply use inheritance to do that.

-Scott

"Alan Mailer" <cl**********@earthlink.netwrote in message
news:f5********************************@4ax.com...
Again, I'm new to VB.net and there is something I need help with:

Like (I assume) many of us, over time I want to be able to create some
VB.net classes that I might want to use in more than one Project. So
let's say I've created a Folder called "MyVBNet Classes" to hold these
general-use VB.Net class files that I will eventually associate with
various Projects I create. Now let's imagine I've created a class
called "MyClass.vb" that I've placed into the "MyVBNetClasses" folder.
Let's also assume that, over time, I will be adding code to
"MyClass.vb", but the new code will never be written in a
Project-specific manner. In other words, I will only add code to
"MyClass.vb" that will keep it capable of providing general-use to any
Project that may need it.

My assumption has been that if I create a new project and want to
utilize my general-use "MyClass.vb" class in the project that I just
Right-Click the Solution in my new project's Solution Explorer, click
Add, click Existing Item, and then go to the "MyVBNet Classes" folder
and select "MyClass.vb" from it. So far so good...

...except that what this seems to result in is a copy of "MyClass.vb"
is created in my current Project's folder.

This (I think) is a problem. As I've said, I'm very careful to alter
this type of general-use class file in such a way that it won't become
project-specific; because I want to be able to drop this class where
needed into any project.

But, as I say, the process I've described above seems to create a new
separate and distinct "MyClass.vb" file. Presumably, if I make any
changes to that class while I'm working in a Project, I will ONLY BE
ALTERING THE VERSION of "MyClass.vb" that is in *that particular
Project's folder system*.

I hope somebody will tell me I'm doing this wrong because, given what
I've stated above, this defeats the whole purpose of being able to
create single general-use Classes that will get improved over time but
will be commonly available to any Project I begin to create.

That said, what am I doing wrong here?

Thanks in advance for any help.

Nov 5 '07 #2
Scott, thanks for the advice. Could you either talk me through a
step-by-step way of going about your suggestion... or perhaps
recommend a book or website that might provide this?

Again, I'm new to VB.net and (for well or ill) did not handle things
the way you suggest in my VB6 days.

Thanks again for any feedback.

On Mon, 5 Nov 2007 17:04:00 -0500, "Scott M." <s-***@nospam.nospam>
wrote:
>You are correct that a copy of the .vb file is being made. This is because
VB .NET projects have to have a master project folder that all project items
will be inside of (including sub-folders you may wish to make inside of the
project folder). You can't just have random files that are outside of the
project directory structure be part of your project.

Having said this, IMHO, you are going about this all wrong.

Rather than keeping a source code file hanging around (and getting copies
created each time you want to use it), why not just compile your general
purpose code into a .dll, install that assembly into the GAC and then you
can reference that library from any other project you wish to (without
having to make copies of the .dll). If you wanted to extend the code, you
can simply use inheritance to do that.

-Scott

"Alan Mailer" <cl**********@earthlink.netwrote in message
news:f5********************************@4ax.com.. .
>Again, I'm new to VB.net and there is something I need help with:

Like (I assume) many of us, over time I want to be able to create some
VB.net classes that I might want to use in more than one Project. So
let's say I've created a Folder called "MyVBNet Classes" to hold these
general-use VB.Net class files that I will eventually associate with
various Projects I create. Now let's imagine I've created a class
called "MyClass.vb" that I've placed into the "MyVBNetClasses" folder.
Let's also assume that, over time, I will be adding code to
"MyClass.vb", but the new code will never be written in a
Project-specific manner. In other words, I will only add code to
"MyClass.vb" that will keep it capable of providing general-use to any
Project that may need it.

My assumption has been that if I create a new project and want to
utilize my general-use "MyClass.vb" class in the project that I just
Right-Click the Solution in my new project's Solution Explorer, click
Add, click Existing Item, and then go to the "MyVBNet Classes" folder
and select "MyClass.vb" from it. So far so good...

...except that what this seems to result in is a copy of "MyClass.vb"
is created in my current Project's folder.

This (I think) is a problem. As I've said, I'm very careful to alter
this type of general-use class file in such a way that it won't become
project-specific; because I want to be able to drop this class where
needed into any project.

But, as I say, the process I've described above seems to create a new
separate and distinct "MyClass.vb" file. Presumably, if I make any
changes to that class while I'm working in a Project, I will ONLY BE
ALTERING THE VERSION of "MyClass.vb" that is in *that particular
Project's folder system*.

I hope somebody will tell me I'm doing this wrong because, given what
I've stated above, this defeats the whole purpose of being able to
create single general-use Classes that will get improved over time but
will be commonly available to any Project I begin to create.

That said, what am I doing wrong here?

Thanks in advance for any help.
Nov 5 '07 #3
When you create a new Project just select Visual Basic->Windows->Class
Library

This will automatically create a dll. You can then reference this Dll
(using Add References) from any other project. Your new project can
reference anything that was made public from that DLL. This will end up
making a copy of your dll for each project, however, if you only want one
copy you need to use the GAC.

To use the GAC you need to create a strongly typed assembly. You can google
GAC & Strongly typed assembly and you'll get plenty of examples.

--
Andrew Faust
andrew[at]andrewfaust.com
http://www.andrewfaust.com
"Alan Mailer" <cl**********@earthlink.netwrote in message
news:bi********************************@4ax.com...
Scott, thanks for the advice. Could you either talk me through a
step-by-step way of going about your suggestion... or perhaps
recommend a book or website that might provide this?

Again, I'm new to VB.net and (for well or ill) did not handle things
the way you suggest in my VB6 days.

Thanks again for any feedback.

On Mon, 5 Nov 2007 17:04:00 -0500, "Scott M." <s-***@nospam.nospam>
wrote:
>>You are correct that a copy of the .vb file is being made. This is
because
VB .NET projects have to have a master project folder that all project
items
will be inside of (including sub-folders you may wish to make inside of
the
project folder). You can't just have random files that are outside of
the
project directory structure be part of your project.

Having said this, IMHO, you are going about this all wrong.

Rather than keeping a source code file hanging around (and getting copies
created each time you want to use it), why not just compile your general
purpose code into a .dll, install that assembly into the GAC and then you
can reference that library from any other project you wish to (without
having to make copies of the .dll). If you wanted to extend the code,
you
can simply use inheritance to do that.

-Scott

"Alan Mailer" <cl**********@earthlink.netwrote in message
news:f5********************************@4ax.com. ..
>>Again, I'm new to VB.net and there is something I need help with:

Like (I assume) many of us, over time I want to be able to create some
VB.net classes that I might want to use in more than one Project. So
let's say I've created a Folder called "MyVBNet Classes" to hold these
general-use VB.Net class files that I will eventually associate with
various Projects I create. Now let's imagine I've created a class
called "MyClass.vb" that I've placed into the "MyVBNetClasses" folder.
Let's also assume that, over time, I will be adding code to
"MyClass.vb", but the new code will never be written in a
Project-specific manner. In other words, I will only add code to
"MyClass.vb" that will keep it capable of providing general-use to any
Project that may need it.

My assumption has been that if I create a new project and want to
utilize my general-use "MyClass.vb" class in the project that I just
Right-Click the Solution in my new project's Solution Explorer, click
Add, click Existing Item, and then go to the "MyVBNet Classes" folder
and select "MyClass.vb" from it. So far so good...

...except that what this seems to result in is a copy of "MyClass.vb"
is created in my current Project's folder.

This (I think) is a problem. As I've said, I'm very careful to alter
this type of general-use class file in such a way that it won't become
project-specific; because I want to be able to drop this class where
needed into any project.

But, as I say, the process I've described above seems to create a new
separate and distinct "MyClass.vb" file. Presumably, if I make any
changes to that class while I'm working in a Project, I will ONLY BE
ALTERING THE VERSION of "MyClass.vb" that is in *that particular
Project's folder system*.

I hope somebody will tell me I'm doing this wrong because, given what
I've stated above, this defeats the whole purpose of being able to
create single general-use Classes that will get improved over time but
will be commonly available to any Project I begin to create.

That said, what am I doing wrong here?

Thanks in advance for any help.
Nov 6 '07 #4
Create a new "Class Library" project and in it create one or more classes
with public methods that do your general purpose tasks. Build this project
and then you will have a single .dll that contains this/these classes and
their coresponding methods.

When you want to use these classes from another project. Just make a
reference to the .dll file you made earlier and you'll be able to use the
public methods within it. Now, if you just do this, you'd be fine, but you
did say that you don't want to have multiple copies of the same file kicking
around (although, I think you should re-think that as having multiple .dll's
contained in the various projects that will use them isn't a bad idea).

If you wanted to go a step further, you could strong name your .dll and
install it into the Global Assembly Cache (GAC) so that just one copy of it
could be used for as many projects as you'd like. The strong naming/GAC
installation process is not hard or lengthy, but too much to type here, so
here is a link on the process:

http://aspalliance.com/394_Installin...bly_in_GAC.all


"Alan Mailer" <cl**********@earthlink.netwrote in message
news:bi********************************@4ax.com...
Scott, thanks for the advice. Could you either talk me through a
step-by-step way of going about your suggestion... or perhaps
recommend a book or website that might provide this?

Again, I'm new to VB.net and (for well or ill) did not handle things
the way you suggest in my VB6 days.

Thanks again for any feedback.

On Mon, 5 Nov 2007 17:04:00 -0500, "Scott M." <s-***@nospam.nospam>
wrote:
>>You are correct that a copy of the .vb file is being made. This is
because
VB .NET projects have to have a master project folder that all project
items
will be inside of (including sub-folders you may wish to make inside of
the
project folder). You can't just have random files that are outside of the
project directory structure be part of your project.

Having said this, IMHO, you are going about this all wrong.

Rather than keeping a source code file hanging around (and getting copies
created each time you want to use it), why not just compile your general
purpose code into a .dll, install that assembly into the GAC and then you
can reference that library from any other project you wish to (without
having to make copies of the .dll). If you wanted to extend the code, you
can simply use inheritance to do that.

-Scott

"Alan Mailer" <cl**********@earthlink.netwrote in message
news:f5********************************@4ax.com. ..
>>Again, I'm new to VB.net and there is something I need help with:

Like (I assume) many of us, over time I want to be able to create some
VB.net classes that I might want to use in more than one Project. So
let's say I've created a Folder called "MyVBNet Classes" to hold these
general-use VB.Net class files that I will eventually associate with
various Projects I create. Now let's imagine I've created a class
called "MyClass.vb" that I've placed into the "MyVBNetClasses" folder.
Let's also assume that, over time, I will be adding code to
"MyClass.vb", but the new code will never be written in a
Project-specific manner. In other words, I will only add code to
"MyClass.vb" that will keep it capable of providing general-use to any
Project that may need it.

My assumption has been that if I create a new project and want to
utilize my general-use "MyClass.vb" class in the project that I just
Right-Click the Solution in my new project's Solution Explorer, click
Add, click Existing Item, and then go to the "MyVBNet Classes" folder
and select "MyClass.vb" from it. So far so good...

...except that what this seems to result in is a copy of "MyClass.vb"
is created in my current Project's folder.

This (I think) is a problem. As I've said, I'm very careful to alter
this type of general-use class file in such a way that it won't become
project-specific; because I want to be able to drop this class where
needed into any project.

But, as I say, the process I've described above seems to create a new
separate and distinct "MyClass.vb" file. Presumably, if I make any
changes to that class while I'm working in a Project, I will ONLY BE
ALTERING THE VERSION of "MyClass.vb" that is in *that particular
Project's folder system*.

I hope somebody will tell me I'm doing this wrong because, given what
I've stated above, this defeats the whole purpose of being able to
create single general-use Classes that will get improved over time but
will be commonly available to any Project I begin to create.

That said, what am I doing wrong here?

Thanks in advance for any help.

Nov 6 '07 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
2905
by: LP | last post by:
Hi, I have a site which runs on .Net technology. The site is already deployed and running. I need to change 1 file for some small enhancement. Please tell me, how can I compile that 1 file and...
2
13373
by: brazilnut52 | last post by:
I am going to outline the steps I go through to produce the problem. Hopefully this will help you understand the problem better I have created a simple COM DLL in .NET by using the COM class...
7
8823
by: dog | last post by:
I've seen plenty of articles on this topic but none of them have been able to solve my problem. I am working with an Access 97 database on an NT4.0 machine, which has many Access reports. I...
8
4483
by: Ted Miller | last post by:
Hi folks, I'm looking at moving a large base of C++ code to .Net under tight time constraints. The code runs in mission-critical environments, and I am extremely concerned about the loader lock...
10
2293
by: Tim Mulholland | last post by:
My company is about to begin working on an ASP.NET application. There are going to be two primary developers working on this project. It will be a fairly deep project (lots of lines of code) but...
15
26487
by: Amit D.Shinde | last post by:
I am adding a new picturebox control at runtime on the form How can i create click event handler for this control Amit Shinde
3
14853
by: Amjad | last post by:
Hi, I just wrote a test Windows Service that creates a text file on startup (please see my code below). The file is never created. Protected Overrides Sub OnStart(ByVal args() As String) Dim...
11
8278
by: Amadrias | last post by:
Hi, In one of my current projects, I am willing to create a secure zone such as Acronis does in its application to store some confidential information only accessible to the current machine...
5
6732
by: Michael Sperlle | last post by:
Is it possible? Bestcrypt can supposedly be set up on linux, but it seems to need changes to the kernel before it can be installed, and I have no intention of going through whatever hell that would...
0
7144
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7356
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7427
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
7085
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
4741
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3214
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1577
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
1
785
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
449
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.