未能加载文件或程序集“SrvCommon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”

一.在写WINFORM程序的时候

在加载DLL时,出现了如下的异常:未能加载文件或程序集“SrvCommon, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null”或它的某一个依赖项。

试图加载格式不正确的程序。


根本原因为:SrvCommon.DLL文件是X86平台生成的。而你的winform程序是Anycpu平台。

解决方法:SrvCommon.DLL平台改为Anycpu平台。  或者把winform程序改为X86平台使用即可.





二.在写WINDOWS SERVICES程序也遇到相同的问题。

在加载DLL时,出现了如下的异常:未能加载文件或程序集“winCommon, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null”或它的某一个依赖项。

试图加载格式不正确的程序。

问题原因如下:

WINDOWS SERVICES程序是Any CPU,在添加winCommon.DLL引用,由于这个DLL文件平台是X86的导致服务程序不能调用到它。报错如上所示的错误。

解决方法:1.把winCommon项目的平台改为Any CPU重新编译即可。备注:如果winCommon项目引用了其他的XXX.DLL文件,XXX的项目如果也是X86的,那你的服务程序也同样报错 【未能加载文件或程序集“XXX, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null

解决方法:2.WINDOWS SERVICES程序的平台改为X86的,这样无论引用什么样平台的DLL,都可以调用,因为低平台是可以调用高的

[X86---->Any CPU(Any CPU--->X86会报错不行的)],其实就是平台的问题.

解决方法:3.留意到如下的框架是.NET Framework 4生成的服务程序,没有勾选首选32位功能(图1所示)

这个功能是在.NET Framework 4.5才有的,如图2,所以在编写服务程序时候,使用.NET Framework 4.5框架就可以解决以上问题,不用考虑平台性。