我需要显示所有程序集的列表GAC,以及它们的RuntimeVersion. 如果你这样做:
Assembly.ReflectionOnlyLoadFrom(systemAssemblyModel.Path).ImageRuntimeVersion;
然后内存被额外的 80 MB 堵塞,不清楚如何清除它们。如果您完全下载程序集,然后将其与域一起卸载。发生这种情况OutOfMemoryException:
internal class Program
{
static void Main(string[] args)
{
var appDomain = AppDomain.CreateDomain("TestDomain");
appDomain.DoCallBack(() => LoadModule());
var worker = (Worker) appDomain.CreateInstanceAndUnwrap(typeof (Worker).Assembly.FullName, typeof (Worker).FullName);
var a1 = worker.GetAssembliesFullName();
foreach (var assemblyFullName1 in a1)
{
Console.WriteLine(assemblyFullName1);
}
Console.WriteLine();
var a2 = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly1 in a2)
{
Console.WriteLine(assembly1.FullName);
}
AppDomain.Unload(appDomain);
Console.ReadKey();
}
private static void LoadModule()
{
foreach (var systemAssemblyModel in AssemblyLoader.LoadAssemblies())
{
try
{
var version = Assembly.Load(systemAssemblyModel.Desc.Path).ImageRuntimeVersion;
}
catch (Exception)
{
}
}
}
}
class Worker : MarshalByRefObject
{
public string[] GetAssembliesFullName()
{
return AppDomain.CurrentDomain.GetAssemblies().Select(a => a.FullName).ToArray();
}
}
也许有人会派上用场。通过建议
连接库并使用以下代码
它在不使用添加的情况下对我有用。库,但只能得到像 1.0.5.124 这样的版本:
这是一个返回更多信息的简单方法: