C#在运行时加载程序集

C#在运行时加载程序集,c#,runtime,.net-assembly,C#,Runtime,.net Assembly,我有一个正在运行的应用程序,它在运行时加载程序集。我有一个文件夹,里面装满了.dll文件。无论何时调用方发出请求,我的应用程序都会查看选定的dll并加载它。这是我的代码片段 if (File.Exists(Path.Combine(assemblySavePath, proxy.AssemblyFileName))) { Assembly = Assembly.LoadFile(Path.Combine(assemblySavePath, proxy.AssemblyFileName))

我有一个正在运行的应用程序,它在运行时加载程序集。我有一个文件夹,里面装满了.dll文件。无论何时调用方发出请求,我的应用程序都会查看选定的dll并加载它。这是我的代码片段

if (File.Exists(Path.Combine(assemblySavePath, proxy.AssemblyFileName)))
{
    Assembly = Assembly.LoadFile(Path.Combine(assemblySavePath, proxy.AssemblyFileName));  
    // after this just use it normally
}

基本上,每当有请求时,我都会加载它。所以我的问题是,就性能而言,这是正确的方法吗?因为我想知道是否有一种方法可以首先查看memory/GAC/AppDomain,检查它是否存在,而不需要每次有请求时都加载file()。

您至少应该有一个列表,列出您已经加载的程序集并检查它。由于无法从AppDomain卸载程序集,因此不必再次尝试加载它。

是的,实际上我就是这么想的。如何检查运行时?如何再次检索程序集实例?您可以将路径和程序集保存到字典中。但是为什么以后需要程序集实例呢?为了节省内存,您可以使用另一个
AppDomain
将程序集保存到其中。性能方面,您应该将它们加载到当前的
AppDomain
,如@nvoigt所示。