0

我正在使用 C# 开发 Windows 服务。我想用 Windows 服务加载 CLIPSLIB.dll。首先,我尝试在 vs2010 中将 CLIPSLIB.dll 作为控制台应用程序写入服务,并将 CLIPSLIB.dll 放在项目调试文件夹中。它工作得很好。但是当我安装它并作为 Windows 服务运行时,它会抛出这个异常。

无法加载文件或程序集“Mommosoft.ExpertSystem,版本=0.3.0.2,文化=中性,PublicKeyToken=20382083c6694bdc”或其依赖项之一。该系统找不到指定的文件。

我发现这是因为 Windows 服务无法加载相关的 dll。那么我应该把外部 dll 放在什么位置来加载 Windows 服务呢?

4

2 回答 2

1

Scott Hanselman 有一篇文章描述了如何调试程序集加载错误。这种方法的缺点是它需要更改注册表项并重新启动才能启用融合加载程序日志记录。

那篇文章可以在这里找到: http ://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx

因为您正在编写 Windows 服务,请检查程序集的引用是否引用 bin 目录而不是其他路径。否则,融合加载程序日志将识别它试图从哪里加载程序集。

至于 .dll 文件,将文件夹添加到您的项目并在那里添加 .dll 文件,将构建属性从不复制更改为如果更新则复制,以便 .dll 文件最终出现在您的构建输出 bin 路径中。

于 2013-01-04T18:22:44.323 回答
0

您必须重建 CLIPSLib 解决方案,

  1. 下载此链接中的所有文件:链接: https ://svn.code.sf.net/p/clipsnet/code/

    2.打开CLIPSLib文件夹中的CLIPSLib.sln

    3.右键单击解决方案并选择重建解决方案。

    4.转到您的 CLIPSLib.dll 和 CLIPSNet.dll 位于 ..\ ..\mlplatform\bin 文件夹中的 CLIPSLib 文件夹。

    希望这有帮助。

于 2016-06-27T21:11:32.883 回答