|
Hi All,
Could anybody point me in the right direction of how to create a class library using C#.NET 2002 standard edition? As it does not have a project template for creating a class library I am finding it difficult to find the right incantation. Any help would be appreciated? (I am assuming this is actually possible.... )
Cheers,
Ewan.
|
|
|
|
|
Step 1) Run notepad.
Step 2) Type: class MyLibrary { public void Foo() {} }
Step 3) Save file as "MyLibrary.cs"
Step 4) Compile with: csc /t:library MyLibrary.cs
Presto, you have a class library in MyLibrary.dll, add it as a reference, call it from anywhere, all that good stuff.
(I'm sure someone else will come along and tell you which buttons to push and checkboxes to change.)
-Blake
|
|
|
|
|
Thanks,
Not really answering the question I asked tho: How do I create it in VS.NET 2002. Not notepad? I.e. where is the setting where I tell the IDE that I want the command line compile option /t:library
Thanks,
Ewan.
|
|
|
|
|
ewan wrote:
Not really answering the question I asked tho
I know. I'm one of those crotchety old farts who thinks relying on templates and wizards and such weakens the mind.
The "VS.NET IDE issues" forum is five lines down. I don't tease people there.
-Blake
|
|
|
|
|
Hehehe
No problem. Can't say I blame you Am very new to .NET environment having done lots in VC++ 6. Can't say the transition is going well
Ta
Ewan.
|
|
|
|
|
While I'm with Blake on this one, I will tell you that C# projects actually come in two varieties: ASP.NET and not. For the "not", you can easily change the target type by right-clicking on the project and selecting "Class Library".
Don't forget to the read the documentation and explore a little, otherwise you'll never amount to anything more than a code monkey. Would you spends thousands of $$$ at a university without cracking a book, or take-off in a brand new jet without reading the product instructions and features? Why do so with a framework or IDE (remember, VS.NET is just a development environment).
And exploration is also important - if people didn't explore all 6 billion of us would be stuck around Iran and Iraq were humanity apparently started and we be as dumb as al Qa...er, rocks!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
I think you are slightly missing the point. Personally when I approach a problem and find a stumbling block I do the following:
1) Read the documentation.
2) If the answer isn't forthcoming (as it really isn't in this case) (oh and your answer is plain wrong btw for the standard edition) ask someone who likely has far more knowledge than I will every have on the subject.
Result.... almost immediate answer (plus obligatory flaming).
I've coded in c++ for many years and while I am certainly a code monkey at heart I would like to think I do amount to something . Just because I'm trying to expand my knowledge in the form of c# shouldn't mean I have to read the entire MSDN before I'm entitled to ask questions.
Ewan.
|
|
|
|
|
Sorry, "right-click on the project, select properties, and select "Class Library". Should be obvious since it's consistent with everything else in Windows, and I was able to find it in the MSDN Library in under a minute by following a natural chain of topics, like ".NET Development"/"Visual Studio .NET"/"Product Documentation"/ etc.
Besides, "coding" does not make a developer. Good research skills are important. And while forums like this are here to help, even exploration of the UI at the very least should've uncovered this. You're right, sometimes the documentation isn't so obvious, but by exploring you certainly learn a lot more. And while some will read the MSDN Library thoroughly, at least exploring the topics covered is better than not - especially the .NET Class Library reference.
So, do you get my point?
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Blake Coverett wrote:
crotchety old farts who thinks relying on templates and wizards and such weakens the mind
My take is that you should do it the "hard way" at least a few times so that you know what's going on under the surface, and then save yourself some time by doing it the easy way.
|
|
|
|
|
I agree. Or if you don't try the hard way once, at least try and get some understanding of what the Wizard has done.
Kevin
|
|
|
|
|
1) Create a new Windows Application Project
2) Right-click the project in Solution Explorer
3) Select Properties
4) In General -> Change Output Type from Web Application to Class Library
This will build a DLL. Now you can remove the Form1.cs if desired, and add classes.
Edit: Hmm... didn't see the dozen responses before I replied. Oh well.
|
|
|
|
|
hi,
i want to know, how can i inactivate the Focus of a button?
by clicking on the button, it does not get the focus.
does any WM_message exist witch will be send wenn a component gets the focus?
|
|
|
|
|
|
very funny
|
|
|
|
|
Hello!
I have a windows forms application and when I double click it I don't want
the Command window(cmd.exe) show.
How do I do it ?
regards.
|
|
|
|
|
If i understood your problem well, you can solve it by:
1. Open Properties Pages of you project
2. Common Properites/General/Output Type set to Windows Application rather than Console Application
Hope this helps
ARK
|
|
|
|
|
Hi,
i have got some wired problem, for which i can not find the easy answer since i am new to c#. I wrote and application that uses Direct3D to render the mechanism. To drive the mechanism i use complex 6D numerical algorithm that uses System.Math to get solutions. Both graphical and mathematical parts work fine seperately. However when i want to run graphical interface and numerical engine in paralel in a single application i get the following problem(note if i compile two seperate aplications they run fine):
The System.Math starts to behave in a wired way, round function does not work well (i.e. if i try to round to two deciml places, it rounds to 10, or if i try to roung number 999 it rounds it to 1).
I tired to backtrack what causes the problem, and apaprently the probelm comes once create the d3d device is executed:
device = new Device(graphicsSettings.AdapterOrdinal, graphicsSettings.DevType, windowed ? RenderTarget : this , createFlags, presentParams);
To write Direct3D engine, i directly adopted example 'Enhanced Mesh' provided by DirectXSDK.
I think something happens to memory or to recources, but not sure about it. Anyone has any ideas on how to solve this sort of problem?? Anything would be a value to me. IF someone is willing to look at the code files let me know by email to ark@centras.lt, and i will send them to you.
Thanks
ARK
|
|
|
|
|
can someone pls tell me IN WHAT cases do we need static constructors?
tks a lot for the help
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
To initialize static fields.
-Blake
|
|
|
|
|
say if i have 1 static var in my class and one non-static one...
so do i need 2 constructors? a static one and a non static one?
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
Yup.
Though C# does have a convenient feature of creating constructors for you based on variable initialization statements. This is particularly handy with static constructors. For example, the following two pieces of code are almost equivalent.
class Foo {
static int Bar = 42;
}
class Foo {
static int Bar;
static Foo() {
Bar = 42;
}
}
Aside from being less typing, it turns out that the first syntax is a little more efficient as well. The reason why is complicated and I won't try to cover it here, but if you are curious you can google for 'beforefieldinit'.
-Blake
|
|
|
|
|
one last question....
lets say i have a class
class Foo<br />
{<br />
static int iFoo<br />
int iBar<br />
}
in the class above how should my constructor look like??
should i have one constructor??
or two? one static constructor and one non static???
tks...
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|
|
You can't do it with one constructor, but beyond that there's no one right answer, it depends how you are calculating the value you want to initialize those fields with. If the values are simple expressions, then don't write explicit constructors at all, just do:
class Foo {
static int foo = Date.Now.Year;
int bar = (int)(Random.Sample() * 100);
} Only write a static constructor if you need to execute logic that doesn't fit in an expression like that, say loading a static lookup table out of your config file or database.
Write instance constructors either, if you need more complicated code like above, or if you want to pass parameters that control the initialization.
On an unrelated note, don't use hungarian notation with C#. Have a look at Design Guidelines for Class Library Developers[^] on MSDN for that and other important style tips for C# and .NET.
-Blake
|
|
|
|
|
Blake is right, it all depends. The important thing to keep in mind is that one field is Type-based (the static field), and one field is instance-based. That static field value will be the same for all instances of the class. That instance field value will be different for each instance.
The ubiquitous example is the Company and Employee s example. While the Company class may keep a count of Employee objects added or removed from it, another way to solve this is to have the Employee Type keep track of it:
public class Employee
{
private static int count = 0;
public Employee()
{
count++;
}
~Employee()
{
count--;
}
} While this is a very basic and impractical solution (because it doesn't allow for multiple companies to have different employees), it is just an example.
I use this a lot to initialize caches for objects in the same context, such as a download manager that keeps a cache of files. Different instances of that download manager (actually, it's a singleton now, but the following still applies...) share the same cache, just like different instances of Internet Explorer (actually, anything that uses URL monikers or the like) share the same cache on the filesystem (though it's not "initialized" per se). I do this in the static constructor to make sure that it is initialized before the class.
So, basically, the order for instantiating of two objects is done like so:- Static constructor (IL: .cctor)
- Instance constructor (IL: .ctor)
- Instance constructor (IL: .ctor)
- Destructor (IL: Finalize)
- Destructor (IL: Finalize)
Note, there is no "static destructor". Even if all instances of the Type have been disposed and garbage collected, the static field still retains it's value until the Type is unloaded (which is done when its assembly is unloaded, which is done when the AppDomain that assembly is bound to unloads).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
hi...i've always wanted to know what the difference between stack and heap??
when we create a class in C#, say for eg. a class TinCan
TinCan t1;
i came to know that it is created on stack!
Q : Wat is stack? why is it created on statck and not on heap?
then lets say i initiate my reference by creating an object
t1 = new TinCan;
i came to know that this allocates space in memory on the Heap!
Q :What is a heap? why is it now created on heap instead of stack?
Q : Why does C# create the reference on stack and objects on heap?
Q : Whats the difference between stack and heap?
tks a lot for any help!
Have a Super Blessed Day!
-------------------------
For God has not given us a spirit of fear, but of power and of love and of a sound mind.
2 Timothy 1:7
"For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."
John 3:16
"Therefore you also be ready, for the Son of Man is coming at an hour you do not expet."
Luke 12:40
|
|
|
|