Many people around the office have taken notice of my Visual Studio 2008 theme, which I’ve affectionately called “Chalkboard”. I put together this theme and then tweaked it over the past few months to make hours in front of Visual Studio 2008 easier on my eyes. Here’s a screen grab. The high-contrast colors (dark background, light foreground) take some getting used to, but they’re much easier on the eyes after you do. For those who are interested, I’ve exported my Font and Color settings as a Visual Studio 2008 theme. Download my Visual Studio 2008 “Chaklboard” theme. Technorati Tags: Visual Studio,VS2008 Theme
Last night I was at the Tampa SQL Server User’s Group attending a good intro on VSTS Database Edition GDR presented by Catapult Systems. After the session, one of the attendees asked me if there was any way to get rid of the SQL Server Compact Edition help from his Visual Studio help collection. One way to do this is to use the provided help filters, which allow users to set preferences on what content they would like to see in help. Here’s the link to MSDN that explains the filters: Using Help Filters in Visual Studio (MSDN) Another way to do this is to uninstall the specific content that you want removed from the collection. Simply run the MSDN uninstaller from the Control Panel and modify your installation. Technorati Tags: Visual Studio 2008,VSTS,VSTS Database Edition
Last August, Microsoft released the Open XML Format SDK 1.0. This innocuous-sounding SDK is a full set of managed classes that allow developers to load and manipulate Open XML documents using a managed API. Not to say you couldn't do this before -- using the Office InterOp assemblies, but now developers get unparalleled performance and a 100% Managed code framework to manipulate Open XML Documents. Download the SDK here.Download Code Snippets for Visual Studio 2005 here. Of course, there's also an ecosystem to support Open XML efforts. This includes several training modules and videos effectively teaching developers about using Open XML in their applications. MSDN: Open XML Developer Workshop Technorati Tags: VSTO,Office,Open XML
Microsoft made a formal announcement about BizSPpark today. From their web site: Microsoft® BizSpark™ is a global program designed to help accelerate the success of early stage startups by providing key resources when they need it the most: Basically, Microsoft is doing a solid for startups by providing them with a bunch of full-featured, licensed development tools (including VSTS and TFS Standard Edition to say the least), the MSDN library and a whole lot more. What do you need to do to qualify? Actively be engaged in development of a software-based product or service that will form a core piece of its current or intended business[1], Be privately held, Be in business for less than 3 years[2], and Generate less than USD $1 million in annual revenue[3].Since that pretty well represents the little guy (including my own business in it's first three years) - I imagine a lot of people are really going to benefit from this program. Kudos to Microsoft for recognizing their social responsibility in growing new businesses. Technorati Tags: BizSpark,VSTS,TFS
Nikita and I got to spend some time with some folks in Orlando this week talking about Team Foundation Server 2008. A few questions came up that we weren't prepared to answer on the spot, and I promised an online follow-up. Here it is! Is TFS integration supported in the Expression line of products? The unfortunate short answer is "Not yet". I installed Expression Studio2 (and applied SP1 for Blend) and there's no source control support. I found a few posts asking Microsoft to remedy this problem, and apparently they are in fact taking steams to remedy the situation. What are the differences between the various Visual Studio SKUs? Good question. First, here's an update on nomenclature since we're all undoubtedly confused by a certain marketing department's notorious change of heart regarding product names: Visual Studio 2005 Visual Studio 2008 Visual Studio Team System Visual Studio Team System 2008 Visual Studio 2005 Team Suite Visual Studio Team System 2008 Team Suite Visual Studio 2005 Team Edition for Software Architects Visual Studio Team System 2008 Architecture Edition Visual Studio 2005 Team Edition for Software Developers Visual Studio Team System 2008 Development Edition Visual Studio 2005 Team Edition for Software Testers Visual Studio Team System 2008 Test Edition Visual Studio 2005 Team Edition for Database Professionals Visual Studio Team System 2008 Database Edition Visual Studio 2005 Team Foundation Server Visual Studio Team System 2008 Team Foundation Server Visual Studio 2005 Team Test Load Agent Visual Studio Team System 2008 Test Load Agent What about Standard and Professional builds of Visual Studio? Visual Studio Express SKU's are free "lite" versions of Visual Studio designed to get new developers on board with the Microsoft development platform. There's no add-in support or extensibility, and the language/project features are limited. Visual Studio 2008 Standard is the baseline SKU and includes the Visual Studio shell, add-in and extensibility (VSX) support, project upgrade wizard, etc. Visual Studio 2008 Professional is the first version that adds "full setup" for Visual Studio, the full MSDN library, advanced debugging (remote processes, clustered debugging), the object test bench, Office development support, mobile device development support, and more goodies. No TFS CAL is included with Visual Studio 2008 Standard or Professional. Beyond the inclusion of a TFS 2008 CAL, VSTS provides a few additional benefits over Visual Studio Professional (namely 64-bit debugging support). Each VSTS SKU has it's own benefits, highlighted below: SKU Features Architect Edition Application Design project template; Application designer; Bind application; Configure connections to external databases; Conform .NET Web Service Endpoints to WSDL Files; Custom Prototypes; Define Deployment; Deployment Designer; Generate Deployment Report; Implement Application; Logical Datacenter Design; Reverse Engineer Projects in Existing Solutions; Settings and Constraints Editor; Synchronize with Datacenter; System Designer; Validate Diagram; Versioning; Web Service Details Database Edition Add Database Reference; Custom Data Generators; Data Compare; Data Generation; Database Refactoring; Database Schema Build & Deployment Tools; Database Unit Testing; Offline Database Schema; Project Version; Schema Compare; T-SQL Editor Developer Edition Auto-Suppress Generated Code Option; C/C++ Code Analysis tool; Code Analysis Check-In Policy; Code Metrics; Managed Code Analysis tool; Spelling Checker with Custom Dictionary Support; Application Verifier; Compare Reports; Compressed Report Files; Copy Report View Data to HTML; Filtered Analysis; Hot Path; Line-Level Sampling; Portable CPU Counters; Profiler Runtime Control; Profiling Tools; Profiling Tools Report; Report Noise Reduction; Runtime Profiling Control window; Stand-Alone Profiler; Windows Communications Foundation Profiler Support; Windows Counter Support Test Edition Call a Web Test from a Web Test; Code Coverage; Custom Host Adapters; Easier Load Test Analysis; Generic Tests; Load Modeling; Load Test Results Repository Management; Load Tests; Manual Tests; Web Test Data Binding; Web Test Validation Rules; Web Tests; XML File Converter Utility Team Suite All of the above are available in one edition. If these short one-liner feature names aren't enough, a full side-by-side comparison of Visual Studio SKU's is available. If you're looking for a great deal, Microsoft runs promotions on Visual Studio flavors from time to time. What does the TFS 2008 Upgrade Process look like? Many of you read my install guide from a few weeks back and wanted to know about the pitfalls of a TFS 2008 upgrade. What's most important to know is that the TFS upgrade is really a 4 product install comprising of the following tasks: WSS 2.0 to WSS 3.0 Upgrade SQL Server 2000 to SQL Server 2005/2008 Upgrade (you may already have this) TFS application tier 2005 to 2008 Upgrade TFS database tier 2005 to 2008 Upgrade Team Build 2008 install/setup (optional) WSS 2.0 to WSS 3.0 upgradeThe first component that needs to be completed is the upgrade from WSS 2.0 to WSS 3.0. During my last upgrade process, we were actually doing the upgrade, but we wanted to migrate the content database from an existing WSS 2.0 server to a new WSS 3.0 installation on Windows Server 2008. This is probably the more complex of upgrade scenarios. Before you start, I strongly recommend reading Upgrade Toolkit for Windows SharePoint Services Sites and Templates guide published by Microsoft.We were able to simplify our upgrade process by performing the following simple steps: Backup the existing WSS 2.0 Content Database Upgrade the WSS 2.0 content database to WSS 3.0 Upgrade the WSS 2.0 site templates to WSS 3.0 Take special consideration when upgrading WSS 3.0 to WS2008/Vista on IIS 7 SQL Server 2000 to SQL Server 2005 UpgradeYou'll be needing at least SQL Server 2005 and Reporting Services to run TFS 2008 against. Running this on Windows Server 2008? I recommend a full fledged SQL 2008 upgrade, but if you want, you can get SQL Server 2005 Reporting Services running on Win 2k8/IIS 7 with some work. Running into permissions issues? Check here. TFS giving you error 29112 when installing TFS 2008 and Reporting Services as part of a scale-out installation? Check here. Once again, Reporting Services will give you all sorts of hell on IIS 7. Check here for fixes. TFS Application tier 2005 to 2008 UpgradeThe recommended way to upgrade TFS is using in-place upgrade mode. Basically, you pop the TFS 2008 install DVD in the drive of your existing TFS Server, and follow some simple steps. 1) Make a backup of your TFS and WSS databases, 2) go through the install process. When you go through the install process, TFS will pick up the Application tier's installed location and perform a database and application tier upgrade in-place. This process has drastically been improved in the TFS 2008 installer, however, there's one caveat that you should know about. If you want to upgrade your TFS installation *and* move it to a new server, you will need to uninstall your existing TFS installation, upgrade your database manually and then re-install the new TFS installation. Failure to do so will cause TFS to be configured as a failover node instead of a new TFS installation (whoops). If you're having problems, here's some likely fixes: A better upgrade guide than mine accounts for TF220064, Error 29109, 32000 and 32000. This guide goes through all the steps necessary to manually update an Internet-facing TFS 2005 installation to a new server with TFS 2008. Here's another small gem which describes an error in a number of SQL Server reports in the TFS installation that can cause 32000 errors to occur. Lastly, the best idea I've heard so far is to slipstream the SP1 install into your TFS 2008 install. TFS Database Tier UpgradeThere's a way to do an upgrade on just the TFS database and not the application tier in preparation of a TFS 2008 upgrade or addition of a failover cluster. Don't do it. I won't even post the instructions in this blog post because it's just a bad, bad idea. Let the TFS installer do this job for you -- it's better that way. You're one collation setting away from disaster if you try it on your own :) Team Build 2008Team Build 2008 is words better than it's predecessor, and is a very easy install. Simply insert the TFS 2008 DVD and click install. A new Windows Service and TfsBuild database will be created to hold build definitions. Technorati Tags: TFS 2008
Last week I completed (after 4 attempts) an Internet-facing TFS 2008 deployment. All the hard effort was certainly worth it as I'm now using TFS 2008 for some personal projects and I've got a demo server that will allow me to show others the benefits of Microsoft's Team Foundation Server 2008. Without further delay, let's jump right into the installation! First, I attempted to install TFS 2008 without reading the installation guide. I wouldn't recommend anyone do this, so please learn from my mistake. I built a Windows Server 2008 (64-bit) VM from the ground up, installed SQL Server 2008 and configured IIS 7. When I went to insert the TFS DVD into the drive and go install, low-and-behold, I learned that the TFS application tier isn't currently supported on 64 bit operating systems. This was completely my goof, and I've kept the Windows Server installation configured as a sandbox for other test projects. We'll consider this attempt number 1. For attempt #2, I decided to ditch Windows Server 2008 for this install altogether. Now that I had a 64-bit Windows 2008 sandbox server configured, I didn't have a compelling reason to try Windows Server 2008 for TFS, and apparently it only adds some additional installation steps anyway. For my second attempt, I decided to clone an existing 32-bit Windows Server 2003 installation that already had IIS 6 configured and simply install SQL Server 2005 and TFS on top. So, I did. After installing SQL Server 2005 I realized I hadn't changed the SID on the new clone, so I used NewSID to do so. As it turns out, you don't want to change the SID after installing SQL Server. I wasn't able to install Service Pack 2, or un-install SQL Server afterwards. So, I had a brick for an image, let's call this attempt number 2, and start again. For attempt #3, I changed the SID before the SQL Server 2005 installation and was able to install the service pack. A little exhausted from all this work, I went on to make some lunch. In my hate, I hadn't set a "sa" password during my SQL installation, and forgot that this server was exposed to the Internet. Wouldn't you know in the hour and half break I took, the server had already been compromised and over 6 different worms had been installed. Pasky little buggers those worms, so I scrapped the image once again and moved on to attempt #4. Up until now, all the TFS installation pains I had were really my fault. I didn't read the install guide, hadn't considered the implications of changing the SID after SQL installation and got careless with security. Determined to correct these silly user errors, I set out one more time to build my TFS 2008 server image. This time, I was able to complete the TFS 2008 server installation. I also installed Team Build. With security in mind, I created 2 different user accounts (TFSService and TFSReports) responsible for managing the TFS and SSRS services. Everything was going well until I checked the event log. Errors and errors were preventing me from successfully creating a Team Project using Team Explorer. Here's the rundown: Error messages from ASP.Net about not being able to get the private byte memory limit for the W3WP process. Turns out this is a result of the cloning process not successfully changing SIDs for all the ASP.Net keys. Thanks to "Joe unfiltered" and this post for providing a resolution. "Team Project Creation Failed" error message that appears when trying to create a new Team Project. This was caused as a result of the improper permissions on the folder: %AllUsers%\Application Data\Microsoft\Crypto\RSA\MachineKeysThis folder (and it's subfolders) must have Full Control for "Everyone". Thanks to this forum post for identifying the problem/solution. Still can't create a project? I couldn't, because I was using a fully qualified domain name (FQDN) as my server from an outside network. Turns out, everything's coded to the NetBIOS name of the server (how deliciously archaic) and you have to change these values. Thankfully, this is much easier in TFS 2008 than it was in TFS 2005. Check out this blog entry By Buck Hodges for the details. After doing these 3 things, I could not connect to my TFS server and create a new project. Source Control works, WSS works, SSRS works! Time to install Service Pack 1. Unfortunately, I had some hang-up's there, too: I got a cryptic error when installing the service pack, "There is a problem with this Windows Installer package. Please refer to the setup log for more information." Ever actually read one of those .MSI installer logs? Turns out, the FQDN issue noted above was causing problems with the installation of TFS, as the TFS setup couldn't use WMI to connect to the server anymore because of it's FQDN. Time to use the TfsAdminUtil to change the server name to it's NetBIOS name, then do the install, then use the TfsAdminUtil to change it back. This procedure was sort of indicated in this forum post, which gave me the right inspiration. At this point I now had the SP1 installation complete, but couldn't connect to my TFS server anymore. If you're getting 403 (Forbidden) errors, read this blog post a solution. Finally, I had my dazzling TFS server with Service Pack 1 installed (which I promptly took a snapshot of). Now I was ready to install the awesome TFS Web Access. This installation went fairly well, with one exception: Turns out, you can't install TFS web access as a virtual directory underneath an existing WSS 3.0 web site. This limitation stinks, and the installer won't warn you about it either. Instead, you'll get a crytic SecurityException when you attempt to access the Web Access URL. This forum post explains it all. The solution is to uninstall web access, and re-install it under a new IIS website. And there you have it! This is a chronicle of my TFS 2008 install experience. I'm going to be doing a server upgrade from TFS 2005 to TFS 2008 next week, which I imagine will yield more interesting results, so you can expect a follow-on post. What's most important to say is, despite all these installation headaches, I'm still entirely in love with TFS as a product. Technorati Tags: TFS 2008,Installation,Tips and Tricks
I recently blogged about my love-hate relationship with VSX (Visual Studio eXtensibility). On the one hand, Visual Studio 2008 provides a developer experience second-to-none, has stellar support for customization and is the most flexible IDE I've ever seen. On the other hand, writing packages (basically a fancy word for Visual Studio customizations) using the Visual Studio 2008 SDK is akin to eating the quadruple bypass burger at the Heart Attack Grill: It looks fantastic on paper but actually doing it will likely be hazardous to your health. I don't know why some product teams at Microsoft (Office, Visual Studio) have held on so dearly to their COM and OLE roots, but they have. I'm sure there's a good reason -- the type of good reason that would take too long to explain in this blog post, so let's leave it at they've got their reasons. Even though the Visual Studio 2008 SDK provides .Net Managed classes for almost all VSX operations, they're little more than 1:1 wrappers for their COM counterparts. Enter VSXtra. VSXtra is what the .Net Managed classes in the VS2008 SDK should have been. Basically, it's a declarative approach to Package design, which allows the developer to leverage familiar .Net constructs (Attributes, generic types, IEnumerable, etc.) to build Visual Studio 2008 customizations. The project is still in alpha (on CodePlex), but the Microsoft MVP (affectionately known only on his blog as DiveDeeper) authoring the project is off to a fantastic start. The better news? To date, the blogger has put together 33 presentations on how to leverage VSXtra to build your own Visual Studio customizations. Let's take a simple example. Say you want to enumerate through the Visual Studio 2008 task list (although that video sample does much more). It's absolutely fantastic that such a capability exists. Using the VS 2008 SDK without VSXtra, here's a small snippet of code that actually does this abomination. private List<IVsTaskItem> GetCurrentTasklistTasks()
{
List<IVsTaskItem> tasks = new List<IVsTaskItem>();
IVsTaskList taskList = (IVsTaskList)GetService(typeof(SVsTaskList));
IVsEnumTaskItems enumTaskItems;
taskList.EnumTaskItems(out enumTaskItems);
int result;
uint[] fetched = new uint[1];
do
{
IVsTaskItem[] taskItems = new IVsTaskItem[1];
result = enumTaskItems.Next(1, taskItems, fetched);
if (fetched[0] == 1)
{
IVsTaskItem taskItem = taskItems[0] as IVsTaskItem;
tasks.Add(taskItem);
}
}
while (result == VSConstants.S_OK && fetched[0] == 1);
return tasks;
}
Got a headache yet? I know I do. What's up with the need to manually create and consume an enumerator? Wouldn't it be much easier to just have a static method (e.g. GetTasks) that could return a generic list of tasks? Why does such a thing not exist in the VS 2008 SDK? There's a countless number of examples just like this littered through the SDK's documentation.
Thanks, DiveDeeper, from the bottom of my heart, for taking the time to create a managed library that the rest of us can actually use. I look forward to seeing this library progress into a 1.0.
Technorati Tags: VSX,Visual Studio 2008
I've got really mixed feelings on Visual Studio Extensibility. On the one hand, I can't imagine an IDE that comes even close to offering the flexibility, extensibility and overall great developer experience that Visual Studio offers. I'm sure I'm not alone when I tell you that I could never go back to a world without debugger visualizers, Intellisense or ReFactor/Resharper! plug-in support.
Then, there's the whole other world of VSX. The world where you have to go through zillions of pages of SDK documentation to figure out the best way to design, develop and then deploy your great idea for Visual Studio. You might imagine my surprise today when I stumbled upon this gem of a web site that showcases the greatest VSX projects of all time.
Microsoft's Visual Studio Gallery
Has everyone but me already known about this? I found the most bad-ass, super wonderful, awesome-est and groovy-est add-in for Office on this site -- TeamSpec by Personify Design. This little gem sync's up parts of Word documents with TFS, a feature I've imagined in an ALS tool for at least the past 5 years.
This type of thing will make ya' wonder -- what other little gems exist out there that we don't yet know about?
Technorati Tags: VSX,Visual Studio
Looks like the SP1 beta has some issues with Work Item tracking. Nothing that causes you to not be able to do work item tracking as much as make it extremely inconvenient.
More at:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=356083