Archive for the ‘Visual Studio’ Category

I ranted a while back about how Visual Studio 2010 took one step forward, and 3 steps back with regards to the Add Reference Dialog. Well, Microsoft has released a Productivity Power Tool for Visual Studio 2010 that has almost gotten this down perfectly!

The dialog has received a complete makeover.


Now the Assemblies information is cached. The first time I opened this dialog, I was presented with a progress bar as the cache was built. Subsequent usage has utilized the cache, making the dialog nearly instantaneous to display… even after shutting the IDE down and bringing it back up! Note, also, that there’s now a search option! Pretty much everything we were all asking for.

The only thing I’m curious about is how you refresh the cache. There’s no refresh button, and F5 doesn’t appear to do anything. We’ll have to see over time how this works out, but I’m very impressed.

The Productivity Power Tool is worth installing for this feature alone, but it contains several other features as well. The “Tab Well UI” gets a makeover, with lots of new features. I don’t think anyone can complain about how the tabs work after this puppy is installed, as you can configure it to work in just about any way you can imagine. HTML Copy will obsolete so many blog writing plug-ins, allowing you to paste an HTML representation of code copied from the editor. You can configure the editor to highlight the “current line”. Selecting a line can now be done with a triple click. Mixed tabs/spaces can be quickly corrected. Ctrl+Click will take you directly to the definition. Ctrl+Alt+] will align your assignments. IntelliSense gets a color coded syntax makeover. Alt+Up and Alt+Down will move code up and down. And finally, guidelines get first class UI support. Many of these features have been available in separate extensions, and I’ve been using most of them and couldn’t live without them.

Read Full Post »

The Add Reference dialog has been the biggest punching bag for Visual Studio detractors. It’s always been extremely slow and annoying, and pretty much every developer has felt the dread associated with knowing you’re going to have to add a reference to a .NET project.

So, with Visual Studio 2010, this was supposed to have been one of the areas of focus. My initial reaction was that the tweaks made here made a huge difference, and actually made the dialog usable.

Well, I have to say, my initial reaction was incredibly wrong. Yeah, the changes made a huge difference, but not for the better.

The dialog now displays nearly instantaneously. If you’re adding a reference to a project or by browsing to an assembly on disk, then the changes are going to make your heart sing. However, if you’re attempting to add a reference from the list of known assemblies, well, the old dread holds nothing to the new feeling of pure doom.

See, by loading the list asynchronously, populating the UI with every item as it’s found, they’ve actually made it take longer to load the list. Worse, because the UI is updated with every item found, it’s not really usable until the entire list is loaded. There’s nothing more frustrating than being presented with a long list of items, inviting you to scroll to locate the item you need, only to have the scroll bar jump around like a Mexican jumping bean as new items are constantly being added. This behavior is especially vexing because you don’t know when the list is finally fully loaded, and since it takes longer to load then it used to, you’re always frustrated by the jerky UI.

This is so frustrating, because this is a problem that’s really easy to solve. Loading asynchronously is the right choice… but this could be done as soon as the IDE is opened and the results cached. The list should only be populated once all of the items have been added to the cache. The user would then be able to refresh this cache if, in the corner case, there were some change to the actual assemblies that would be available. Problem solved. The user will rarely have to wait for this stupid dialog, and will never be annoyed by an unusable UI.

Boy, I hope they fix this before shipping. 😦

Read Full Post »

OK, this is too cool.

My current pet projects, Specificity and Onyx, both require desktop and Silverlight support (well, Specificity is getting this support soon). The typical way of accomplishing this is through project links. You create two projects, one for the desktop and one for Silverlight. You create physical source files in one of the projects, then in the other you create project links to the other file. A project link is like a symbolic link in file system vernacular, but done strictly within a project definition. If you need the code to be different between the platforms due to differences in the platform libraries, you either use conditional compilation via #if/#endif blocks, or you use a partial class with platform specific code in a file not shared with the other project.

All of that works fairly nicely, but it’s a bit of a maintenance PITA and can be rather error prone. Forget to create the link, and it’s possible everything will still compile, but you’ve got a “bug”.

Well, I just found out that there’s a tool that automates all of this within Visual Studio, provided to us by the patterns & practices team. It’s called the Project Linker: Synchronization Tool. Having just found it, I’ve not yet been able to use the tool “in anger”, but you can be sure I’ll be checking it out real soon.

By the way, if you’ve followed me here from my previous blog on Spaces, welcome to my new home. Hopefully I’ll no longer have to worry about blog spam here! However, being new to this blog, you’ll have to excuse me for a while as I settle in and get things working the way I like.

Update: Near as I can tell, this is where you grab the tool from: http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&displaylang=en#filelist.

Read Full Post »