Archives

Archives / 2003
  • New Article: Getting Started with ObjectSpaces

    It seems that not everybody has a day-off; the MSDN Belux team published my new article: Getting Started with ObjectSpaces, thanks Tom! This article starts with a description of what Object/Relational Mapping tools are, or at least I tried to explain it as clearly as possible. After that the article provides a step-by-step guide to a first ObjectSpaces article using the Mapper Utility. Topics like Spanning, Delay Loading, OPath are explained too. At the end there are some intresting links regarding ObjectSpaces, I'll post them here:

  • Fun with InfoPath: Dynamically Populate a List by Using a Webservice with a Parameter

    Some time ago I started to explore InfoPath, so far it was a pleasant journey. Everbody (including myself) seems to be requesting an user-control version of InfoPath so you can have InfoPath forms in your own Smart Client applications. This would be really great, top of the bill would be integration in Visual Studio.NET, but maybe that's a little bit too wishfull-thinking. Another nice feature would be a free version of InfoPath, without the functionality to create and edit forms. Like there is a free Acrobat Reader and a commercial Acrobat Writer. Microsoft says it's hearing these requests, but has anyone already an idea if these features will be available?

  • Best Wishes

    Now that ScottW has updated the .Text blog engine, it’s possible to post stuff that doesn’t appear in the weblogs.asp.net main feed. So I can post some more personal things, or things that are only appropriate for Belgian people (who all check the Belgian .NET Bloggers Aggregated Feed of course :-).

  • Having some fun with Sharepoint!

    I've been exploring for some time now Windows Sharepoint Services and I'm really getting excited about it! After seeing some demos and presentations about this product I gave it a try. Actually it's quite impressive what you get out-of-the-box. In my opinion one of the great things is that once a user has it's own workspace or team site, he/she can control what will be on his/her site. Not only which Webparts are on the site, but even he/she can create subsites beneath his/her workspace, for example for meetings, documents, ... And this is possible without any intervention of an IT-guy. Life will be great! :-)

  • Consuming Webservices over HTTPS (SSL)

    When Webservices are used, a common concern is security: SOAP messages are transferred in plain text over the network, so anyone with a sniffer could intercept the SOAP message and read it. In my opinion this could happen also to binary data, but probably it requires a little bit more hacker skills. So a solution is to use HTTPS (SSL) instead of HTTP, so the communication is encrypted. To accomplish this, you need to get and install a certificate (issued by a Certificate Authority) on your webserver. In a production environment you would buy a certificate from Verisign or another well known CA, or you would install your own CA, which is a component of Windows Server. If you only want to play with HTTPS, SSL and certificates or your project is in the development phase, you can also generate a test certificate using the MakeCert.exe tool (included in the .NET Framework SDK). After that you have to add this certificate to a website in IIS, and set a port which HTTPS should use.

  • More on Generics in .NET

    Last week, I blogged about my experiences with generics in C# and VB.NET. The focus was on applying multiple constraints for which the syntax in C# was well documented. But the syntax in VB.NET was not that easy to find, but I “discovered” it after a little bit of searching. Anyway read more about this topic here.

  • Organising Your Knowledge: Code Library for .NET

    Do you know this feeling: you're working and while coding you find a really cool code snippet. Or you are surfing the web and you find an interesting article, but way too long to read at that point. Or you're browsing through posts of weblogs you read, and there are some “must-remember” ones. You want to remember all of this valuable information, so you can go look for it when you really need it (or have time to catch up). But my personal internal memory is rather limited and cannot be expanded, so it's impossible to remember the location or contents of everything. Some time ago I started looking for a tool that could capture all this information and store it in a database making it easily searchable. For some time now, I'm using Code Library for .NET: a free tool to store all sorts of information (articles, links, code snippets, pictures, ...). It's available both for Access databases and SQL Server (or MSDE), and it has a really nice user interface.

  • Advanced Generics in VB.NET: More than one Constraint

    In one of my previous posts I tried generics both in VB.NET and C#, it turned out both languages support generics the same way. Ofcourse there is the syntax difference between them, and at this time C# has Intellisense that supports generics better, but I'm pretty sure the VB.NET team will catch up. Tonight I explored generics a little bit more; it's possible to add constraints to the generic type. By doing so, you are sure only instances can be created for the generic type, that support for example an interface you want it to. Another possibility is a constraint so the generic types must inherit from a specific base type. Let's say you have a base Entity class, from which your business entity classes inherit from, and a Customer entity class:
    Public Class Entity
        Private _id As Long

  • A First Look at AST.NET V2 (BENUG Session): a relief (PMD Pattern & DataSources)!

    Today I attended a BENUG session about ASP.NET V2 by Michiel van Otegem. Michiel put a lot of topics into his presentation and demos, so the a lot of cool stuff was briefly explained and showed. I was amazed how much new functionality was already available in this alpha release. My intrested went especially to the part when databinding comes into play. One demo showed how easy it was to drop a SQL Server table on a WebForm to create an editable grid. That's cool for a demo, but this is quite ugly for a production application: no layers, direct db access from the UI, ... Luckily there are several DataSources that can be used to do databinding, including a DataSource for Webservices and Objects. Even if they were not available it wouldn't be a problem because Whidbey used the Provider Model Design Pattern, so there is an IDataSource (don't remember the exact name) interface. You can create your own DataSource class by implementing this interface. Great!

  • DotNetNuke News Module Enhancement: limiting the number of news items

    The last few days I toyed a little bit with the DotNetNuke open source portal system. I know this is not SharePoint, but it allows to quickly setup good looking website that can easily be maintained by non-technical people.  Although changing the layout (e.g. colors) of the site, especially the top banner with the menu, is quite hard in the beginning. I had to dive into the code to accomplish what I wanted to do. But once you get to know how the portal is designed, altering just anything is done in a second.

  • Virtual PC 2004 on MSDN Subscriber Downloads

    Microsoft Virtual PC 2004 can be downloaded from the MSDN Subscriber Downloads. For those of you unfamiliar with VPC; Microsoft bought the technology from Connectix that allows you to host several virtual PC's on a single machine. Each virtual PC lives in its own isolated envirionment, and is physically only a single file of the host machine. To communicate with your Virtual PC's you can use either shared folders or (virtal) network connections. You can even access your Virtual PC's from anywhere in your network! This piece of software is great for software developers; you always have a clean machine to try something out. I keep a freshly installed Windows XP on my HD, and ever time I need to try something I copy that image. No more screwing up of your host machine.

  • Longhorn PDC Preview Available on MSDN Subscriber Downloads

    Ok, for all of us who didn't attend the PDC (and have a MSDN Subscription), the Longhorn PDC Preview can be downloaded from the MSDN Subscriber Downloads! This is nice, but I would be happier if Whidbey could be downloaded. Visual Studio “Whidbey” referenced in the instructions is not available from MSDN Subscriber Downloads, but is available by request from MSDN customer service.

  • Open letter to MS Product Feeback about Webcasts and Office Livemeeting

    In one of my previous posts I mentioned Microsoft Webcasts, where a lot of sessions can be watched. Recently they switched from Interwise software to Microsoft Livemeeting. But now it's not possible anymore to download the webcasts to view them offline. If you've read my previous post, you know that I love listening to technincal sessions while I'm driving to work. So I decided to make a suggestion for the Microsoft Product Feedback Team. The contents of my message are shown below and I'll keep you updated. I hope I've chosen the right channel to submit my opinion, if you know better places to do so, please let me know.

  • Hippo.NET Build Tool Version 1.3.0 Released

    There is a new version of the open source Hippo.NET Build Tool available to download, which addresses some bugs and introduces multiple project support. I would like to welcome Dave Ehrlich as a Developer, due to his input the 1.3.0 Release was possible. Features that will be worked on for a next version:

  • New Article: Extending the DataGrid using CodeDom

    A new article that I wrote is published on the MSDN Belux site. It's about how to extend the DataGrid in the Windows.Forms namespace by adding a custom DataGridColumnStyle to it. Just creating the ColumnStyle is not that difficult, but when you want full design-time support for that column (e.g. listing it in the dropdown when adding ColumnStyles to a TableStyle), things get a little bit complicated. This article shows how to accomplish this and illustrates it with an example. The example is the ExtendedDataGrid that has a new ColumnStyle; the DataGridObjectColumn. This column can be used to evaluate expressions entered at design-time and displaying the results in the DataGrid. For example it's possible to have a column in your grid that evaluates price * (vat/100)without having to add another property to your collection or a calculated column to the your DataSet. The trick is to compile the expression that is stored as a string, using CodeDom. This technique is explained as well in the article.

  • Watching Technical Session on a Pocket PC

    Recently I discovered (thx Faan) a great way to fill up some useless time, like driving to my work: listening to technical sessions on my Pocket PC. Today a lot of great resources are available that can be downloaded and saved on a Pocket PC to watch while you're on the road. Even sessions with video can be saved since large memory cards (+128 MB) are not that expensive. Here is a list of resources that I know, please let me know if you know others:

  • Intresting stuff: Skype & C# HandleWhiteSpace Add-In

    Skype
    What is Skype? “Skype is the next phenomenon from the people who brought you KaZaA. Just like KaZaA, Skype uses P2P (peer-to-peer) technology to connect you to other users – not to share files this time, but to talk for free with your friends.” Ok, big deal you could say, we already have Messenger. But I recently had some problems making voice connections to family with Messenger. Even when they were using one of the most recent ADSL Routers, with UPnP enabled, I couldn't connect. So I gave Skype a try and I must say I was amazed; not only the sound quality is in my opinion even better than Messenger, but Skype could make connections to pc's behind firewalls and/or routers. Installation and account creation is very easy, connections are made within a second. Ofcourse they have not (yet?) the huge user base like Messenger, and their focus is on voice communications, but I keep this little program so I can voice chat with people to Messenger can not connect.

  • Being flexible: CodeDom + Reflection = Killer Combo

    Component developers have to make decisions all the time about how to flexible their components need to be. They need to find the balance between flexibility and development duration: if they want to increase the flexibility, they probably need to spend more development time. How to implement the needed flexibility depends on the situation. In some cases it is needed that the components must execute code that will be written by developers that actually use these components, so that code is not yet available while designing the component. In other cases it may be required something changes depending on a setting, for example how Customers are displayed (first name + last name, last name + initial, …). Providing this kind of flexibility in your components can require a rather complex model to be able to determine what the ToString method of the Customer object needs to return. But this kind of flexibility could quite easy be accomplished if you only could put some code in a String, and let this code be evaluated by your component. Of course you’d want to avoid writing your own parser for such a String at all times, so what could be of any help? CodeDom and Reflection can be used for solving this kind of problems.

  • MSDN Belux Site Update

    Tom and Gerd have updated the MSDN Belux site. They do this every week, but this time they have introduced some nice features (see Tom's post). There is a page about how you can participate in the Belux MSDN Community, so every developer in the Belux (Belgium and Luxembourg) should take a look. A list of bloggers in the Belux is added too.

  • Edit and Continue?

    Paul Vick (technical lead of VB.NET)  has posted a nice entry about the edit and continue feature that will be available in the next version of VB.NET. He discusses the danger of introducing this advanced feature, for developers that are not so experienced. In my opinion, edit and continue is abused sometimes be less experienced developers and maybe even by experienced developers. But I think it can be very useful too, if you use it wisely! Paul uses the methaphore of cars to explain why he thinks this feature should be included.

  • TypeFinder Macro and BuildFileBuilder on the move...

    Update: The original url's work again! Due to an unexpected move of the server hosting the TypeFinder macro and the BuildFileBuilder site, the original url's do not work at this moment. But you can reach them by using the new url's:

  • Unofficial blogs.gotdotnet.com main feed!

    <quote>
    Well rather then complain about the lack of a main feed for http://blogs.gotdotnet.com/ I decided to code up a little app to create a feed.  The current feed only includes the blogs running BlogX so guys like Don Box are currently not included.  I'll write more about how I created the main feed as well as release the source for the feed creator in a later post.  For the time being point your aggregators over to http://www.emxtechnologies.com/gotdotnet-blogs/mainfeed.xml and let me know what you think!
    </quote>

  • Learning 24/7...

    The people that probably know the most are also the ones trying hardest to learn.

  • Extending Intellisense: TypeFinder Macro

    Namespaces in .NET are great! But how many times do you find yourself typing Private r As xmlreader, and then noticing that there is no Imports/using statement for the System.Xml Namespace? Then you would have to scroll to the top of your document and add the Imports/using statement by hand. Alternatively you could choose to add the namespace to your declaration: Private r As System.Xml.XmlReader. Since we are all developers, why not develop something to help developers with this tedious task of namespace lookups?

  • Remembering code snippets (eg. Global Error Handler)

    Today I was searching for a code snippet that I had used some time ago. But I couldn't find it! I knew I had used it before in a project, but ofcourse I hadn't the source code with me. I work on different locations (customer's office, office, home) on different machines (customer's pc, laptop, desktop) and I don't copy all my projects to each pc. My next thought was: “No problem, just use Google!”. But when you really want to find something, the chances are high that you can't remember the exact title of the article or website you've read (Murphy's law). So no luck with Google today. Finally I went home and looked up the snippet in my old project...

  • I'm back

    I'm back from my honeymoon to Thailand. It was an incredible holiday, we saw so many beautiful things and the people were so kind: I can recommend it to everyone!

  • Out of the office until the 4th of August (Honeymoon!)

    Last weekend (12th of July (thx Mike)), Nele and me had our mariage. It was an incredible day, with very good weather (not too hot), a lot of moments that I will never forget, and a lot of people that made our day so beautiful. I want to thank all of you who sent congratulations!

  • As many pc's as I can dream of...

    A few days ago I installed VMWare Workstation 4 on my PC.

    VMware Workstation is powerful virtual machine software for the desktop. Optimized for the power user, VMware Workstation runs multiple operating systems -- including Microsoft Windows, Linux, and Novell NetWare -- simultaneously on a single PC in fully networked, portable virtual machines. VMware Workstation provides more choice, greater flexibility, and more powerful functionality than any other virtual machine software in the marketplace today.

  • My MSDN Belux Article online!

    Today my article about Collections in .NET was published on the MSDN Belux site. The article is the first of two about the collection classes in the .NET Framework:
    <quote>
    When you lookup the System.Collections namespace in the MSDN Library, you will find over 10 different classes. Choosing the right one for using in your application can be hard. This article will provide an overview and give some guidelines for choosing the right collection. The next article in this series will focus on building custom strongly typed collections and applying advanced techniques on them, such as data binding and sorting.
    </quote>

  • NAnt BuildFile Builder Beta Version

    One of the complaints that I've received about using the Hippo.NET Build tool, is the fact that you manually have to write your own NAnt build file. So one of the features I want to implement in the next release of Hippo.NET, is either generating buildfiles on the fly, or providing  a tool to easily generate buildfiles based on the Visual Studio project file. That's why I've created the Hippo.NET BuildFile Builder (what's in a name ;-). On this site, you can generate NAnt buildfiles, based on a Visual Studio project file. You simply browse to your project file on your local harddisk and press the Generate button and a the contents of a NAnt buildfile are generated.

  • Extending Intellisense: Namespace lookup with a macro (bis)

    A few weeks ago, I posted a macro to improve the Intellisense of Visual Studio. This macro automates the lookup of namespaces (AddDirective methode). For example when you type "Dim r As XmlReader", you probably need to add the "Imports System.Xml" (or "using System.Xml;" in C#) statement to your code. This macro helps you by searching for the corresponding namespace and add it to your code automatically. Additional there is a macro function (AddNamespace method) that replaces "xmlreader" with "System.Xml.XmlReader", so it just adds the namespace in front of your type.

    Thanks to a tip of Yves Hanoulle, there is now one single function that adds the using/Imports directive for both VB.NET and C#.

    The macro works great if you assign a shortcut key to it, you can do that like this:

    • Enter or copy-and-paste the macro code in the Macro Editor of Visual Studio.
    • Choose in the Tools menu the Customize menu item.
    • Press the Keyboard button (below right).
    • In the list of the commands, find Macros.MyMacros.TypeFinder.AddDirective, and select it.
    • In the textbox "Press shortcut key(s)", press the key combination you want to use. (I use Ctrl+`)
    • Change the "Use new shortcut in:" value to "Text Editor"
    • Press the Assign button.
    Let me know if you have any remarks, problems, ... The complete source code of the macro is:

    Imports EnvDTE
    
    Imports System.Diagnostics
    Imports System

    Public Module TypeFinder
    Private Function SearchTypeInAssembly(ByVal typename As String _
    , ByVal ass As Reflection.Assembly)
    DTE.StatusBar.Text = "Searching for '" & typename & "' " & _
    ass.GetName.Name & "..."
    Dim t As Type
    For Each t In ass.GetTypes
    If t.Name.ToLower = typename Then
    Return t
    End If
    Next
    End Function
    Private Function SearchType(ByVal typename As String) As Type
    typename = typename.ToLower
    Dim projs As System.Array = DTE.ActiveSolutionProjects
    Dim ass As Reflection.Assembly = _
    Reflection.Assembly.LoadWithPartialName("mscorlib")
    Dim t As Type = SearchTypeInAssembly(typename, ass)
    If Not t Is Nothing Then Return t
    Dim proj As Project
    For Each proj In projs
    Dim o As VSLangProj.VSProject = proj.Object
    Dim ref As VSLangProj.Reference
    For Each ref In o.References
    ass = Reflection.Assembly.LoadFile(ref.Path)
    t = SearchTypeInAssembly(typename, ass)
    If Not t Is Nothing Then Return t
    Next
    Next
    DTE.StatusBar.Text = "Could not find type '" & typename & _
    "' in the referenced libraries. Make sure your cursor " & _
    "is right behind the text (without selection)!"
    DTE.StatusBar.Highlight(True)
    Return Nothing
    End Function
    Public Sub AddNamespace()
    Dim text As TextSelection = DTE.ActiveDocument.Selection
    text.WordLeft(True)
    Dim t As Type = SearchType(text.Text)
    If Not t Is Nothing Then
    text.Text = t.FullName
    text.EndOfLine()
    DTE.StatusBar.Text = "Ready"
    End If
    End Sub
    Public Sub AddDirective()
    Dim text As TextSelection = DTE.ActiveDocument.Selection
    text.WordLeft(True)
    Dim t As Type = SearchType(text.Text)
    If Not t Is Nothing Then
    Dim keyword, suffix As String
    Dim line As Integer = text.AnchorPoint.Line
    text.Text = t.Name
    text.StartOfDocument()
    Select Case DTE.ActiveDocument.Language
    Case "CSharp"
    keyword = "using"
    suffix = ";"
    Case "Basic"
    keyword = "Imports"
    suffix = String.Empty
    Case Else
    Throw New System.Exception("Invalid Language: " & _
    DTE.ActiveDocument.Language)
    End Select
    text.Insert(keyword & " " & t.Namespace & suffix & vbCrLf)
    text.MoveToLineAndOffset(line + 1, 1)
    text.EndOfLine()
    DTE.StatusBar.Text = "'" & keyword & " " & t.Namespace & _
    suffix & "' added to the document."
    DTE.StatusBar.Highlight(True)
    End If
    End Sub
    End Module




  • Extending Intellisense: Namespace lookup with a macro

    Namespaces in .NET are great! But how many times do you find yourself typing "Private r As xmlreader", and then noticing that there is no Imports/using statement for the System.Xml Namespace? Then you would have to scroll to the top of your document and add the Imports/using statement by hand. Alternatively you could choose to add the namespace to your declaration: "Private r As System.Xml.XmlReader". Since we are all developers, why not develop something to help developers with this tedious task of namespace lookups?

  • PowerToys going open source

    Yesterday I wrote something about the new PowerToys, and compared them to the other alternatives. I you read that post, you'll see the comments of Josh Ledgard of MS:
    Hi Jan.  I'm one of the guys at Microsoft who works on the Power Toys.  I wanted to let you know a little bit about the PowerToys effort.  I promise that we didn't work on these projects to displace third party tools.  I actually think that all of the commenting tools you mention have their plusses and minuses.  And at the moment some are more polished than the one our team released.  One of the motivations included giving people samples from Microsoft for extending the shell.  You can never have too many samples.  Another is that we just thought it would be a cool project to work on and provide a forum for other developers in the community to also work on.  Actually, we've been in contact with the writer of the VBXC tool you mentioned and he has recently joined our workspace project on gotdotnet that allows for other people to modify the code.  If your interested feel free to check out our workspaces.. http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=107870
    Thanks, 
     josh


    I think Josh is completly right: you can't have too many samples and it's a cool project to work on! And ofcourse they did not start these projects to kill similar third party tools. I hope my previous post wasn't misunderstood, because I was trying to say that I really like the initiative. And going open source to the GotDotNet workspaces only makes it better:

  • XML Comments in VB: PowerToys and "the others"

    Microsoft has released some PowerToys for Visual Studio.NET 2003, including a tool that enables XML comments in Visual Basic.NET: VB Commenter. XML comments were available for C# developers since VS.NET 2002, and I still do not understand why they did not implement them in VB. But anyway, the great (open source) community of (VB).NET, has produced several tools to enable XML comments in VB:

  • Remoting, Events and the 1.1 Framework

    This weekend I played with the Observer Pattern to create a system that could publish events to a central server. To this server, other applications could subscribe to receive this events. Because I wanted the system to be fast, I choose .NET Remoting as communication between the clients and the server.

  • Ingo talks about Webservices and Remoting

    Last night I went to a presentation of Ingo Rammer about Remoting vs. Webservices, in Brussels, organised by the Belgian .NET Usergroup (BENUG) and sponsored by Ineta. The first part of the presentation was about Webservices (the usual stuff), and the second part was about Remoting (which was the reason I think, that people wanted to see this presentation because Ingo is known as a Remoting guy). Ingo did a nice job explaining the Remoting basics: creating servers/clients, registering channels, client activated, ...

  • Little (off-topic) announcement...

    Hi all .NET-folks out there! Since I really feel like being a part of this great community, I would like to announce my marriage! Yes, I'm going to get married on the 12th of July with Nele. Ofcourse (as a software engineer I had to) I've made a website with some info about us. I really would appriciate if you guys and girls could sign the guestbook. Since the site is in Dutch, I think most of you don't understand al the topics, but if you are intrested, feel free to take a look. Anyway thanks in advance for your intrest and/or nice words!

  • Autocompletion in the command prompt!

    Roy Osherove posted a link to some cool Registry settings. One of them I found quite usefull: Enable AutoCompletion in Command Prompt. Once this setting is done, you can use the tab key for autocompleting while typing in the command prompt (cmd)! For example you type "cd c:\progr" (without return) and press the tab key, "progr" will be completed to "Program Files".

  • Eureka! SoapExtension problems solved!

    Maybe you've read my post about the problems I had while using a custom SoapExtension class. Thanks to an anonymous reaction, I found the sollution!! I was testing the webservice by using the default test page from Internet Explorer, but the testpage in IE uses the GET protocol, not the SOAP protocol. So there was nothing wrong with my code (I started believing I really sucked ;-), I only had to make a very simple test application. Thanks again to the person who submitted this tip!

  • Simple Comparer for sorting in VB.NET

    I don't know if something like this exists, or even is available in the .NET Framework itself, but I had to make a routine to sort a collection of objects, so I built a simple comparer class. The comparer class can be used like this:

    Dim customers As New ArrayList
    
    'Or you can use the Sort method of the strong typed collection,
    'inheriting from CollectionBase.

    customers.Sort(New SimpleComparer("Name"))
    'or
    customers.Sort(New SimpleComparer("Name", SortOrder.Descending))





    The complete code for SimpleComparer class is:
        Public Class SimpleComparer
    
    Implements IComparer

    Private _propertyToSort As String
    Private _sortOrder As SortOrder

    Public Sub New(ByVal propertyToSort As String)
    Me.new(propertyToSort, System.Windows.Forms.SortOrder.Ascending)
    End Sub

    Public Sub New(ByVal propertyToSort As String, ByVal sortOrder As SortOrder)
    MyBase.new()
    _propertyToSort = propertyToSort
    _sortOrder = sortOrder
    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
    Implements System.Collections.IComparer.Compare
    Dim prop As Reflection.PropertyInfo = x.GetType.GetProperty(Me.PropertyToSort)

    If Me.SortOrder = SortOrder.None OrElse prop.GetValue(x, Nothing) = _
    prop.GetValue(y, Nothing) Then
    Return 0
    Else
    If prop.GetValue(x, Nothing) > prop.GetValue(y, Nothing) Then
    If Me.SortOrder = System.Windows.Forms.SortOrder.Ascending Then
    Return 1
    Else
    Return -1
    End If
    Else
    If Me.SortOrder = System.Windows.Forms.SortOrder.Ascending Then
    Return -1
    Else
    Return 1
    End If
    End If
    End If
    End Function

    Public Property SortOrder() As SortOrder
    Get
    Return _sortOrder
    End Get
    Set(ByVal Value As SortOrder)
    _sortOrder = Value
    End Set
    End Property

    Public Property PropertyToSort() As String
    Get
    Return _propertyToSort
    End Get
    Set(ByVal Value As String)
    _propertyToSort = Value
    End Set
    End Property
    End Class


  • VB.NET Property code generation macro in VS.NET.

    A time ago, I read Duncan's post about macros in Visual Studio.NET. I altered a bit his macro to suit my needs. The macro lets you rapidly generate code for the properties of a class. For example when you type the following code for a class (Remark: The generated code has xml comments, but the formatting on this page does not show them.):

    Public Class Customer
    Private _name As String
    Private _telephone As String
    End Class


  • Hippo.NET Build Tool Released

    Hippo.NET is a tool for streamlining the build process of .NET projects in a team envirionment. It provides continuous integration by monitoring the shared Visual SourceSafe database and starting the build process when changes are detected. An important design goal is to provide a nice and easy-to-use user interface, to monitor builds and trigger the build process when needed.

  • Hippo.NET Sneak Preview available for download!

    Due to some requests, I've compiled a Sneak Preview version of Hippo.NET. Hippo.NET is a tool for streamlining the build process of .NET projects in a team envirionment. It provides continuous integration by monitoring the shared Visual SourceSafe database and starting the build process when changes are detected. An important design goal is to provide a nice and easy-to-use user interface, to monitor builds and trigger the build process when needed.

  • Announcing Hippo.NET

    Hippo.NET is an open source project for streamlining the build process of .NET projects in a team envirionment. It provides continuous integration by monitoring the shared Visual SourceSafe database and starting the build process when changes are detected. An important design goal is to provide a nice and easy-to-use user interface, to monitor builds and trigger the build process when needed. It can be compared by tools suchs as Draco.NET and Microsoft BuildIt.

  • The build tool choice

    Last week we installed the duo NAnt and Draco.NET on our development server to streamline the build process of our lates project. This duo works quite nice, it took me about five 'failed builds' to set up the references in my first build file, but once you're used to it, it's get better. ;-) Draco.NET works fine, but I can't get the client app. to work, so I can't trigger builds from my own machine. Since we've set Draco.NET to check each 60 seconds, I only have to wait a couple of minutes to get my freshly compiled assembly.

  • Bamboo.Prevalence - a .NET object prevalence engine

    Here you can find a .NET implementation of the object prevalence concept. It seems to be an O-R mapping concept, without using an relational database as back end. I've looked at it briefly and it seems the trick is that all the objects are serialized and saved to disk. I like the idea behind it, but my concern is the lack of high performance search capabilities (such as indexes in a rdbms). But, as I said, I haven't tried it... Maybe someone else has any experiences with it?

  • Future Features of .NET

    If you want to know what the future of .NET wil bring us (language-wise I mean), you should take a look at this site. The new thing called Generics, is described here. There is one topic that made me smile a little bit: Partial Types. With Partial Types your class source code can be stored in 2 different files.

  • Variable declaration inside of loops (VB.NET 2003)

    A nice language improvement in VB.NET 2003, is that you can declare variables inside a loop. For example, if I wanted to construct a For Each loop in VB.NET 2002 I would have to do it like this:
    Dim item As Customer
    For Each item In CustomerCollection
        ' Do Stuff
    Next