我正忙于编写自定义Windows服务来处理服务器上的MSMQ消息,但安装(使用InstallUtil)仍然失败并出现以下错误:
“System.InvalidOperationException:无法获取安装程序类型 'x'.exe程序集。内在的例外 System.Reflection.ReflectionTypeLoadException被抛出了 以下错误消息:无法加载一个或多个请求的 类型。检索LoaderExceptions属性以获取更多信息。“
我在服务中使用了3个自己的程序集。所有这些都设置为“复制本地”,所有其他引用的程序集都在GAC中。我已验证不在GAC中的所有其他引用程序集都在包含我的服务的.exe文件的文件夹中。
我也尝试过签署我的程序集(如果值得的话......)
我也在谷歌上看过,但在大多数情况下,问题要么通过服务包解决,要么安装一些专有软件,这显然解决了缺失的依赖问题。
我写了一个简单的POC服务,没有引用任何工作正常的“外部”程序集......
我正在开发和测试Windows 7计算机。
有什么想法吗? 谢谢!
修改 好奇怪...我正在使用PostSharp进行异常处理和日志记录...我删除了对PostSharp和我的方面的引用,并且它安装没有问题... o_O 有什么理由说像PostSharp这样的东西在Windows服务中不能很好地运行吗?
答案 0 :(得分:0)
如果没有安装程序,您是否尝试使用所有依赖程序集注册服务?你成功注册了吗? 如果这有效,那么 - 您的服务注册操作是否是安装创作步骤中的安装后完成操作?
答案 1 :(得分:0)
好的,我发现了问题......我对方法应用了两次相同的PostSharp方面。我有Method1
和Method2
,两者都应用了[MyException]
方面。 Method1
调用Method2
,因此该方面已“应用”两次,但与服务安装程序无关。我从Method2
删除了方面,一切正常!
答案 2 :(得分:0)
对不起我的英文。我在这个问题上工作了两天,我发现只有在一个目录中的installutil和服务以及依赖项文件时,installutil才有效。
installutil服务 - >工作良好 installutil ServicePath \ service - >如果ServicePath目录中的依赖项不起作用。