我有一个关于使用主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是静态参考。)
答案 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);
希望这有帮助。