2015-06-03 82 views
1

注意:我已经对这个问题做了详尽的研究,有很多假设的解决方案,其中没有任何实际为我工作。服务无法启动。 System.IO.FileNotFoundException:无法加载文件或程序集“assemblyname.dll”

在客户端计算机上成功安装Windows服务之后,我注意到它并不像它应该那样自动启动。当我尝试手动启动它时,出现上述错误。我查看了事件查看器日志,这里是在那里记录的错误:“服务无法启动System.IO.FileNotFoundException:无法加载文件或程序集”assemblyname.dll“或它的某个依赖项。找不到“

事实证明,我的.dll,即使我可以在安装文件夹中看到它(我并排),系统无法连接到它。有人建议确保应用程序文件名和配置文件名匹配,我的服务已经完成了,并且我的服务被设置为在本地系统帐户上运行。注意:在开发框中一切正常,并且客户端机器具有运行服务所必需的4.5 .NET框架。

问题:我该如何解决这个问题?我如何确保客户机上的系统能够看到该服务使用的.dll文件?

任何帮助在这里赞赏。让我知道是否需要进一步澄清。

感谢

+0

可执行文件与dll是否在同一个文件夹中?我假设是,但我想验证。 – CDC

+0

@DavidW该服务是在64位系统上开发的,但是编译为32位 –

+0

@CDC,所有文件都在同一个文件夹中。 –

回答

1

可能的解决方法

尝试在x86上编译它,可能是一个64位的DLL,请确保您有32位版本。

+0

感谢您的帖子@NickProzee ,我仔细检查了.dll的体系结构,corflags告诉我它实际上设置为AnyCPU,所以这不应该成为问题。 (还是)感谢你的建议。 –

+0

尝试将dll放在与.exe相同的文件夹中 –

+0

调试这些文件的常用方法是Fusion Log Viewer。它会告诉你它试图加载的内容和它看起来的位置。如果Dll字面上与服务exe文件在同一个文件夹中,那么Dll与AssemblyVersion中的客户端要求,强名称等不匹配。它不太可能是体系结构,因为负载会因BadImageFormatException而失败,而不是“无法找到文件”。请注意,您也可能错过了“assemblyname.dll”所依赖的程序集。 – PhilDW

1

好吧我终于解决了我的问题。我运行了依赖关系的步行者,它给了我一个缺失的dll列表,但事实证明他们与我使用的dll无关。但我决定用可再发行组件安装Win 7的Windows SDK,这解决了我遇到的问题。在那里你有人,希望这有助于其他人前进。干杯!

+0

你会让你的客户安装Windiows SDK吗? – PhilDW

+0

@PhilDW我会根据需要将其构建到我的安装程序中,我将添加逻辑来查找它,如果它不存在,我将向他们展示具有下载链接的启动画面,很像检查正确的.Net框架。 –

相关问题