What's hot ? (and I mean really ...) - scroll down for more
1).  Code Templating - advanced usage of delegates & generics: my slides & demos are available for download! CodeProject article is also available.

2).  My series "TDD in the eyes of a simpleminded" is in progress(including code!): preface, part1, part2, Q&A 1, Manual Stub .vs. Mock Stub

3).  TDD Workshop: SeeCompass v0.1 and v0.2 are out.
# Sunday, July 24, 2005

I'm struggling with myself about what's the best way now to create an automated build mechanism for my dotNET project. I read a lot during the last weekend about using Nant and Nant Contrib and I've managed to pull something off quite easily. * I'll upload the build file and my remarks about the process as soon as I'll finish (Can't wait ah ? ;-)).

I saw that Microsoft shipped their automated tool - MSBuild - with VS.NET 2005 (beta 2); But in order to make use of MSBuild in my v1.1 .NET framework, I'll need to do some DIRTY hacks which I don't seem to like in this case. You ask yourself why ?

1. This is a beta version, meaning the bugs will be all over me !

2. I personally think that using the beta version of any program in my Production environment is a big risk, too big in my opinion.

3. Let's say that I found a bug and I need to get it fixed; MS will cry that this version isn't supported in v1.1 framework (dah! that's why I did my dirty hack) and in any case it's only a beta and I need to wait for the final release - and they'll be right ! (damn, I hate when it happens).

4. NAnt is an old(sorry... but I mean it as a compliment) open source freeware - there are less bugs and I can always dig in and make the required changes !

Therefore, I'm thinking of staying with NAnt just until the final release of MSBuild will be available.

What do you think ?

Posted by Oren Ellenbogen 
24/07/2005 08:01, Israel time UTC+03:00,     Comments [0]  | 
# Friday, July 22, 2005

I'm always trying to make my project deployment as easy as possible.
 
One of the "problems" I've encountered is keeping my solution structure, that is:
- MySolutionDirectory
      - MyWebProject
      - MyBusinessLayerClassLibrary
      - MyDataAccessLayerClassLibrary
      - MyEntitiesClassLibrary
      - etc.
 
This is hard to do, especially when the "Add Web Project" creates a virtual directory in
my wwwroot directory by default which breaks my desired structure.
 
When I want to initialize the Solution or to pull the entire solution from the
VSS (e.g - on a new programmer station) I need to take these steps beforehand -
  1. Create the directory [solution-path]\[web-project\webservice name]
  2. Go to my IIS and add the required virtual directory which will redirect to step 1 path.
Otherwise, the VS.NET will create the web folders in my wwwroot automatically, which will again break my preferred structure.
In addition, in some of my solutions, I have more than 1 web project\webservice and repeating these steps can get very annoying.
 
So, after reading about IIS API, I've created an IIS helper utility for creating virtual directories by
demand in one-click EXE.
 
The configuration file is quite simple:

<VDSettings>
    <Directories>
        <Directory>
            <DirectoryPath>C:\Projects\MySolution\MyWebProject</DirectoryPath>
            <VirtualDirectoryName>MyWebProject</VirtualDirectoryName>

        </Directory>
        <Directory>
            <DirectoryPath>C:\Projects\MySolution\MyWebShareProject</DirectoryPath>
            <VirtualDirectoryName>MyWebShareProject</VirtualDirectoryName>
            <CreateUnder>MyWebShareProject</CreateUnder>
        </Directory>
    </Directories>
</VDSettings>

This sample demonstrates how to add "MyWebProject" Virtual Directory and create another
Virtual Directory, under "MyWebProject", named "MyWebShareProject".
 
* 2 Notes:
  1. You can create the virtual directory under a WebSite by using "WebSiteName" element under the "Directory" element.
  2. If the "DirectoryPath" doesn't exist - the utility will create it before setting the Virtual Directory path.
 
Now, when a co-worker in my company is trying to deploy my solution on his station, all he needs to
do is to run VDCreator.exe and he can continue the deployment via VS.NET -> "Open From Source Control..." option.
 
That's what I call "child's play" deployment.
 
The files:
VDCreator bin1.zip (4.62 KB)  (EXE & config file only)
VDCreator Source.zip (9.64 KB) (Source files included)
Posted by Oren Ellenbogen 
22/07/2005 12:38, Israel time UTC+03:00,     Comments [1]  | 
# Wednesday, July 20, 2005

After logging in, be sure to visit all the options under Configuration in the Admin Menu Bar above. There are 26 themes to choose from, and you can also create your own.

 

Posted by Oren Ellenbogen 
20/07/2005 09:00, Israel time UTC+03:00,     Comments [0]  | 
# Sunday, July 17, 2005

My friend Moran sent me a great link which will improve your vocabulary for sure.
 
Come on, give it a try.
 
Posted by Oren Ellenbogen 
17/07/2005 10:07, Israel time UTC+03:00,     Comments [0]  | 

Add a new Solution and Projects to the VSS:
 
DONT -
Count on the VS.NET => "Add Solution to Source Control..." to add your solution
and projects to the VSS.
It will create such a mess in the VSS, a mess you'll find difficult to clean up later on, that you'll be
sorry for the moment you've chosen this option.
In addition, it will not give the desired (and recommended) structure:
 
MySolution
   - MyWebProject
   - MyClassLibrary1
   - MyClassLibrary2
   - ...
 
 
DO -
Follow the steps in this great post. I truly believe this link is a MUST
for every developer who's working with VS.NET and VSS on a daily basis.
 
I hope this will help you all...
 
 
 
 
.NET | VSS
Posted by Oren Ellenbogen 
17/07/2005 09:42, Israel time UTC+03:00,     Comments [2]  | 
# Saturday, July 16, 2005

I'm one of those guys who likes to use shortcuts for saving myself the honor of
remembering the path of every single program I use...
 
 
Problem
 
So here is my every day scenario (tell me if it sounds familiar) -
I'm looking for "Internet Information Services" in order to customize my Virtual Directory.
I'm starting to look at my "Programs" menu, but damn, I have only 3 programs there !
Oh yes, I need to click this ugly arrow.JPG button to view all the programs.
OK, done that, now I'm searching for my Administrative Tools menu, but I can't seem to find it.
Yes, I remember, I need to check "Display Administrative tools" in order to see this, SHI$ !
Finally, I'm able to view this menu and here I go, mission completed...
 
I bet that this case is quite familiar to you as well; So I've added the IIS shortcut to my taskbar to shorten this process a little.
 
The main problem is that my taskbar needs place, place I prefer to "waste" on my VS.NET instead
of 3-4 lines of programs shortcuts.
In addition, I don't like to leave the keyboard and messing around with the mouse (sounds dirty, I know, let it go) !
 
 
Solution
 
I'm glad to introduce to you - SlickRun !!
This devil has a "magic keywords" mechanism which is absolutely brilliant !
In short, every magic keyword is a shortcut - to a site, to a document, to a program, ANYTHING !
 
Here are some shortcuts which I'm using for my every day work:
ggl [your search sentence here] - search in google.
iis - open Internet Information Services.
vss - well, need I say more ?
cs\vsnet - open vs.net
events - open the event viewer.
codesmith - open CodeSmith studio.
n2 - open notepad2.
msdn - open my latest version of MSDN.
regulator - open Roy Osherove's Regulator.
ie - open internet explorer window.
mssql - open SqlServer 2000 Enterprise Manager.
reflactor - open Lut's Reflector tool which I love (a MUST tool when working with CodeSmith 2.6)
lnbogen - opens my site ! COOL !
[myprojectname] - open the directory of my project (it's much faster than writing Run->c:\path-to-my-project\ & Enter).
[company documentation] - the main directory which keeps your company[->application->] customer requests, application structure, code guidelines and every other thing you think is "every day" search program\directory\document etc.
[projecttodo] - my personal TODO.xls file (for every project).
 
Here is my taskbar (some of it anyway):
taskbar.gif
 
All you have to do is to create a magic keyword and with a single Ctrl+Q and your magic keyword - your shortcut is running. 
 
The greatest thing is that my hands don't leave the keyboard, which I find a lot faster
than moving the mouse, clicking on the keyboard, moving the mouse again, clicking the keyboard etc.
 
I can hear you till here - "this is a nice feature but certainly not a big time saver".
Let me refresh your memory; Try to count the number of times a day your hands leave the
keyboard and wasting time searching this or that application\document and multiply this number by 15.
You'll get a good evaluation of the number of seconds you're wasting 
every day for SEARCHING instead of DOING,
on trying to REMEMBER paths instead of being FOCUSED on the "real" work.
 
Even more - you can export\import your shortcuts, and share these definitions between
your home\work computers or even
between your teammates (assuming the installation paths are the same, of course).
This will keep your "easygoing" work environment in each computer you'll use.
 
I'm hooked, tell me if you are also (share your every day magic keywords with us!).
 
Posted by Oren Ellenbogen 
16/07/2005 09:25, Israel time UTC+03:00,     Comments [0]  |