Welcome to .NET Tips and Tricks

We're changing up our coverage on the Visual Studio Magazine Web site. Yes, I'll continue to review development tools in each issue of VSM, but the focus of this blog is shifting. Rather than look at the third-party tools industry, I'll focus on making you more productive with the tools you use every day: Visual Studio and .NET Framework.

Starting this week, I'll be publishing useful tips and tricks that can make you more productive. That includes (but isn't limited to) getting more out of Visual Studio. There is a ton of useful stuff in the IDE that I don't think anyone outside of the Visual Studio development team knows about. The same is true of .NET as a whole. There are features in the .NET Framework that are waiting for you... if you only knew about them.

Now you will. I'll be mining for these valuable nuggets and delivering fresh tips to you every week. Obviously, I'm not tracking tools anymore, so we've retired the ToolTracker blog name. Starting today, the new name for this blog will be ".NET Tips and Tricks."

And if you know a cool tip, send it along to me at phvogel@1105media.com . We may put your tip in the column and put your name up in lights.

Posted by Peter Vogel on 03/21/2011 at 1:22 PM0 comments


What's in a Slogan

If you saw my earlier post on cool slogans from software companies , you know that the slogan from ComponentOne is "Less Coding, More Business Logic". I like that philosophy (though personally I'd have gone with "Less grunt work, more functionality"). Still, I think Infragistic's "Killer apps, no excuses" has more attitude.

Posted by Peter Vogel on 03/03/2011 at 12:41 PM1 comments


March Issue Preview: ComponentOne and Telerik TeamPulse

In March, we're going to round out our reviews of major product vendor suites by looking at ComponentOne's Studio for ASP.NET AJAX. It's a good time to take a look because ComponentOne has got a new release coming out.

Well, actually, they've got a new release of their Studio Enterprise coming out: Every suite for every platform in .NET (and ActiveX, too). It's hard enough to review the component suites without reviewing suites in seven different technologies, at least some of which I'm not competent to comment on except as a beginner (e.g. Studio for Compact Framework). How to decide which suite to review?

It's not quite as arbitrary as rolling a seven-sided die (not that I own such a thing) but it's close. Fundamentally, I look at which audiences we've served recently and pick the audience that we've ignored the longest (and I also factor in the relative size of those audiences). So, if you're wondering why we're looking at the ASP.NET AJAX package, that's why.

In some ways that's too bad: ComponentOne has a new ReportViewer that they're obviously very proud of. I'll be looking at the ASP.NET version, but the press release from ComponentOne talks up the Silverlight version. I don't think it's likely that we'll have a chance to cycle back around to it -- so much software, so little time.

We'll also be looking at Telerik's TeamPulse -- an application lifecycle management tool. We've looked at other ALM tools, such as DynaTrace, Ants Performance Profiler and Sybase PowerDesigner, but it's been awhile since we've visited this topic.

The previous products performed very specific application management tasks, but TeamPulse is operating at a higher level: it's designed to "capture ideas and requirements,... and analyze project state." That's a big job. While I will look at the big picture, I'm going to be interested in how TeamPulse supports the individual developer. Does the product make life easier or harder for the programmer trying to generate code?

Posted by Peter Vogel on 02/18/2011 at 12:48 PM0 comments


Free Tools: Data Debugger Visualizer for VS 2005/2008

If you use DataSets and are tired of figuring out what's in your DataSet by asking for Counts of the Rows collection and entering ds.Tables(0).Rows(0)("CustomerId") in the Immediate window, then you need Dan Green's Data Debugger Visualizer. When stepping through your code, you hover your mouse over a DataSet (or DataTable or DataRow) variable and the DataVisualizer's commandbar pops up.

I use DataSets a lot and the Visualizer has saved me endless time in diagnosing problems. The tabbed dialog lets me switch between the schema for the table and a view that shows the data in the rows. I get the row count for any table I choose and can switch between seeing "live" rows or deleted rows. The Row Filter lets me set criteria to limit the rows (useful in large DataSets). For any row, I can quickly see its state (unchanged, deleted, etc.) and, for any field, its original and current values (and any cell errors).

The tool can be downloaded from CodePlex as a Visual Studio 2005 project. Open it, build it, and the appropriate DLL is created and dropped into the right Visual Studio folder. After that, you'll find it waiting for you when you right-mouse click on a DataSet reference. While the tool is free, the author welcomes contributions.

This isn't the only DataSet visualizer out there (you might, for instance, want to check out RightHand's visualizer). Visual Studio 2010 comes with its own DataSet Visualizer, which I'm getting used to, but for old times' sake I recompiled Dan Green's tool into Visual Studio 2010. I had to update the reference to Microsoft.VisualStudio.DebuggerVisualizers. But other than that, the tool worked just like always.

