With Visual Studio, I can see the dll references as the attached picture as an example. With this reference information, I can open the (from the example) Composition projec
This code will do a fairly good job at finding all the references. "temp" will be a dump of all the references it traced.
private void PerformReferenceAnalysis()
{
StringBuilder builder = new StringBuilder();
HashSet loadedAssemblies = new HashSet();
PerformReferenceAnalysis(System.Reflection.Assembly.GetExecutingAssembly(), builder, string.Empty, loadedAssemblies);
string temp = builder.ToString();
}
private void PerformReferenceAnalysis(System.Reflection.Assembly assembly, StringBuilder builder, string leadingWhitespace, HashSet loadedAssemblies)
{
if (builder.Length > 0)
{
builder.AppendLine();
}
builder.Append(leadingWhitespace + assembly.FullName);
System.Reflection.AssemblyName[] referencedAssemblies = assembly.GetReferencedAssemblies();
foreach (System.Reflection.AssemblyName assemblyName in referencedAssemblies)
{
if (loadedAssemblies.Contains(assemblyName.Name))
{
continue;
}
loadedAssemblies.Add(assemblyName.Name);
System.Reflection.Assembly nextAssembly;
try
{
nextAssembly = System.Reflection.Assembly.ReflectionOnlyLoad(assemblyName.FullName);
}
catch (Exception)
{
try
{
nextAssembly = System.Reflection.Assembly.ReflectionOnlyLoad(assemblyName.Name);
}
catch (Exception)
{
nextAssembly = null;
}
}
if (nextAssembly != null)
{
PerformReferenceAnalysis(nextAssembly, builder, leadingWhitespace + "| ", loadedAssemblies);
}
}
}