I've been coding steadily for a couple of months now so I thought it was time for a few more favorites of VS05.
Refactoring
I tend to not use fancy tools like Resharper as I like a nice clean environment, even at the risk of getting OOS/RSI/CTS. However, I find myself using the refactoring tool in VS 05 a lot more than I thought I would. I particularly like the automatic method stubs it creates for you. Also having it insert the namespace is very useful. Both of these mean you don't lose your place in the code and can just continue on with the same train of thought. I get easily distracted so this is a big boost for my productivity. Things like rename, parameter delete, extract method are less useful at this point, but are more important features to have automated.
Snap Lines
I do a lot of win forms ui development - a lot more than I care to mention. With snap lines, you can line up your controls horizontally and vertically in a simple visual way. Very cool! Don;t know why someone didn't think of this years ago.
Intellisence
Intellisence seems to be a lot more intelligent in VS05. I can often enter several lines of code with very little typing. When you type '.' the list of methods and properties is often positioned on the right item. I think I type about 1/3 less than I do with VS03.
Source Control
The new team system source control is very fast and as far as I can tell, very secure and reliable. The integration with VS is seamless and I'm not having nearly as many issues as I used to with VSS - it's seems a lot easier to create a source structure that matches your repository structure. I haven't had the chance to use Shelving in anger yet, but I'm, sure it will be very useful when I need it.
The integration of work items into the checkin process is also very useful but I do find it awkward finding the correct work items in the list. This is probably because of the way I work - which I think needs to change.
Data Sources & Data Binding
I know a lot of people hate data binding and it's a bit if a dirty subject, but I'm not afraid to confess that I use it. I must admit though that it's not without it's problems at times. Most of the issues I have had in the past (and some in the very recent past!) are due to a poor implementation in the tools or lack of understanding of how it works.
I think MS have got it right this time. Setting up a data binding to a control is simply a matter of dragging a table or field from the data source window onto your form. You can also bind to an existing control by dragging a field onto it. You still need to write some code to attach the binding source to the actual data, but this is trivial.
If you don't like using data binding then just using the data source window to add controls to your forms will save you a lot of time. Once you've dragged on your fields, just remove the binding source from the form and all the data binding will be removed with it.
Nullable types
I didn't think I'd use nullable types much, but it turns out I do. I have created stored proc's that take int's and datetime values as parameters. When I add a table to a dataset and specify the stored procs to use, VS05 automatically creates Fill & Get methods that have these parameters as nullable types. Eg, the following stored proc:
procedure GetEmployees
@validdate datetime
as
select e.*
from employee e
where isnull(@valid_date, e.startdate) between e.startdate and e.enddate
VS05 will create an employeeTableAdapter with a Fill method thus:
Fill(EmployeeDataSet ds, DateTime? validdate);
So I can call Fill(ds, DateTime.Now) to get all current employees or Fill(ds, null) to get all past and current employees. No more need for DBNull!
Partial Classes
Partial classes make a lot of sence for win forms. All of the designer generated code is in a separate file, making code changes a lot cleaner (and safer?). However, I noticed that if you have an inherited form, you don't get a partial class - all the controls are included in the one form.