Windows服务:该模块应包含程序集清单

时间:2015-03-27 22:35:31

标签: c# windows-services

我有一个构建为Windows服务的C#程序。我上周测试了它,它工作正常,但今天我收到了一个错误。

当我尝试使用installutil.exe进行安装时,出现错误:

  

无法加载文件或程序集[文件名]或其依赖项之一。该模块应该包含一个程序集清单。

重建项目无效。我还在任务管理器中注意到该服务仍然列出并正在运行。考虑到可能干扰安装的可能性,我尝试通过installutil卸载,但再次收到相同的错误消息。

我已经看到了许多与此错误相关的其他问题,但大多数问题都没有答案,或者与其独特情况相关的非常具体的答案。有没有人发生这种情况,你是如何解决的?任何想法都表示赞赏。

更新

我通过命令提示符使用“sc delete”命令成功卸载了该服务,但在尝试重新安装时,我仍然从installutil收到相同的错误。

更新2:

为了尝试某些东西,我从项目中删除了bin文件夹,重新打开了解决方案,并进行了清理和构建。它仍然无法安装,但现在我有一个不同的消息:

  

此程序集由比当前加载的运行时更新的运行时构建,无法加载。

问题:

什么会导致运行时不匹配?据我所知,我只使用过.NET Framework 4.5而且没有偏离。是否有值我应该关注/改变以解决这个问题?

更新3:

这是我到目前为止所尝试的内容:

一个答案表明正在使用的installutil版本很重要。我一直在运行v2.0.50727,但也有一个v4.0.30319,我没想过要尝试。运行此导致:

  

尝试加载格式不正确的程序......

我愿意处理这个错误, if 它可以解决问题。但是,由于我在弹出第一个错误之前成功运行了v2.0.etc,我不得不认为这不是问题。

在App.config中,有一行“支持Runtime version = v4.0”。我把它改为4.5,但它没有好坏的效果。

我尝试将目标框架(在项目属性下)切换到4.0,但这会导致错误:

  

使用与当前目标框架不同的目标框架等安装了一些NuGet包...

这是指EntityFramework,我宁愿不再开始搞乱NuGet,除非它是唯一的方式(上次是一场噩梦)。

我尝试在目标服务器(它最终将部署到的机器)上安装服务并得到相同的错误。这使我认为这是项目/解决方案的问题,而不是电脑。

1 个答案:

答案 0 :(得分:0)

看起来像装配加载问题。使用Fuslogvw.exe实用程序。从Visual Studio命令提示符启动它。单击“设置”按钮,然后单击“#34;将绑定失败记录到磁盘"单选按钮。切换回VS并启动程序并等待异常发生。返回Fuslogvw,单击“刷新”按钮,然后双击添加的条目。它会显示它找到的文件。

另一种可能性是尝试使用要求CLR版本2的EXE加载.NET 4程序集。这需要一个强制使用CLR 4的app.exe.config文件。