0

我正忙于编写自定义 Windows 服务来处理服务器上的 MSMQ 消息,但安装(使用 InstallUtil)一直失败并出现以下错误:

“System.InvalidOperationException:无法在 'x'.exe 程序集中获取安装程序类型。引发内部异常 System.Reflection.ReflectionTypeLoadException 并显示以下错误消息:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性了解更多信息。”

我在服务中使用了 3 个我自己的程序集。所有这些都设置为“复制本地”,所有其他引用的程序集都在 GAC 中。我已验证不在 GAC 中的所有其他引用程序集都在包含我的服务的 .exe 文件的文件夹中。

我也尝试过签署我的程序集(如果这值得......)

我也在 Google 上查看过,但在大多数情况下,问题要么通过服务包解决,要么安装一些专有软件,这显然解决了缺少依赖项的问题。

我写了一个简单的 POC 服务,没有引用任何运行良好的“外部”程序集......

我正在 Windows 7 机器上开发和测试。

有任何想法吗?谢谢!

编辑: 好吧,很奇怪...我正在使用 PostSharp 进行异常处理和日志记录...我删除了对 PostSharp 和我的方面的引用,并且它安装没有问题... o_O 有什么理由为什么像 PostSharp 这样的东西不会播放Windows 服务好吗?

4

3 回答 3

0

如果没有安装程序,您是否尝试过使用所有依赖程序集注册您的服务?你成功注册了吗?如果这有效,那么 - 您的服务注册操作是安装创作步骤中的安装后完成操作吗?

于 2013-06-27T06:12:48.780 回答
0

好的,我发现了问题......我两次将相同的 PostSharp 方面应用于一个方法。所以我有Method1Method2,两者都[MyException]应用了方面。Method1调用Method2,因此该方面被“应用”了两次,这与服务安装程序的关系并不好。我删除了方面Method2,一切正常!

于 2013-06-27T06:26:04.883 回答
0

对不起我的英语。我在这个问题上工作了 2 天,我发现 installutil 仅在 installutil 和服务和依赖项文件在一个目录中时才有效。

installutil service -> 工作正常 installutil ServicePath\service -> 如果 ServicePath 目录中的依赖项不工作。

于 2014-04-30T07:00:37.803 回答