无法加载一个或多个请求的类型

qjqmoney 2015-07-25 03:22:31
开发环境:win7 64位系统,vs2013,目标框架:.NET Framework 4,目标平台为x64
我做的是一个windows服务,开发完成后,利用InstallUtil.exe能在本机正确安装这个服务。

但是,上传到服务器上去后,用InstallUtil.exe安装时,会提示如下错误:
尝试在 D:\资料\test.exe 程序集中查找安装程序时发生异常。
System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。有
关更多信息,请检索 LoaderExceptions 属性。


我的服务器是windows server2008 sp1 64位系统,已安装了.net 4 和 4.5,不过新安装的4.5还没有重启服务器。

我尝式过不引用任何东西,这样是可以安装成功的,所以应该是引用的问题。

我看项目里System的引用路径是:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll

但我的服务器上并没有这个路径,只有C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5,没有Framework下的.NETFramework目录 ,是我少安装了什么东西吗?这是本机和服务器我所能发现的唯一区别。

另外,我还引用了一个别人开发完成的dll,是64位的,是否这里存在冲突?这个dll是64位,但是System.web的引用路径又是x86下的,有影响吗?

下面是我的引用:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using TCS;//这是就是别人开发好的64位的dll,如果去掉这个,就不会有问题

如何能让引用路径不要指向C:\Program Files (x86)\Reference Assemblies,而是指向C:\Windows\Microsoft.NET\Framework64\v4.0.30319,这样可以的吗?

希望高手能看看,不胜感谢。
...全文
854 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwencong2014 2016-07-21
  • 打赏
  • 举报
回复
楼主 这问题解决了吗 最近项目遇到同样问题 想问问具体是如何解决的呢 望告知 万分感谢
  • 打赏
  • 举报
回复
你生成的时候选定按什么生成了吗?就是AnyCPU,X86之类的
ajianchina 2015-07-25
  • 打赏
  • 举报
回复
引用 2 楼 qjqmoney 的回复:
已经这样试过了,问题的重点是本机可以,服务器上不行,所以需要找到本机和服务器的环境有什么区别
加个try catch记录到文本,应该能捕获到异常,关键你要找出到底是哪个程序集。
qjqmoney 2015-07-25
  • 打赏
  • 举报
回复
我把所有引用的dll和exe放到一起,还是不行。最让我不明白的是为什么我的电脑上就可以,放到服务器上就不行,差了什么东西?
  • 打赏
  • 举报
回复
把 System.dll 放到 exe 运行目录下试试
qjqmoney 2015-07-25
  • 打赏
  • 举报
回复
已经这样试过了,问题的重点是本机可以,服务器上不行,所以需要找到本机和服务器的环境有什么区别
ajianchina 2015-07-25
  • 打赏
  • 举报
回复
你先这样试一下: 删了项目所在目录bin\Debug下的文件,重新生成后测试。

111,077

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