当 Windows 服务安装程序因“错误 1001。无法在 MyService.exe 程序集中获取安装程序类型”而崩溃时。所以它无法加载 MyServiceInstaller。Fusion 日志记录显示它在尝试查找我的 Data.dll 程序集时失败。
问题是,它不需要加载 Data.dll 来创建我的服务安装程序对象。我认为直到调用包含这些类型的方法之前才触发类型加载。一些 MyServiceInstaller 方法引用来自 Data.dll 的类型,但不引用任何 ctor。
就好像加载 MyService.exe 或探测 MyServiceInstaller 的行为调用了 Data.dll 的加载。
据我了解,融合日志不会告诉我我需要知道什么。到那时为时已晚。我需要知道加载 MyServer.exe 或探测触发 Data.dll 加载的 MyServiceInstaller 是什么。
有业务要求 Data.dll 不能放在 MyService.exe 旁边。事实上,这确实解决了这个问题。我有一个自定义的 AssemblyResolve 事件,它在正常运行时加载 Data.dll。