Wednesday, July 30, 2008

Visual Studio 2008 XAML Intellisense

I noticed the other day that that XAML Intellisense had stopped working in Visual Studio 2008. A quick web search revealed that others had experienced this problem after installing a version of the Windows SDK. I installed the Windows SDK for Windows Server 2008 a couple of weeks ago so it may have been the culprit. A bit more digging revealed that the Windows SDK team have published a workaround for this problem over on their blog. I followed the workaround and XAML Intellisense is now working again.

Click here for the Windows SDK Workaround.

XAMLIntellisenseBug

Wednesday, July 23, 2008

Microsoft Distributed Cache

I recently downloaded and had a look at Velocity aka Microsoft Distributed Cache. The team released CTP 1 in early July so it will be interesting to see how Velocity develops over the coming months. The basic idea is to provide a general purpose, distributed, in-memory cache. The cache is provided in the form of a cluster with load balancing behind the scenes. The below diagram helps to explain.

VelocityDiagram

The cache cluster includes a configurable number of cache hosts, each running as a Windows Service. The cluster requires a network share to distribute configuration data including the eviction and expiration policy. Velocity includes a console application to administer the cache.

Velocity doesn't include disk persistence so if the cluster goes down, the cache is reset. You can however attach metadata tags to cache items. This makes it really easy to retrieve groups of objects based on matching metadata.

Working with the cache is pretty straight forward from a .NET application. The Velocity install includes client API with the usual CRUD operations. Here's an example of adding a string to the cache.

using System.Data.Caching;

CacheFactory CacheCluster1 = new CacheFactory();
Cache Cache1 = CacheCluster1.GetCache("Cache1");

Cache1.Add("cachedStringKey1","This string will be stored in cache");

Velocity is targeted at clustered web environments where you can gain some performance benefits by having clustered in-memory state. The Velocity team have also provided a SessionStateStoreProvider that allows you to use it for managing your session state. Here's an article that explains how to configure your ASP.NET application to use Velocity for custom session state. One can only assume that Velocity will become a part of IIS in a future release?


Tuesday, July 15, 2008

Add-Ins for .NET Reflector

There are a number of useful .NET Reflector Add-Ins published up on CodePlex. I tried out BamlViewer today, which allows you to reflect assemblies containing BAML resources and browse the corresponding XAML. Pretty handy if you're working with WPF.

BamlViewer

Another Add-In you should know about is Reflexil. This tool allows you to hack the IL inside a loaded assembly and then write the changes to disk.  You can do the same job with a tool called PERWAPI, which is very useful for writing front-end .NET compilers. But Reflexil just makes it so much easier...

ReflexIL

Another Add-In I need to checkout is Diff. This tool allows you to compare code differences between assemblies. I wonder if it works for embedded resources? If it does, this little Add-In could be very useful as a sanity check during localization.

Diff2 

Monday, July 14, 2008

.NET 3.0 and mscorcfg.msc

I went searching for the .NET Framework Configuration Tool on my Vista machine today and couldn't find it! The tool used to be at %systemroot%/Microsoft.NET/Framework/<version>/mscorcfg.msc. Anyone got any ideas? I did a bit of digging and some say the tool is now included in the Windows SDK. However, I've installed the Windows Server 2008 SDK and can't find mscorcfg.msc.