Posted by Peter Vogel on 02/14/2011 at 1:06 PM1 comments


Talking with Infragistics About Data Visualization

We recently reviewed Infragistics' "data visualization" bundle, concentrating on the Silverlight package ( Visualizing BI with Infragistics NetAdvantage for Silverlight Data Visualization). Since I consider myself a "business/database developer", the idea of a class of applications called Data Visualization was -- to the say the least -- intriguing. Fortunately, Megan Sheehan, senior product manager of Data Visualization at Infragistics, was able to take the time to talk about the product line.

Peter Vogel: What is "Data Visualization"?

Megan Sheehan: Data visualization is the process of visually representing often times complex data in a way that end users can understand. Most organizations have a plethora of data that they use to inform their business decisions, share information with customers and track their performance. Displaying data in charts, graphs and pivot tables helps people find the meaning in the numbers. Without Data Visualization, sometimes it's like looking for a needle in a haystack.

PV: Why would an organization buy your package rather than, for instance, a Business Intelligence package?

MS: NetAdvantage for Silverlight Data Visualization offers a full range of UI controls for business intelligence as well as maps, gauges, timelines, barcodes, an organizational chart and many others. The performance, quality and breadth of controls are the most compelling aspects for our customers.

PV: Who is the market for a package like "Data Visualization for Silverlight?"

MS: Silverlight developers who want to communicate information clearly and effectively, frequently as part of a line of business application. It's difficult to visually represent complex data well. The Data Visualization for Silverlight product helps developers display data in many different ways -- from charts and pivot grids to graphs, maps and gauges.

PV: What are the differences (if any) between the WPF and the Silverlight package? Why develop two different packages?

MS: We are committed to building our WPF and Silverlight controls on a unified foundation, so we have strived to have parity between the products from the onset, as much as the platforms permit. We decided to pursue this strategy for several reasons. First, we know that our customers are targeting multiple platforms depending on the needs of the project they're building, so we want to give them the tools that they need to be successful. Next, we feel we can deliver better usability and quality by sharing as much code as possible between the WPF and Silverlight versions of each control. It's easier for our customers to share/reuse code between their WPF and Silverlight applications if we ensure that our controls are comparable. By leveraging shared source code, Infragistics can deliver more UI controls to market faster.

Posted by Peter Vogel on 02/10/2011 at 9:04 AM0 comments


Q&A with Julian Bucknall Part 2

Julian M. Bucknall, CTO at DevExpress continues our discussion on the Visual Studio/.NET toolspace, this time looking at DevExpress' users and process for extending the package.

Peter Vogel: Are there differences between creating a suite for ASP.NET developers and other developer groups (e.g. WinForms/Silverlight/WPF/whatever)? I.e. what do these target markets share and where (if anywhere) do they look different?

Julian M. Bucknall: Apart from the basic differences of platforms, yes, there are differences. For example, ASP.NET customers expect to see live demos on the website whereas WinForms developers are happy to download demos and install them to view the functionality. What we also try and do (sometimes more successfully than others) is to abstract out the non-platform-specific code into code codebases and to build on those for each platform UI. Data binding tends to be different across platforms as well, so we have to be cognizant of those differences.

PV: How does DevExpress decide what to add to the suite? What to enhance next it the suite?

JMB: It depends. Generally it's feedback from customers: they're using X in their apps, but it would be great if feature Y were available. The more feedback we get for a particular feature or control, the more likely it is we'll add it. (We essentially allow people to track particular suggestions: the more trackers for a feature, the higher the "vote". We're working on making this more transparent by implementing a Facebook Like button or a Stack Overflow vote up/down button.)

