Most developers don't run tests after they change code. This is mostly about habit, but also about perceived inconvenience, I imagine. There's an easy way to get around that... make VS smart enough to have tests automatically run in the background when the code they're testing is changed (and obviously recompiled). To do this, there might need to be a way to specify what class members are tested in each test method, but that'd be good anyway. I find myself putting that in all test method comments, anyway. Whether that's added via a code comment or attribute, I don't care; although, the latter makes a little more sense.
As I mentioned yesterday, I like the idea of check-in policies, but they are pretty annoying for those of us who like to check-in as much as possible. Why? Because you always have to rerun code analysis and tests before checking code in. Most of the time, this isn't a big deal. If I make a minor change like correct spelling in comments, I have to rerun both. Tell me what test is going to change based on a comment. None. Admittedly, some code analysis rules check for that, but is that really going to provide you much of anything? I just want check-in policies to have some sort of logic to identify whether or not there's any value in running them.
I love check-in policies, but there needs to be more options. For instance, I like code analysis and would like to have it on all of my projects, but it just gets annoying when I have to run code analysis on test projects, which don't really benefit from the recommended changes. In order to do this, we need an exception rules engine of some sort.
I love the idea of check-in policies, but there are just some scenarios where you want to apply them on one project, but not another in the same solution. One obvious instance of this is with test projects. I'm all about some code analysis, but it makes no sense to waste the time applying or even scanning for code analysis violations. For this, I'd really like the ability to apply check-in policy exceptions to certain projects. This would make check-in policies much easier to deal with.
I like the fact that Hotmail now supports 5 GB, but SkyDrive is limited to 500 MB. 500... megabytes!? You've gotta be kidding me, right!? Well, I guess I'll get over all that because I know that limit will be raised in time. What I'd really like to see, tho, would be to have all of my Windows Live storage grouped together. That way, I have 5 GB across everything. I imagine this including mail, SkyDrive, and even files I'd like to upload on Spaces. I think Google just did this and I have to commend them for it. I'm sure some would like 5 GB on each individual service, but I don't need that much. I'm also hoping this would add additional integration between the services to allow me to attach SkyDrive files in email and/or show them on my Spaces profile.
I hate when I open certain C# classes and Visual Studio shows me a designer to tells me to drag items from the toolbox to get started. I'm not a drag-n-drop guy. I want the code. This makes sense for VB, but not C#, in my mind. I simply want the ability to default to the code view.
I'd like to have the ability to create a generic delegate to specify strong types of parameters. I imagine this should be fairly simple for the compiler team, but don't know if it's come up before. This would save casting in event abstract event handlers. For instance...
delegate void EventHandler<T>(T sender, EventArgs e);
delegate void EventHandler<T, E>(T sender, E e);
I want to say every event handler I've seen sends this (or Me, for you VB hedz), so there's no reason we should have to cast, leaving room for invalid casts and declining performance (albeit minor) for developers who aren't keen on these issues.
I'm sure there has to be something that does this somewhere, but I'd really like to see Windows Media Player and the Zune player (not the device) have the ability to organize your music in several ways. I'm not one to keep up playlists. I hate the idea of updating different playlists when you add new music. Instead, I like to organize music by genre. Granted, we've had the ability to add a genre to music for years and players have been able to filter based on genre, too; but I guess I just liked the idea of right clicking on a directory and selecting Play with Windows Media Player. Very simple. Of course, Zune doesn't have this comfort. What I end up doing there is changing all of my genres to be in a handful of groups, like electronic, hip hop, rock, pop, etc. Typically, when I listen to music, I want one or the other, so this works best for me. After ripping a new CD, tho, the directories and file names are wrong. Sure, I have a little control with WMP, but not much. I don't think the ripping part is where I need the flexibility, tho. What I'm really looking for is a way to say, "Here is my music library; now reorganize it based on these constraints."
Like I said, I'm sure there are tools out there that do this. I haven't looked. While I love the partner ecosystem Microsoft has built around itself, I want these features in the tools themselves.
I can't remember where I first saw the
AddNew() method Add(new) concept -- or, at least the concept behind it -- but I liked it. I'd really like to see the same thing added to all generic collections. For instance...
List<Person> people = new List<Person>();
Person person = people.Add
I admit, this doesn't save you a whole lot of typing, but it is very convenient. Essentially, I'd like every constructor to be represented by a corresponding Add
New() method. So, if I have default, id only, and a first and last name accepting constructors, I want 3 additional Add New() methods...
public Person Add
public Person Add
public Person Add
New(string firstName, string lastName);
As is, generics alone cannot do this with the level of integration I'd like to see, which would include reusing XML documentation already in place for the constructor. You can, however, hack something to give you this capability by using the params keyword powered by reflection in the back-end. Of course, I'd be worried about performance with an implementation like that. I don't see this being added, tho. The cost of implementing it probably wouldn't be worth the 6+ characters you'd save ("new " + name of class + "(" + ")"). Then again, perhaps this could be a mod to generics, which is already lacking, when it comes to constructor constraints.
Edit: I realized after posting this that it wasn't an AddNew() method I was looking for, but simply additional Add() methods. While this would save an additional 3 characters, the "is it worth it" argument is still there. I'd still say its convenience makes its case, tho. Maybe I'm just lazy. I changed the code samples are referred to this idea as the Add(new) concept, even tho you don't actually use the new keyword.
This is something like my request to go to the Source Control Explorer from the Solution Explorer in Visual Studio
; only this time, I want to go from the Source Control Explorer to the local directory I have a file checked out to. This would create perfect, seemless integration between the three file explorers. Of course, if the VS and TFS teams had any say in it, you'd never go to the Windows Explorer to get anything done. As nice of an idea as that is, it's just not feasible. Hell, I'm still looking for integration directly into the Windows Explorer shell. That'd be the best integration story, in my mind.
I'd really like to see the ability to move files/folders around in WL Folders. I'm guessing this will be added in the future, but haven't gone thru the process of investigating that. That seems like a big deal to me. Perhaps in an updated release.
I love the new profiling capabilities in Visual Studio, but there's still a gap when doing end-to-end performance testing and tuning. I'd really like to see the app get instrumented from beginning to end. While local devs won't see how constrained networks might affect their app, I think the perf tools can be smart enough to take the local tests and apply a few algorithms to show what kind of range of response times users should see, depending on their bandwidth and/or distance from the server. I know a lot of this might be a guessing game, but it'd be nice to at least have some numbers to see how big pages are and what user-focused response times are. At a minimum, I'd like to see the size of pages and the time spent requesting, processing, responding, and loading the page in the browser. Anything else would be icing on the cake. There was an entire office setup to do this when I was in the Air Force. Having it all built into the dev environment would save an immense amount of time and money; especially considering most devs aren't fully aware of all the factors that come into play and how they can tune their apps.
That kind of brings up another possible area of this end-to-end instrumentation. I'd like to tack on a
best proven practice analyzer to the output that would make recommendations. Of course, not all recommendations are universal, but at least providing some pros/cons to each would give devs more info than they have right now.
PowerShell, along with a number of console environments, have the ability to tab thru some options, usually files and directories. Unfortunately, this doesn’t support enough, if you ask me. Even if it did support more, it doesn’t compare to true IntelliSense. I know this isn’t quite a feature of the standard console app, but to have the Visual Studio style IntelliSense would definitely make it easier to learn and work with PowerShell.
The network icon in the system tray for Windows Vista has definitely been improved, but there's still some room to grow. As is, when you hover over the icon, a small, graphical tooltip is displayed showing the active connections. When you click the icon, you get the same thing with two additional links: Connect or disconnect and Network and Sharing Center. I like this view, but I hate the fact that I have to click "Connect or disconnect...", select the desired network, click disconnect, wait for the actual disconnect, and finally close that window. I hate all that. I just want to click a disconnect icon from the tooltip.
I will say that there is a context menu on the icon. So, you can simply go to Disconnect from > [desired network]. Out of habit, I never use this. For some reason, I seem to like the graphical tooltip more. Either way, I think the functionality should be in both places.
This one's fairly simple. I would love to see the ability to select a literal string and convert it to a string. Heck, while I'm at it, it might be nice to convert a literal to localized text. Either would be good; both would be great.