在 C# 中启动具有不同 DLL 路径的进程
Posted
技术标签:
【中文标题】在 C# 中启动具有不同 DLL 路径的进程【英文标题】:Start a process with different DLL path in C# 【发布时间】:2014-09-24 12:53:08 【问题描述】:我正在使用 Process.Start("MyProcess.exe") 函数启动一个进程。
“MyProcess.exe”使用 DLL。 Exe 和 DLL 在同一个文件夹中。
我已修改此 DLL 并将其定位到具有相同名称的不同路径中。
在某些情况下,我想用修改后的 DLL 启动 MyProcess.exe,我不想删除原始 DLL。
我的 Exe 应该与位于不同文件夹的秒 DLL 一起使用,而不应该与位于同一文件夹的 DLL 一起使用。
我尝试了以下代码,但对我不起作用
processStartInfo.EnvironmentVariables["PATH"] = "PATH_B;" + processStartInfo.EnvironmentVariables["PATH"];
processStartInfo.WorkingDirectory = Path.GetDirectoryName("PATH_B");
processStartInfo.UseShellExecute = false;
myProcess = Process.Start(processStartInfo);
【问题讨论】:
DLL 是 .NET dll 还是原生的? 您可以通过应用配置文件将编译时绑定重定向到其他程序集。看看Redirecting Assembly Versions 【参考方案1】:由于内置rules within the operating system,系统总是按照以下顺序搜索目录:
加载应用程序的目录。 系统目录。 16 位系统目录。 Windows 目录。 当前目录。 PATH 环境变量中列出的目录。【讨论】:
【参考方案2】:如果 DLL 的版本与您使用的不同
Specifying an Assembly's Location
如果是.Net,则在MyProcess.exe的配置文件中
【讨论】:
以上是关于在 C# 中启动具有不同 DLL 路径的进程的主要内容,如果未能解决你的问题,请参考以下文章