Oftentimes it's because we are tracking what popular applications are doing with their UI, Microsoft Office being the canonical example. So if you see something in the new Outlook/Word, you'll see us support the same look-and-feel pretty quickly. The same goes for Windows itself, of course. And then we monitor what websites are doing so that if there's some particular UI metaphor we should be following, we'll notice and support it for our customers.

Finally, it's the developers themselves who will decide that they need such-and-such a feature. We use our own controls in our internal applications so we as a company will notice issues and problems with our controls and request features to make our lives easier -- and of course we know where the developers live. ;)

Posted by Peter Vogel on 02/03/2011 at 9:37 AM0 comments


Q&A with DevExpress CTO Julian Bucknall

It's not often that I get completely beyond "marketing speak" to hear about what the business side of the Visual Studio/.NET toolspace is really like. My talk with Julian M. Bucknall, chief technology officer at DevExpress is one of those occasions.

Peter Vogel: What does the control suite market look like from DevExpress' point of view?

Julian M. Bucknall: I would say that the control suite market is essentially 6 to 9 months ahead of the main application market. In other words, we have to look ahead to 6 months down the road and try and work out what applications our customers might be writing then. For enterprise customers, it's likely to be pretty much what they're writing now: the rate of change for "departmental software" is fairly slow, I reckon, since there's never enough time/resources to investigate new platforms and so on. If you like, most corporate software development is now particularly "early adopter" stuff. Other customers have a greater requirement for support for new platforms and the like.

