2017-06-22 50 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不起作用。只有調用方法可以捕獲錯誤。異常發生在方法的開始大括號(或:對於調用其基礎構造函數的構造函數)。