Mads Nissen

backlog on sharepoint, crm, office, .net development, architecture and more..

  • Puzzlepart with openness as core value

    The development of Puzzlepart getting very concrete. In the past few months I've been working very hard on getting the entire business concept just right. I've put a lot of emphasis on talking to just about every possible stakeholder in a potential Puzzlepart ecosystem; potential investors, technology analysts, financial analysts, developers, architects, potential customers, and our immediate community. Based on the feedback some of the core concepts has changed and evolved several times over the past few months.

  • Setting up a robust infrastructure: Are Cisco stuck in the 90'ies?

    Beeing an entrepreneur really exposes you for all levels of operational handywork. The one day I'm putting the finishing touch on the businessplan and the budgets, and the next I'm stuck in the server room trying to get the firewall running. Now, I wouldn't normally blog about infrastructure. But this topic also applies to general attitudes in the software industry, and provides an example of what I see as customer hostile behaviour which causes losses for all parties in the value chain. So; if you're up for a little rant, read on.

  • GameCamp Oslo - Inspirational Boosting

    Yesterday I left my dayjob early to go with my brother Marius to the Oslo GameCamp at my former school NITH. I really wanted to get a better understanding of game programming and my brother (who is 18) is considering getting more into programming so we both had good reasons to be there.

  • Building Web Application Projects with CCNET

    One of the things about Visual Studio 2005 I disapprove of the most is the way features related to your project are stuffed into the local devmachine environment under Program Files. Among other things the coming GAT (guidance automation toolkits) work this way, and so does the new bootstrapper packages. There are many drawbacks to this strategy, and they all become apparent when you decide to do distributed development against a common build environment.

    So, when you're starting up with your Web Application Project (WAP) and install the MSI plugin for Visual Studio 2005 you pretty much know that this will break on the buildserver, or your fellow developers machine if the same MSI is not installed on that client. Most likely the other client (CCNET or another dev) will get a taste of this error:

    error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

    Of course you could select the dictator strategy and enforce distributed installation of the WAP MSI installer, but I tend to prefer to keep my project completely packaged.

    First copy the targets file to your solution directory and add it as a solution item so it is included in sourcecontrol. Then unload your WAP by right clicking in the Solution Explorer and then select "Edit MyWAP.csproj" to edit the MSBuild markup. Change this line:

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" />

    To this:

    <Import Project="$(SolutionDir)\Microsoft.WebApplication.targets" />


    Now save your csproj file and reload the project by right-clicking the unloaded project node in the solution explorer. This will give you a security warning (beware! you've edited your own build file) that you can safely ignore.

    Now, Visual Studio automatically feeds MSBuild with the SolutionDir property so this will load in your IDE, but if you're going to call MSBuild from another tool, like NAnt, make sure you pass in a value for SolutionDir when executing msbuild.exe.

    I know the WAP thing is reused across multiple projects and it is a good thing to have the templates in the "Microsoft Visual Studio 8" folder for easy access, but it does create a lot of work for us that want to keep our projects buildable in multimachine environments.