Monday, November 26, 2007

VS.Net 2008 Team Suite RTM Download

I've a MSDN Universal Subscription as a result of my company's Volume Licensing Agreement with Microsoft (MVLS).  Since I've been hearing that VS.Net 2008 has finally gone RTM and is available for download to MSDN subscribers, I decided to expend some bandwidth on downloading it.

Unfortunately, I couldn't find it anywhere.    The first link loudly proclaims that VS.Net 2008 is available on MSDN subscriptions.  It also states  - the red underlined line - that "All English Visual Studio 2008 Editions will be available from 'Top Downloads' below". 

But the Top Subscriber Downloads has only the Trial version. 


The only VS.Net 2008 available seems to be the professional version.  Number of  people seem to have downloaded it successfully.  No such luck for me :( 


I'm beginning to doubt if MSDN Universal Subscribers are eligible to receive VS.Net 2008 Team Suite or not.

Technorati Tags: , ,

Saturday, November 24, 2007

How to Generate RCW on the fly in your Nant Scripts

Have you ever tried to remember a research you've done couple of years ago and you're desperate to get your hands on the old code?  And the frustration of trying to remember what you did exactly, if you're unable to find or don't have access anymore to the source?

Well, I ran into one today:

Couple of years ago, I had to implement a build process for one of my projects.
One of the modules was a port from VB 6.0 (to VB.Net) and it was using MSXML2!

I wanted to generate the RCW on the fly for MSXML2.  Now, I want the solution to be generic enough to use on any project that uses interop.

I wrote a function:

<?xml version="1.0" encoding="utf-8"?>


<script language="C#" prefix="tlb">


        <import namespace="System" />

        <import namespace="System.Runtime.InteropServices" />





        <!-- Code Goes Here -->









Here's the CDATA Section.  Given here to preserve formatting:

[DllImport("oleaut32.dll", PreserveSig=false)]

private static extern void QueryPathOfRegTypeLib(ref Guid guid, ushort majorVer, ushort minorVer, uint lcid, [MarshalAs(UnmanagedType.BStr)] out string path);



public string GetTypeLibPath(string guid, ushort major, ushort minor, uint lcid)


    Guid actualGuid = new Guid(guid);

    string tlbName = null;




        QueryPathOfRegTypeLib(ref actualGuid, major, minor, lcid, out tlbName);


    catch (COMException e)


        //Typelib wasn't found - tlbimp will barf

        //when the compile happens, but we won't worry about it.

        Console.WriteLine("[find-path] " + "ERROR!!! " + e.Message);



    return tlbName.TrimEnd();




Now, wherever I wanted, I could use it thus:

<!-- Find out location of MSXML2 and create an interop assembly-->

<property name="com.typelib.fullpath"  value="${tlb::find-path('F5078F18-C551-11D3-89B9-0000F81FE221',3,0,0)}"/>



  Somehow the return value from the find-path function contains a character

  at the very end causing <tlbimp> to fail.  Removing the last character from

  the property as a workaround.     


<tlbimp typelib="${string::substring(com.typelib.fullpath,0, string::get-length(com.typelib.fullpath)-1)}"



The function I was trying to remember was the API call: QueryPathOfRegTypeLib.
Oooff... (sigh of relief).

Now that I've blogged it, I am sure I will find it next time :)


Technorati Tags: , ,

Monday, November 05, 2007

Core Values

I would like to work for a Software company that:

  • Values Technical excellence
  • Believes in being the best at what it does: Producing Quality Software
    • Good design produces a quality product that reduces rework later
    • Believes that software must be designed for change
  • Believes Software Development is fun!  And strives to keep it so.
  • Encourages a product mindset
    • A product mindset is one where even a small project of 3 months duration is developed as though it were a marketable product.
  • Believes fostering trust with the client
  • Emphasizes on automation to keep the process overhead to a minimum
  • Encourages people to learn constantly and rewards them for their knowledge.
  • Maintains a flat hierarchy
  • Emphasizes Agile project management practices

Somehow, I've come to think all other bullets can just be restated with a single sentence:  Agile must be the way of live in my dream company :)