【发布时间】:2010-05-01 08:45:26
【问题描述】:
我编写了一个 C# Windows 服务来处理我们应用程序的任务调度。我正在尝试将“业务规则”程序集移动到调度应用程序的 bin 子目录中,以便我们更轻松地进行更新(停止服务,删除 bin 文件夹中的所有文件,替换为新文件,启动服务)。
我加了
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;"/>
</assemblyBinding>
</runtime>
到服务的应用程序配置,如果服务作为控制台应用程序运行,它可以正常工作。问题是当服务作为 Windows 服务运行时它不起作用。似乎当 windows 运行该服务时,应用程序配置文件被正确读取,但随后该服务被执行,就好像它在 c:\windows\system32 而不是实际的 EXE 位置一样,这会使工作变得混乱。
我们有很多程序集,所以我真的不想使用 GAC 或 <codeBase>。是否可以让 EXE 将其基本目录更改回它作为服务运行时的位置?
【问题讨论】:
-
如果将 DLL 与 EXE 放在同一个文件夹中,它会起作用吗?然后代码库很好。我没有看到
<configuration>元素,它在那里吗?使用 fuslogvw.exe 解决分辨率问题。 -
是的,当 EXE 作为服务运行并且程序集与 EXE 位于同一文件夹中时,一切正常。是的,配置文件有
(实际配置要长得多,这就是我没有发布整个内容的原因)。我会试试 fuslogvw.exe。
标签: c# windows-services