2017-06-22 47 views
0

我的asp.net mvc项目正确构建。当我尝试运行时,我收到X.dll找不到与我的项目无关的运行时错误。看来,asp.net试图递归地加载任何依赖关系的所有依赖关系。Asp.net dll找不到未使用的DLL的错误

我确定我的代码没有访问X.dll中的任何代码,所以asp.net运行时试图做什么?我该如何解决它?

+0

可能的修复:将X.dll包含到您的部署中。或者不要使用(间接)依赖于X.dll的任何代码。 –

+0

我没有那个DLL。因为我不需要它 –

回答

0

一个asp.net项目,可能的原因,试图加载的DLL

  • 您参考和引用
  • 你是不是指一个dll的依赖关系,但你可以使用动态加载动态链接库反射

    • 在你的代码,你可以使用Assembly.Load或任何它的变种。所以在运行时,这种尝试加载组件和它的依赖组件
    • 你的配置(web.config中)可能是指该DLL。例如,你可以具有将使用

      <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      </layout> </appender>

    • 任何配置条目类似地可能有一个HttpHandler或模块配置你在哪里加载类型

      <httpHandlers>
      <add verb="*" path="test" type="MyHttpHandler.CustomHandler,CustomHandler"/> </httpHandlers>

  • 另一种可能是你有这个dll只出现在你的bin目录中。默认情况下,asp.net会尝试加载bin目录下的所有dll,这是因为root web.config(C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config中dynamically inject DLLs设置

    <system.web> <compilation> <assemblies> <add assembly="*" /> </assemblies> </compilation> </system.web>

    • 这一次可能是罕见的,我已经看到了CLR探查的过程。

如果没有上述步骤的协助,你可以找出为什么该dll得到使用融合日志和进程管理器/进程监视器加载。检查[此]( http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx

希望这有助于!

0

您正在调用具有在X.dll中声明类型的局部变量的方法。即使if路径将使您远离参考,抖动仍会尝试访问它。

在我想出规则之前,这让我感觉好几次。如果有任何方法出现了可以通过任何路径引用程序集的jitter(包括编译器无法证明的静态不可达路径;在C#中,编译器可以证明它无法访问的所有情况下,您将收到无法访问的代码错误/警告)将被加载。此外,该方法中的try/catch/ignore不起作用。只有调用方法可以捕获错误。异常发生在方法的开始大括号(或:对于调用其基础构造函数的构造函数)。