So, in essence, we see Silverlight on the rise (although I'm not really sure how much further it can go, so it may have reached a peak by mid-year), WPF going into a fall (Silverlight 5 will rob market from its older/larger brother), WinForms staying steady (the good old departmental software tends to be WinForms still), ASP.NET slowly dropping, but MVC rising. After that, it's hard to gauge: we'll have to see the effects of ASP.NET MVC 3 and Silverlight 5.

Mobile development will certainly be on the rise, and my gut feel is that it'll be web development that will win out for control vendors, rather than native controls.

PV: Is there a unique value that DevExpress brings to the suite market? Or, to put it another way, how does DevExpress compete in this market?

JMB: I've said this for a long while: the selling of controls is a commodity market. All controls of a certain type from every vendor work in essentially the same way and have much the same functionality. The edge cases are different certainly (X may be faster than Y in a certain scenario, Y may be more stable than X in another, you as a developer may prefer the object model and API of X versus Y) but overall it's like buying milk.

So, in order to differentiate ourselves, we not only concentrate on performance and stability but on the services associated with selling controls: purchasing, support, documentation, video tutorials, webinars, evangelism, attending and sponsoring user groups and codecamps. We want to assure our customers that they're not abandoned once we have received their purchase money.

Posted by Peter Vogel on 02/02/2011 at 1:19 PM0 comments


Re-Aligning the NetAdvantage Bundle

Re-Aligning the NetAdvantage Bundle You know, the world keeps changing. As we started reviewing Infragistic's NetAdvantage for .NET: Windows Client suite, Infragistics was rejiggering their packages. The products we reviewed are now part of a 'bigger' bundle (NetAdvantage for .NET or NetAdvantage Ultimate) for less money ($1,495 vs. $1,995). You can also buy suite components individually.

For me, this raised the issue of why a company would make a major change like shaking up its product lines (which includes, for instance, handling customer who want to upgrade from the old package). The right answer seemed to be "ask them." And that led to Andrew Flick, product unit manager of NetAdvantage at Infragistics and these questions.

Peter Vogel: When did this change take effect? When did you start thinking about creating the NetAdvantage Ultimate bundle? And, as long as I'm asking: How long does it take to put a change like this into effect?

Andew Flick: We repackaged our NetAdvantage product suites in conjunction with our 2010 Volume 3 release in October 2010. We introduced NetAdvantage Ultimate, which includes all six Infragistics UI control toolsets -- Silverlight Data Visualization, WPF Data Visualization, Windows Forms, ASP.NET, WPF Line of Business and Silverlight Line of Business.

The Ultimate suite really is 'ultimate' in that it provides our customers with the flexibility to move between platforms, maintain existing applications and create new ones on newer platforms.

For developers who are primarily doing Line of Business application development and using two or more controls, we repackaged NetAdvantage for .NET to include our four Line of Business UI control toolsets. Individual purchasing of each toolkit is now also available.

Before introducing our package rebranding to our customers, we did work for several months to ensure that our systems were ready to accommodate both the new and 'grandfathered' SKUs and that our documentation reflected the rebranded product suites.

PV: What drove this change?

AF: Our decision for this repackaging was driven by customer research and demand. As with every New Year, we reviewed our customer data, feedback and comments and evaluated how we could provide greater value to our customers and how our products could better help customers develop UI applications with the greatest user experiences possible.

PV: What do you see as the benefits for developers? For Infragistics?

AF: Customers who want all of our Infragistics controls in their toolbox for UI development on the web and the desktop, or enterprises that do not want to hassle with multiple licenses can now purchase or upgrade to NetAdvantage Ultimate. Because NetAdvantage Ultimate also includes our Data Visualization suites, it provides developers an opportunity to delve into the data visualization realm and communicate business intelligence data in a way that is visually meaningful.

PV: How do you see this change evolving (if it does evolve)? What impact will it have on existing Infragistics license owners now? At upgrade time?

AF: As we grew our UI toolkits to support new technologies and platforms, and market adoption ramped up it, made sense for us to rebrand our UI control suites to provide the most value to our customers. Current subscribers will be 'grandfathered' in, although we encourage our customers to take advantage of an upgrade package. As we introduce new NetAdvantage UI components, such as NetAdvantage Reporting, NetAdvantage for Web Developers, NetAdvantage for Mobile, our Ultimate subscribers will also get these new products to help them reach into new realms of development.

Posted by Peter Vogel on 01/31/2011 at 7:37 AM0 comments


VS Toolbox: Coming up in February

Next month we're looking at two more unusual products. The first is Infragistics' Data Visualization suite of controls. These controls are not (as Infragistics makes clear) a complete business intelligence solution. Instead, Infagistics' intention is to provide a suite of controls that will let your users sort through the data from your business intelligence solution. I'm going to be interested in what controls go into a "Data Visualization" package and how effectively they work at presenting data.

Our second review is driven by reader demand. I asked if we should review the product and the answer was a strong "Yes" (to put it mildly). We'll actually be reviewing two products: Sapphire Steel's Amethyst, a Visual Studio Add-In and Midnight Coder's WebOrb, a run time environment. Amethyst is unusual because it's designed to let developers do Flash (Adobe AIR/Flex) development in Visual Studio while WebOrb, among other things, let's you run and debug those applications from Visual Studio. I'm going to be concentrating on the integration that Sapphire Steel and Midnight Coder have managed to achieve.

Posted by Peter Vogel on 01/26/2011 at 11:39 AM0 comments


Installing New Tools with DXperience

I suspect that most developers, once they find a tool they like from a vendor, will go back to that vendor for their next purchase. At the very least, that vendor will get "first refusal" -- developers will check out offerings from a vendor they trust before they start playing the field.

DevExpress obviously assumes that is the case with its customers. I reviewed the DevExpress DXperience for ASP.NET bundle in the January issue of Visual Studio Magazine, and appreciated its integrated install experience.

When I get a package from DevExpress (and, as a software reviewer, I'm frequently revisiting vendors) I don't download the package I want. Instead, I start up the DXPerience Product Installer, which shows me a list of the products I've licensed (with an option to see all of DevExpress' products). The application walks me through logging on, getting the list of products, and giving me the three choices of repair, modify and remove.

Other tools vendors provide the same facility from a Web page: I log onto "my account" and can download the products I've bought. I have to say, I prefer the DXperience app (nestled into my Start menu under "DevExpress") over having to surf over to some site that I've forgotten about.

DevExpress' approach is not perfect. At one point, the package wanted me to shut down Visual Studio before it would proceed with the installation. Sadly, after I did shut down Visual Studio, it wouldn't continue the installation and I had to cancel out and restart.

I recognize that this isn't a critical part of the "DXperience" (DevExpress does give it away free, after all) but it's a nice touch and I like it.

Posted by Peter Vogel on 01/24/2011 at 12:43 PM0 comments


Free Visual Studio 2010 Tools You Need: VSCommands 2010 Lite

I'm really enjoying going through the Extensions Gallery in Visual Studio 2010 to see what's available and, more importantly, what's available and free. Many of the extensions also work in earlier versions of Visual Studio and/or have versions that do. My latest download, however, only works for Visual Studio 2010.

VSCommands 2010 Lite adds about two dozen neat features to Visual Studio -- in fact, some are so essential I wonder why they're not included in Visual Studio out of the box. For instance, VSCommands adds a Locate in Solution option to Solution Explorer and the Editor window context menu. This option synchronizes the currently selected file in Solution Explorer with the file open in the Editor. I'm frequently working on a Solution with over a dozen projects, so the ability (after double clicking on an entry in the Errors window) to figure out what project I'm in is really worth something.

Speaking of the Editor window context menu, I also like the Add Guid option that lets me insert a GUID into my code without having to go to the Tools menu. And, speaking of solutions with over a dozen projects, my favorite feature is one that I never use explicitly: VSCommands terminates the build process as soon as even one project fails. As you can imagine, this feature saves me a lot of sitting around waiting for builds to complete when I have a problem with a project early in the build process.

That's just two or three of my favorite features among twenty-four in VSCommands 2010 Lite. And, as the name implies, there's a Pro version that costs money and throws in even more goodies. One warning: Install this package before you open a project -- installation requires restarting Visual Studio.

I'm going to have to find some way to control this addiction to Visual Studio add-ins, though. My pop-up menus are getting longer and longer as I keep adding new cool tools.

Posted by Peter Vogel on 01/21/2011 at 9:49 AM3 comments


Tab Happy: DevExpress DXperience ASP.NET Controls

I'm of two minds about how much an installation should do. Obviously, the installer should put all the software on my hard disk. But, after that, how much should be done?

For instance, when I install a new set of controls for Visual Studio, I expect those tools to turn up in a tab on my Toolbox the next time that I open the appropriate kind of file in Design view. In fact, if there's more than a few controls, I expect the controls to appear in several different tabs, organized in some useful way. (I recently complained about Infragistics' WinClient bundle for dumping -- a harsh term, I know -- all of their multitudinous controls into a single tab.)

