添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

动态加载动态库内容的时候,出现了下面的错误。
开发机上没有问题,其它两台测试机上有问题。
下面是输出的错误信息:

异常类型:TargetInvocationException
异常消息:调用的目标发生了异常。
异常信息:   在 System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   在 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, Boolean nonPublic)
   在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 System.Reflection.Assembly.CreateInstance(String typeName)
   在 CFW.WinForm.FrmMain.CreateForm(String className, String assemblyName
   在 CFW.WinForm.FrmMain.AddTabItem(S_Menu menu)
... ...
        /// <summary>
        /// 根据命名空间、类名创建窗口
        /// </summary>
        /// <param name="className类名"></param>
        /// <param name="assemblyName命名空间"></param>
        /// <returns></returns>
        private Form CreateForm(string className,string assemblyName)
            //项目的Assembly选项名称
            string path = Application.StartupPath + "\\" + assemblyName + ".dll";
            Assembly ass = Assembly.LoadFile(path);
            Form fm = (Form)Assembly.LoadFile(path).CreateInstance(className);
            Type fmType = fm.GetType();
            if (fmType.GetInterface("IFormBase") != null)
                fmType.GetProperty("LoginUser").SetValue(fm, this.LoginUser);
                fmType.GetProperty("LoginDept").SetValue(fm, this.LoginDept);
            fm.Tag = className;
            return fm;

出错位置在“Form fm = (Form)Assembly.LoadFile(path).CreateInstance(className);”这一句。

通过度娘看了很多关于本问题的中文文档,有人提示必须加被加载dll的引用,有人提示cpu架构要保持一致(x86->x86,x64->x64),.Net Framework 框架要一致,甚至数据库是否正常连接。 还有人提示路径不对啥的。按照这些提示的思路去做,真的可能让人越来越产生绝望感。
后来在google上用英文“An exception occurred for the target of the call ”去查找答案,也没有找到直接的答案,但是有位高手的建议帮我找到了问题的真正原因。(参考这篇文章:
Exception has been thrown by the target of an invocation, when COM DLL’s are called by reflection technique in C#
那就是,**TargetInvocationException掩盖了问题的真正原因,要查看Exception的InnerException。
** 我输出InnerException,内容如下:

异常类型:FileNotFoundException
异常消息:未能加载文件或程序集“Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的文件。
异常信息:   在 CFW.WinForm.FrmMain.AddTabItem(S_Menu menu)
... ...

看到这些信息,瞬间明白加载对象DLL所依赖的Dll文件缺乏导致这次事故!

从上面的信息找到问题原因之后,解决办法就很简单了。本次的解决办法是将缺少的DLL文件放到加载路径相同路径下,就正常了。 当然,解决办法会因问题而异,主要参考InnerException的提示。

首先原谅我将该问题放在首页,情况紧急,实在是没办法了,请各位帮忙! 我用下面语句来创建类型的一个实例: ClassA Obj = (ClassA)Activator.CreateInstance( 问题现象:在C#工程中,抛出了调用目标发生异常错误异常问题分析:通过Exception报的错误无法定位到问题原因,可以通过InnerException来详细输出错误信息问题原因:缺少相关依赖 维护SharePoint Application期间,在执行SharePoint Configuration时候遇到错误 "An exception of type System.Reflection.TargetInvocationException was thrown. Additional exception information: Exception has been thrown by the target of an invocation."的解决方案做介绍。 我在用反射创建类的时候,提示“调用目标发生异常。”,如下图所示: 我上网找了很久,都没有找到答案,纠结了一下下。我想,这个提示很清楚,就是我的调用类是不是有bug,所以才没有办法用反射创建类呢?我就检查了一下调用的类,后面发现是日志路径出错了,出错代码如下:private void NewLogo() if (!File.Exists(this.fi 阿里QA导读:在软件研发过程中,发布前跨多个系统的联调测试是不可或缺的一环,而在联调过程中,经常会遇到一些比较棘手的困难,阻塞整个联调进程。其中比较典型的有:第三方的研发节奏不一致,导致... System.Reflection.TargetInvocationException: 调用目标发生异常。 ---> System.Reflection.TargetInvocationException: 调用目标发生异常。 ---> Sy... 最近在做.net core项目,然后就把VS 2017更新到最新版本,以及更新.net core sdk。频繁的更新开发工具,结果就出现了“调用目标发生异常”,本来运行、调试都是好好的,更新了一下版本,就出现这样的问题,虽然不影响运行使用,但是每执行到一段代码,就弹出“调用目标发生异常”,特别烦人,到网上查找原因,给出一些方法,但是都是无效的。 有的人说重新安装系统,或者修改path变... Spring MVC处理异常有3种方式: 1)使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver; 2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器;. 1.1 异常概念 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行. 1.2 异常体系 异常机制其实是帮助我们找到程序中的问题,异常的根类是 java.lang.Throwable ,其下有两个子类: java.lang.Error 与 java DA_ZD_QIANYI 是我本地报错的窗口设计,然后在Program.cs 中加如下代码: private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) Exception ex = e.ExceptionObject as Exception;