今天,在尝试运行我的网络应用程序时,我开始遇到这个恼人的问题。
方案如下:
我有一个Web应用程序项目(从现在开始WAP)和4个库项目(BusinessEntities,BusinessLogic,DataAccess和Utils)。
DataAccess引用BusinessEntities BusinessLogic引用BusinessEntities和DataAccess WAP引用了BusinessLogic,BusinessEntities和DataAccess
当我运行WAP时,我得到了
System.TypeLoadException:无法从程序集“DataAccessAssembly”加载类型“Namespace.DataAccess.ClassDataAccess”,Version = 1.0.3551.29465,Culture = neutral,PublicKeyToken = null'。
这是BusinessLogic的方法尝试创建DataAccess类的isntance的时候。我在WAP的de bin文件夹里面的DataAccess dll上使用了反射器,它确实包含了我正在调用的类。
我已经尝试删除临时的asp.net文件,但没有成功,我使用Cassini作为Web服务器(还没试过IIS)
感谢。
答案 0 :(得分:4)
您的参考文献中可能有一些混合的版本号。
检查项目引用,web.config文件和.dll版本,以确保所有引用都正确。
答案 1 :(得分:4)
您还可以使用名为fuslogvw.exe (Assembly Binding Log Viewer)的SDK附带的工具。它对于查找程序集绑定错误很有用,并解释了错误发生的原因。
答案 2 :(得分:1)
刚刚解决了一个类似的问题(TypeLoadException,对于来自似乎存在的dll的类,使用null InnerException)。原因是我们从服务器项目引用了 client dll(即.Foo.DomainService.dll而不是Foo.DomainService.Web.dll)。
答案 3 :(得分:0)
您需要检查InnerException是否有根本原因