Development Tools
I’ve recently been looking at MvcContrib portable areas after a colleague suggested they could be the solution to providing an application a composite UI. While looking at this I noticed that ReSharper 5 had a few issues, primarily in views. This is not entirely unexpected as splitting a site across multiple projects is hardly standard MVC behaviour (although it’s pretty much exactly what we want in this scenario). I made a comment on this on Twitter and got a response from a Jetbrains Technical Evangelist. This post is to describe the behaviour I’m seeing in more detail that Twitter allows....
Many development projects rely on tools in addition to standard integrated development environments. How these tools are managed can have a significant impact on the maintainability of the project. Problems can occur when different development environments are using different versions of tools, or when tools are assumed available but not present in some environments. This can also be an issue between different branches in the same environment when tools or tool versions change. It’s unfortunately common for developers to rely on tools being installed in an environment. This makes changing the tool version problematic as the change must be...
I’ve got two separate projects at the moment that are both using query objects with NHibernate. The primary difference between the code is in the result transformer. One is using AliasToBeanResultsTransformer and the other AliasToBeanConstructorResultsTransformer. I had a problem with the former where the result object was not having any of its properties populated, which I determined to be because the projections were not having the alias defined (second optional property to the Add method). I just wrote a test for a query object in the project using AliasToBeanConstructorResultsTransformer to expose this problem so I could fix it (being a...
Lest my previous post is interpreted as my not liking the .NET platform, here’s a collection of things that are great (and which you will have to prise from my cold dead fingers). Lambdas, Extension Methods and the Enumerable and Queryable classes. How did we ever live without them? ReSharper. Visual Studio is merely my ReSharper hosting environment. Please JetBrains, write a .NET IDE. TestDriven.NET. So much faster than anything else out there for running unit tests. Does one thing, does it amazingly well. Gallio and MbUnit....
Some people asked for the slides for my Continuous Integration presentation at the Perth .NET Community of Practice yesterday. Enjoy.
Download the Presentation here
This presentation was targetted at developers new to Continuous Integration. The examples use my Abstract2ion project which comes set up for Continuous Integration. If you are trying to set this up with TeamCity the table below has some of the configuration values necessary (TeamCity is pretty easy to use, so I'm not going to write a step by step guide):
...
I’ve been running NDepend over some of my projects recently and have noticed a tendency for it to pick up on things in code generated by Visual Studio (which admittedly is of highly variable quality). I’m not going to write my own version of the generated code but I would like to clear out the noise. You can do so by editing the CQL and adding something like: AND !FullNameLike ".*Properties.Resources.*" This criteria excludes anything that matches the common pattern of the standard resource files produced by Visual Studio. You can...
Effective software development is all about leveraging the effort of others so that you can focus the majority of effort on the problem your system is to address. The following are the frameworks and tools that I choose to use (as is appropriate) when I get to decide what goes into a system. I’m not going to try to enumerate all the features, advantages and disadvantages of my choices. I’m always looking for additional or improved options for my list so make any suggestions in the comments below. Frameworks NHibernate Although I’ll acknowledge it has a...
I’ve just encountered one of those wonderful bugs caused by Windows path length limits. In this case a large part of the problem was a file with a name over 100 characters long. Most of this name duplicated information already known due to its context, such as the namespace it belonged to. When moving between environments a longer base path in the new environment resulted in an over-long file path and hence breakage in what was previously a working codebase. The base path in the new environment was not excessively long, the fault here is purely with a poorly chosen...
I’ve previously indicated that I find certain parts of the .NET BCL difficult to work with in a DI/TDD fashion. My solution to this is (like many before me) to write wrappers for some of the key pain points. I’ve decided to throw them up on Google Code using an Apache 2.0 licence. The project is called Abstract2ion (for which there is no official pronunciation). It contains the following: IConsoleWrapper a wrapper around System.Console IFileSystemWrapper and friends which provides a (fairly light) abstraction of some of the file system classes. Currently this supports...
I'm currently evaluating mechanisms to invoke unit tests. The contenders: TestDriven.NET Advantages: Noticeably faster than other options Nifty IDE integration Integrates with Team Coverage Disadvantages: I need to pay for it I find the failed test reporting less readable Resharper with Gallio Advantages: Pretty GUI Nifty IDE integration (but not quite as good as TestDriven.NET) I already have it Disadvantages: ...
I'm a big fan of development tools. By automating development tasks we save time and gain confidence that the tasks have been applied consistently without human error. It's important to realise that however fast and accurate a tool may be, when the task is inappropriate then the tool has just hindered you. Particularly insidious, if the tool makes doing the wrong thing easy there's an immediate (if invalid) incentive to do the wrong thing rather than take longer to perform the task correctly. I saw this recently on a discussion board in a thread on the utility of automatic...
When the tools I use are having issues I tend to check incessantly for updates. Sometimes multiple times an hour (generally while waiting on said tools). When they're working well this drops to every couple of days, if I remember. Currently checking every few days. Things are good in the tool world right now. Which means it's time for a new shiny, buggy productivity enhancer...
For most people the issues with .NET 3.5 SP1 are likely manageable. You can install it and work around the problems. Or you can hold off until they fix the issues (and they really had better fix the issues). And then there's the guy in this thread who must install .NET 3.5 SP1 to use SQL Server 2008, but can't install it because it breaks what he's doing with WPF (running it in a service). I'm really really glad I'm not him. Moreover I'm disappointed and annoyed that Microsoft hasn't paid any attention to people using their stuff in...
It's often useful to be able to run files in a solution from within Visual Studio. I use this to do things such as run batch files to build or deploy the solution. I can't claim to have invented this method which I found many years ago on a website I no longer recall, but I thought I'd pass it on due to its utility when working with build scripts. To set it up, add an external tool (Tools -> External Tools). Set it up as shown below. You'll now have an entry on the...
Many .NET projects are built entirely within Visual Studio. This is generally the easiest method when developing. However there are a number of cases where this overhead isn't desirable. These include obvious cases like build servers where Visual Studio may not even be available. It also includes less obvious cases such as having multiple solutions to be built. Opening a solution, especially a large one, in Visual Studio is a significant overhead you generally don't want to incur just to built the latest version of a supporting project. This is where build systems come into play. There are a number...
Jetbrains ReSharper 4.0 has been released. This is a tool that pays for itself just with the time saved due to the improved code navigation features, so everything else is a bonus. Version 4.0 introduces support for C# 3.0 as well as bunch of nifty new features. Send them your money now*. * No, I'm not on commission. Dammit.
Jetbrains ReSharper 4.0 RC3 is now available and it's looking fairly solid. Unlike my previous post where I advised against using the Beta this version looks ready to use. Recommended. Of course it's not final yet and it may still have issues so use at your own risk.
The beta for version 4.0 of my single favourite development tool is out. Things are looking pretty good, but on balance it's not ready for production use yet (at least when I'm being paid to code). I installed it on my primary development machine earlier which went well. There are still a few glitches that make me reluctant to commit to it over version 3.1: It threw exceptions when I tried to use format on a particular file. I thought this was due to it being locked in source control, but I checked it out and the behaviour continued...
File comparison tools are something that needs to be in the toolkit of every professional software developer. They're essential for working with other developers to integrate changes and make it possible to track changes over time (in conjunction with source control). Most source control systems come with basic comparison tools but these tend to be fairly limited. This has lead to the development of a number of replacement tools. Of these my current favourite is Scooter Software's Beyond Compare. There are many things to like about Beyond Compare. This starts with the price which at US $30 for a single...
Apparently one of my posts is currently the top result on Google for: 2008 ghostdoc change keyboard shortcut Unfortunately the referenced post doesn't actually specify how to change the shortcut. So in the interests of serving the great web browsing public I shall now explain how to do so. Of course you could just look in the Ghostdoc help but that would be logical and entirely non-geeklike. The secret (such as it is) is to use the Visual Studio options. The Keyboard options give you the ability to assign new shortcuts for just about everything. Type in "ghost"...
Full Development Tools Archive