一、背景
笔者自己使用vs2017编写了一个数据采集的windows服务程序(.net4.5),同时又编写了一个控制windows服务安装卸载的winform程序(.net3.5)。
二、错误信息
{System.BadImageFormatException: 未能加载文件或程序集“file:///E:\***\***.exe”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
三、分析
看了一篇博客,老哥也是遇到这问题,看他提到了要将VS项目属性改为x86,还提到windows上安装.net4.0,由.net4.0受到启发,
x86的话 windows服务程序和控制安装卸载的winform都已改为x86。
难道是它们的.net版本不一致?
windows服务是.net4.5
winform是3.5
然后将winform改为.NET4.5,重新编译,可以安装,卸载windows服务了。
四、原因
个人水平原因及网上也没搜到相关答案,这个原因只能去猜测,目前我也没啥证据。
猜测winform程序卸载windows服务时,可能会调用windows服务相关的.NET底层的一些库也好,组件也好。
因为之前winform是3.5编写的,安装或卸载时,调用windows服务相关的.NET 4.5的基础组件或库时,就可能出现问题了。
即出现了上面的错误信息。
这个原因分析属于猜测,如有准确答案,望留言指教!