Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#关闭程序集实例_C#_.net_Reflection - Fatal编程技术网

c#关闭程序集实例

c#关闭程序集实例,c#,.net,reflection,C#,.net,Reflection,当我使用Assembly.LoadFile方法时,在我的程序关闭之前,我对加载到程序集中的文件没有外部访问权限。另一方面,StreamReader允许我在使用完StreamReader.close()方法后关闭流 在使用Assembly.Load时,有什么方法可以做同样的事情吗 谢谢, 埃文:不,那是故意的 如果要“卸载”程序集,必须将其加载到单独的AppDomain中 如果您只想释放文件,可以先将其加载到字节[]中,然后使用(已弃用的)assemly.load(byte[]rawAssemly

当我使用Assembly.LoadFile方法时,在我的程序关闭之前,我对加载到程序集中的文件没有外部访问权限。另一方面,StreamReader允许我在使用完
StreamReader.close()
方法后关闭流

在使用Assembly.Load时,有什么方法可以做同样的事情吗

谢谢,

埃文:不,那是故意的

如果要“卸载”程序集,必须将其加载到单独的AppDomain中


如果您只想释放文件,可以先将其加载到
字节[]
中,然后使用(已弃用的)
assemly.load(byte[]rawAssemly)
方法。

您可以将程序集加载到单独的AppDomain中,然后卸载AppDomain-这是唯一的方法。

您可以将DLL文件读入
字节[]
(调用
File.ReadAllBytes
),然后使用字节数组调用
Assembly.Load

程序集将不会卸载,但您可以删除该文件。

这是不可能的。 在stackoverflow中看到另一个。 看这个


有关@BrokenGlass解决方案,请参见。

使用
AppDomain.CreateDomain()
将程序集加载到新的应用程序域,并将其与
AppDomainSetup
类的新实例一起使用,其卷影复制属性设置为true

这将复制要加载到目录中的程序集,并将加载副本,而不锁定原始程序集。如果要在完成程序集后进行清理,请使用
AppDomain.Unload(domain)

或者,您可以使用
Assembly.Load(File.ReadAllBytes(“path”))