加载后删除装配

ᔕIᑎ*_*ᑎᗪI 4 c# .net-assembly

我正在尝试使用以下代码加载MSIL程序集:

        string PathOfDll = "PathOfMsILFile (Dll)";
            Assembly SampleAssembly;
            SampleAssembly = Assembly.LoadFrom(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

在该程序的结尾,我应该删除该文件:

            File.Delete(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

它导致错误:'System.UnauthorizedAccessException'

Additional information: Access to the path 'Path' is denied .
Run Code Online (Sandbox Code Playgroud)

它与UAC无关,只是因为我在程序开始时加载程序集,而当我想手动删除它时,它表示该文件正在vshost.exe中使用。所以我说这只是为了表明它是用于组装的!

那么有什么方法可以摆脱它(类似于卸载此程序集)?

注意:我正在编写代码来运行垃圾收集器,但此问题仍未解决。

谢谢。

Vin*_*kal 5

一种可能的方法是:代替LoadFromLoad如下所示使用。

Assembly asm = null;
try
{
    asm = Assembly.Load(File.ReadAllBytes(path));
}
catch(Exception ex)
{

}
Run Code Online (Sandbox Code Playgroud)