4

我正在尝试放置一个Windows服务,它承载了一个WCF服务。 我的项目结构如下:服务无法启动:无法加载程序集

  • 服务
  • Service.Contracts
  • Service.Host
  • Service.Setup

的Service.Host项目包含ProjectInstaller,服务.Setup投影WindowsInstaller。

现在,一切都建立并安装就好了,但是当我尝试启动服务时,它会立即停止在我的事件日志中看到以下消息运行:

Service cannot be started. System.TypeLoadException: Could not load type 'Service' from 
assembly 'Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 
at Host.Service.OnStart(String[] args) 
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state) 

当我检查的输出文件夹我的安装项目我可以看到Service.dll以及Service.Contracts.dll ...这让我无法防范。如何在一切正常时进行调试?该怎么办?

+0

什么是您的服务程序集依赖于,参考明智?您的服务进程是否具有足够的权限来加载这些引用?你提到你已经检查过安装项目的输出文件夹,但是实际安装的是程序集吗? – Maarten 2012-08-01 06:42:19

+0

你知道如何使用“附加到进程”吗? – 2012-08-01 06:49:06

+0

@Maarten:服务程序集依赖于某些.NET程序集和Service.Contracts。我如何检查Maarten?我只知道我在服务列表中看到了该服务,但无法启动它,因此我猜它已正确安装。 – fuaaark 2012-08-01 06:52:15

回答

2

修复:名称空间声明的愚蠢错误。

1

对于这样的情况(失败在开始时发生),可能很难连接调试器。如果我仍在开发中,我喜欢在System.Diagnostics.Debugger.Launch()的额外声明中加入。代码运行时,这将自动运行launch a debugger。我建议在OnStart的下方放置该行代码,以查看是否可以从该问题中获得更多信息。

+0

这对我来说没有什么区别...调试器没有启动。 – 2013-02-05 17:19:12