I don't like the idea of paying for (or installing) a tool to just show me some simple relationships between my Visual Studio projects, but it's something that is pretty useful when trying to tidy up a huge legacy codebase.

I whipped together a quick PowerShell script that spits out project references in a format ready for pasting into yuml.me to draw a chart:

function Get-ProjectReferences
    dir $rootFolder -Filter *.csproj -Recurse |
        # Exclude any files matching our rules
        where { $excludeProjectsContaining -notlike "*$($_.BaseName)*" } |
function Select-References
        [Parameter(ValueFromPipeline, Mandatory)]
        $projectName = $_.BaseName
        [xml]$projectXml = Get-Content $_.FullName
        $ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }
        $projectXml |
            # Find the references xml nodes
            Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns |
            # Get the node values
            foreach { $_.node.InnerText } |
            # Exclude any references pointing to projects that match our rules
            where { $excludeProjectsContaining -notlike "*$_*" } |
            # Output in yuml.me format
            foreach { "[" + $projectName + "] -> [" + $_ + "]" }
$excludedProjects = "Test1", "Test2"
Get-ProjectReferences "C:\Users\DanTup\Documents\MyProject" -excludeProjectsContaining $excludedProjects | Out-File "C:\Users\DanTup\Documents\MyProject\References.txt"

The output will look something like this:

You may also like Chromebook Comparison Chart, Drone Comparison Chart and how to easily split Amazon referrals between Amazon US and Amazon UK.

Don't forget to check out my kids on YouTube! Amazon Echo Dot (2nd Generation) Review, GP Toys Luctan S912 RC Car Review, Syma X5HC-1 Drone/Quadcopter Review.