2014-04-25 24 views
15

找到像很多其他部署我的ASP.Net MVC應用程序時,我收到以下錯誤:Clearscript文件不能在主機

無法加載V8接口組件;驗證以下文件將與您的應用程序:ClearScriptV8-32.dll,ClearScriptV8-64.dll,V8-ia32.dll,V8-x64.dll

Clearscript安裝作爲努力改造的一部分爲頁面請求提供更少的文件。

我已經在ISS Express和ISS本地測試了我的應用程序。

如此處所建議http://clearscript3.rssing.com/chan-14849437/all_p12.html我還將缺少的代碼庫作爲資源添加到我的項目中。

ClearScriptV8-32.dll,ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll都包含在bin文件夾中的文件夾ClearScript.V8中。刪除此文件夾不能解決問題。

在我的智慧結束。任何幫助表示讚賞。

+1

可能值得使用NuGet包:http://www.nuget.org/packages/ClearScript.V8/ –

+0

感謝您的建議,但它沒有任何區別。我對該項目進行了建議的更改 - 刪除由該軟件包創建的構建步驟,並將二進制文件添加到內容文件夾 - 沒有任何運氣。相反,一個不同的錯誤突然出現,說它正在爲錯誤的平臺加載程序集(不匹配)。 – Levon

+1

確保這些DLL不在bin目錄中的任何位置。將它們放入應用程序的根目錄並將其設置爲「不要複製」。如果你已經完成了這項工作,並且你的應用可以在你的個人電腦上運行,檢查部署應用程序池的標識。 – BitCortex

回答

20

的原因是asp.net負載瞬間在/ bin目錄中的所有庫。 我增加了以下規則忽略Clearscript組件,和它的工作

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" /> 
    </system.diagnostics> 
    <system.web> 
     <compilation> 
      <assemblies> 

       <remove assembly="ClearScriptV8-64" /> 
       <remove assembly="ClearScriptV8-32" /> 
       .... 
      </assemblies> 
     </compilation> 

...

+0

爲我工作,感謝您節省我的培根! –

+0

謝謝,也爲我工作 – Bryan

9

可能有點晚,但這可能有助於其他人來到這篇文章。

這是當你沒有的Visual C++可再發行的Visual Studio 2012或以上版本的主機服務器

http://www.microsoft.com/en-gb/download/details.aspx?id=30679

+0

+1;這裏的關鍵點與[這個答案]是一樣的(http:// stackoverflow。com/a/22260912/525010)中「找不到指定的模塊」實際上並不意味着「找不到此DLL」,而是實際上「找不到此DLL的依賴關係」。 (在這兩種情況下,都是VC++ 2012運行時,但這是巧合)。 –

+0

這對我有效;你救了我的夜晚:) –

9

如果你在Windows Server 2012上的IIS上部署一個常見的錯誤角色,有兩件事情你應該做的就是ClearScriptV8運行:

  1. 作爲@no1sprite指出:

您必須安裝託管服務器上的Visual C++可再發行的Visual Studio 2012或以上: http://www.microsoft.com/en-gb/download/details.aspx?id=30679

  • ,確保將ClearScript.dll在網站的 \文件夾,並ClearScriptV8-64.dllV8-x64.dll斌\ ClearScript.V8
  • 可選,用於32位應用程序/平臺:

  • 如果使用32位平臺,放置ClearScriptV8-32.dllV8-IA32 .dll in website's bin \ ClearScript.V8 \ folder。 另外,在IIS管理器中,右鍵單擊網站的應用程序池並選擇「高級設置...」。設置屬性「啓用32位應用程序」至true
  • +1

    真棒,拯救了我的生命。在我的情況下,ClearScript.V8文件夾在我的項目中,但所有的dll裏面需要在文件屬性中標記爲「始終複製」或「如果更新」,才能正確部署。 – parliament

    +1

    @parliament在我們的例子中,我們必須**禁用**(設置爲false)*啓用應用程序池高級設置下的32位應用程序*。感謝您的評論,因爲它讓我走上了正確的道路,並希望在此發佈此信息,以免它可能幫助其他人。 – ahsteele

    15

    要明確這個異常並不總是缺少ClearScriptV8-32.dllClearScriptV8-64.dllv8-ia32.dllv8-x64.dll造成的。通常情況下,問題是無法找到由上述dll之一引用的dll。在服務器上安裝合適的dll的情況下,安裝相應的Visual C++ Redistributable通常會解決這種傳遞依賴性問題。

    根據項目論壇ClearScript no longer supports Visual Studio 2012。這意味着必須在服務器上安裝Visual C++可再發行的版本是依賴於ClearScript的版本,你的項目是利用:

    +1

    所以你在試圖解決這個問題一整天后就救了我。祝福你。謝謝。 –

    0

    無問題的答案爲我工作。這是一個Windows服務應用程序。

    基於accepted answer; 我刪除V8-ia32.dll & ClearScriptV8-32.dll(因爲我的應用程序的目標是)

    它解決了這個問題。