解决应用程序(双击快捷方式或者双击根目录exe)打不开~
针对这种诡异的问题,苦思没用,你得写程序跟踪日志,才能知道哪里出的问题
1、无论用任何方法,判断出,出现异常的位置
2、一般这种是因为异常直接崩了 (造成程序闪退,只是在任务管理器“进程”项,一闪而过)
如果是WinForm,可以在program.cs里面try一下,抛出异常!
根据我跟人遇到的情况,修改程序后:
客户电脑运行该程序后,出现
这就更纠结了,明明安装的有 .NetFrameWork3.5 为什么会提示这个,难道是它找不到。
试着将文件System.XML 拷到客户端程序根目录下,再次运行,还是报错,不过提示是找不到另外的一个文件。这样看来,有门~~~,按照程序抛出的提示一次添加,最后,程序正常运行。
看似一切OK ,但是转念一想 ,为什么那么多客户机都不用这么麻烦一个一个的拷,偏偏这个用呢?
理性告诉我一定有猫腻 !!!
重新思考,为什么本地有,但是调用不到呢
那就有可能是该文件没有注册到GAC
GAC: GAC全称Global Assembly Cache,即全局程序集缓存。GAC存放在系统目录”%winroot%assembly”下面,你不能通过窗口如”C:windowsassemblyyourAssembly.dll”来直接获取yourAssembly.dll,必须在dos下输入” C:windowsassemblyGAC_MSIL”才能获取yourAssembly.dll。GAC的作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要吧所以用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都有从C:windowsMicrosoft.NETFrameworkv1.0.3705下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。
显而易见了,有可能就是客户端所需文件没能在GAC中注册导致的,接下来就是怎样将dll注册到GAC中
将dll部署到全局程序集缓存(GAC)中
针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用。
一般来说,将程序集(dll)安装到GAC中有以下几种方法:
1. 管理工具->Microsoft.NET Framework 2.0 配置->管理->我的电脑->程序集缓存->选中右键"添加"->将程序集添加到程序集缓存。(没找到,我太阳!~~)
2. 手动将要安装部署的dll文件拖至系统目录windows下的assembly文件夹下(一般为C:/windows/assembly),此种方法不便于在安装部署时使用。
3. 使用gacutil.exe工具安装:gacutil -i "要注册的dll文件全路径"。
"gacutil.exe”工具为.NET自带工具 (C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin)

浙公网安备 33010602011771号