C# EXE(加上从属DLL)已复制到临时文件夹并启动,但仍从原始文件夹加载DLL
我有一个主应用程序,它使用一个单独的“软件包安装程序”应用程序在更新版本可用时进行自我更新。此更新将包括主应用程序、所有DLL依赖项以及软件包安装程序本身。过程如下所示:C# EXE(加上从属DLL)已复制到临时文件夹并启动,但仍从原始文件夹加载DLL,c#,.net,process.start,assembly-loading,C#,.net,Process.start,Assembly Loading,我有一个主应用程序,它使用一个单独的“软件包安装程序”应用程序在更新版本可用时进行自我更新。此更新将包括主应用程序、所有DLL依赖项以及软件包安装程序本身。过程如下所示: 主应用程序检测到版本升级可用 主应用程序将软件包安装程序EXE复制到临时文件夹,以及它所依赖的DLL和它们所依赖的DLL。换句话说,运行软件包安装程序所需的最少组件被复制到temp文件夹 主应用程序使用Process.Start从临时文件夹运行软件包安装程序 主应用程序关闭 软件包安装程序将新的EXE和DLL复制到应用程序文件
发生了什么,我可以做些什么来抑制额外DLL的加载?查看MSDN文档以了解更多信息。它注意到
当UseShellExecute为true时,启动可执行文件的应用程序的工作目录也是可执行文件的工作目录。
ProcessStartInfo startInfo = new ProcessStartInfo("c:\\path\\to\\filename.exe");
startInfo.UseShellExecute = false;
Process.Start(startInfo);
如果不起作用,请尝试
startInfo.WorkingDirectory=“c:\\path\\to”代码>使用Fuslogvw.exe,记录所有绑定。向我们显示它加载的DLL之一的跟踪。在ProcessStartInfo上设置WorkingDirectory已起作用(使用UseShellExecute=false未起作用)!谢谢