如何在Windows服务中的主dll上加载一些dll?

时间:2012-06-15 06:55:25

标签: c# .net visual-studio-2010 windows-services

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

Process client = new Process();

client.Method();

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

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个:

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

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

    object obj = Activator.CreateInstance(t);

答案 1 :(得分:0)

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

以下是我用来动态获取Windows服务目录位置的代码段,然后您可以使用 aliboy38 中的代码段加载DLL。< / p>

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);

希望这有帮助。