0

我对使用主 DLL 的 Windows 服务有一个奇怪的问题,名称为: Process.dll 。Windows 服务调用 onstart():

Process client = new Process();

client.Method();

在此方法 Process.dll 中使用另一个 dll。但是 Windows 服务没有找到 a、b、c dll。不开机!简单的服务工作正常,但在架构下无法正常工作,而不是 atart Windows 服务。你能帮我如何加载另一个 dlls.Or 任何解决方案吗?如何根据以下架构编写代码?(a,b,c dll 是静态引用。)

在此处输入图像描述

4

2 回答 2

0

我发现当尝试从 Windows 服务动态加载文件(无论是配置文件还是 DLL)时,您需要指定要加载的文件的位置,即使它与服务的 EXE 位于同一目录中。

这是我用来动态获取 Windows 服务目录位置的片段,然后您可以从中使用来自aliboy38的代码片段来加载您的 DLL。

var exePath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

Assembly a = Assembly.LodFrom(Path.Combine(exePath, "YourDLL.dll"));

Type t = a.GetType("YourType");

object obj = Activator.CreateInstance(t);

希望这可以帮助。

于 2012-06-15T08:46:11.520 回答
0

尝试这个 :

    Assembly a = Assembly.LoadFrom("YourDLL.dll");

    Type t = a.GetType("YourType");

    object obj = Activator.CreateInstance(t);
于 2012-06-15T07:21:18.220 回答