What got me thinking about this was my recent installation of DevExpress' DXperience bundle for ASP.NET. This time none of the controls turned up in the Toolbox. I recognize that this may not be your experience. I've installed/uninstalled/reinstalled so many toolsets on this particular Virtual Machine that the DXPerience installer may just have thrown up its metaphorical hands and given up in disgust. In my case, I had to add a tab and use the Choose Items dialog to add the controls.

I'm not sure that this is a good or bad thing. Like many developers, I'm very protective of my Visual Studio configuration. I move around enough to various client sites that I stick to a pretty vanilla configuration so that I don't look like a complete dork by not being able to find something while a client is looking on.

Is letting me install the controls where and how I want a better strategy than inflicting the vendor's preferences on me? This may be especially true of a bundle as large as the DevExpress collection, because I probably don't want to use all of the controls, at least not right away. Not installing the controls in the Toolbox may indicate a level of respect for the developer on the part of the vendor: We won't impose our will on you.

In the end, though, I think that I'd prefer that the installer create a set of tabs and install the controls (let's recognize that I have no idea how easy/hard it is for an installer to do that). The reason is that the way that the controls appear in the Toolbox helps me understand what the controls do.

For instance, installing all the controls that make up the DXperience scheduling solution into a separate tab would make understanding and using them (or not) a little bit easier. The other benefit of organizing the controls into tabs is that it's so much easier to get rid of the ones you don't think you'll be using: right-mouse click on a tab, pick "Delete Tab", and it's gone.

Yep, I've thought about it and I like it.

Posted by Peter Vogel on 01/19/2011 at 7:34 AM0 comments