我正在尝试使用以下代码加载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中使用。所以我说这只是为了表明它是用于组装的!
那么有什么方法可以摆脱它(类似于卸载此程序集)?
注意:我正在编写代码来运行垃圾收集器,但此问题仍未解决。
谢谢。
一种可能的方法是:代替LoadFrom,Load如下所示使用。
Assembly asm = null;
try
{
asm = Assembly.Load(File.ReadAllBytes(path));
}
catch(Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud)