ティすべての参照を見つけるのにかなり良い仕事をします。 "temp"は、トレースしたすべての参照のダンプになります。
private void PerformReferenceAnalysis()
{
StringBuilder builder = new StringBuilder();
HashSet<string> loadedAssemblies = new HashSet<string>();
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<string> 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);
}
}
}
Assembly.GetReferencedAssemblies()で簡単に書き込むことができます。 EXEで開始します。もちろん、.configファイルとパブリッシャーポリシーでかなり厄介なアセンブリファイルを*見つける*ことができる必要があります。ユニバーサルユーティリティではない理由。 –