Я предлагаю вам выгрузить модули и типы из загруженных сборок в файл журнала в соответствующее время. Затем вы можете найти таинственную сборку и найти в ней типы. Например:
using System;
using System.Xml.Linq;
public class Test
{
static void Main()
{
Console.WriteLine("Before");
DumpAssemblies();
DoSomethingWithXml();
Console.WriteLine("After");
DumpAssemblies();
}
static void DoSomethingWithXml()
{
new XDocument();
}
static void DumpAssemblies()
{
Console.WriteLine("Assemblies loaded:");
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
Console.WriteLine(" Assembly {0}:", assembly.FullName);
foreach (var module in assembly.GetModules())
{
Console.WriteLine(" Module {0}:", module.Name);
foreach (var type in module.GetTypes())
{
Console.WriteLine(" {0}", type.FullName);
}
}
}
}
}
Как только вы узнаете, какие типы в каких сборках, это, вероятно, должно объяснить, что происходит. Если вы видите загадочные модули без каких-либо типов или с типами, которые не имеют особого смысла, вам нужно будет добавить больше диагностики - например, перечисление ресурсов внутри модулей или методов внутри типов и т. д.