Seeing "System.Guid" as the value for a variable that contains a Guid is really not helpful. Debugging in C# correctly displays the actual value in the same situation.
Visual Studio provides an avenue to rectify this issue. You can create a new class library project and replace the contents of the default class file with the below code snippet.
<Assembly: DebuggerDisplay("{ToString()}", Target:=GetType(Guid))> Public Class EmptyGuidVisualizerClass ' Empty End Class
After compiling, copy the DLL to "%USERPROFILE%\My Documents\Visual Studio 2010\Visualizers" and restart Visual Studio. The Guids should resolve to their actual values.
After installing this in Visual Studio 2010, I found that it also works in Visual Studio 2008. The DLL should, likewise, be placed in the Visualizers directory in the Visual Studio 2008 folder in My Documents.
I created a batch file that can be used to install the DLL for 2010 and 2008. The batch file and the DLL must be in the same directory.
@ECHO OFF SET STARTDIR=%CD% pushd . cd "%USERPROFILE%\My Documents" IF EXIST ".\Visual Studio 2008" ( pushd . echo "2008 Exists!" cd ".\Visual Studio 2008" IF NOT EXIST ".\Visualizers" ( echo "Creating Visualizers Directory." mkdir Visualizers ) copy "%STARTDIR%\GuidVisualizer.dll" .\Visualizers popd ) IF EXIST ".\Visual Studio 2010" ( pushd . echo "2010 Exists!" cd ".\Visual Studio 2010" IF NOT EXIST ".\Visualizers" ( echo "Creating Visualizers Directory." mkdir Visualizers ) copy "%STARTDIR%\GuidVisualizer.dll" .\Visualizers popd ) popd
After creating it, I googled and found someone who came up with almost the same code, http://www.michelrenaud.com/?p=7 . This blog post contains pictures if you care to see the end result. Microsoft Connect has a similar resolved issue: https://connect.microsoft.com/VisualStudio/feedback/details/89801/show-guid-value-in-debug.
No comments:
Post a Comment