2014-04-25 28 views
15

Giống như rất nhiều người khác Tôi nhận được lỗi sau khi triển khai ứng dụng ASP.Net MVC của tôi:file Clearscript không thể được tìm thấy trên máy chủ

Không thể tải lắp ráp giao diện V8; xác minh rằng các tệp sau được cài đặt với ứng dụng của bạn: ClearScriptV8-32.dll, ClearScriptV8-64.dll, v8-ia32.dll, v8-x64.dll

Clearscript được cài đặt như một phần của nỗ lực chuyển đổi ít tệp hơn cho các yêu cầu trang.

Tôi đã thử nghiệm ứng dụng của mình cục bộ trong ISS Express và ISS mà không bị cản trở.

Như được đề xuất ở đây http://clearscript3.rssing.com/chan-14849437/all_p12.html Tôi cũng đã bao gồm các thư viện mã bị thiếu làm tài nguyên cho dự án của mình.

ClearScriptV8-32.dll, ClearScriptV8-64.dll, v8-ia32.dll, v8-x64.dll đều được đưa vào thư mục ClearScript.V8 trong thư mục bin. Việc xóa thư mục này không giải quyết được sự cố.

Khi trí thông minh kết thúc. Bất kỳ trợ giúp được đánh giá cao.

+1

Có thể đáng giá bằng cách sử dụng gói NuGet thay thế: http://www.nuget.org/packages/ClearScript.V8/ –

+0

cảm ơn bạn đã đề xuất nhưng không có sự khác biệt. Tôi đã thực hiện các thay đổi được đề xuất cho dự án - xóa các bước xây dựng được tạo bởi gói và thêm các tệp nhị phân vào thư mục nội dung - mà không có bất kỳ sự may mắn nào. Thay vào đó, một lỗi khác được cắt lên nói rằng nó đang tải các assembly cho nền tảng sai (không phù hợp). – Levon

+1

Đảm bảo rằng các tệp DLL đó không nằm trong thư mục bin của bạn. Đặt chúng vào thư mục gốc của ứng dụng và đặt chúng thành "Không sao chép". Nếu bạn đã làm điều đó và ứng dụng của bạn hoạt động trên máy tính dev nhưng không thành công khi được triển khai, sự cố có thể là quyền; kiểm tra danh tính của nhóm ứng dụng triển khai. – BitCortex

Trả lời

20

nguyên nhân là tải asp.net ngay lập tức tất cả thư viện trong/thư mục bin. tôi đã thêm các nguyên tắc sau để bỏ qua cụm Clearscript, và nó làm việc

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

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

...

+0

Làm việc cho tôi, cảm ơn vì đã cứu thịt xông khói của tôi! –

+0

Cảm ơn, cũng đã làm việc cho tôi – Bryan

9

Có thể hơi muộn nhưng điều này có thể giúp những người khác đến bài đăng này.

Đây là một lỗi phổ biến khi bạn không có Visual C++ Redistributable cho Visual Studio 2012 hoặc cao hơn được cài đặt trên máy chủ lưu trữ

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

+0

+1; điểm quan trọng ở đây là giống như [câu trả lời này] (http: // stackoverflow.com/a/22260912/525010) trong đó "các mô-đun quy định không thể tìm thấy" không thực sự có nghĩa là "DLL này không thể được tìm thấy" nhưng thực sự "một phụ thuộc của DLL này không thể được tìm thấy". (Trong cả hai trường hợp, đó là thời gian chạy VC++ 2012, nhưng đó là sự trùng hợp). –

+0

Điều này làm việc cho tôi; bạn đã cứu đêm của tôi :) –

9

Nếu bạn đang triển khai trên Windows Server 2012 với IIS vai trò, có hai điều bạn nên làm để có được ClearScriptV8 chạy:

  1. Như @no1sprite chỉ ra:

bạn phải cài đặt trên máy chủ lưu trữ Visual C++ Redistributable cho Visual Studio 2012 hoặc cao hơn: http://www.microsoft.com/en-gb/download/details.aspx?id=30679

  1. Hãy chắc chắn rằng bạn đặt ClearScript.dll trong trang web của bin \ thư mục và ClearScriptV8-64.dllv8-x64.dll thành bin \ ClearScript.V8.

Không bắt buộc, cho các ứng dụng 32-bit/nền tảng:

  1. Nếu bạn sử dụng nền tảng 32-bit, đặt ClearScriptV8-32.dllv8-ia32 .dll trong trang web của bin \ ClearScript.V8 \ thư mục. Ngoài ra, trong Trình quản lý IIS, nhấp chuột phải vào Hồ bơi ứng dụng của trang web và chọn "Cài đặt nâng cao ...".Đặt thuộc tính "Bật các ứng dụng 32 bit" tới đúng.
+1

tuyệt vời, đã cứu mạng tôi. Trong trường hợp của tôi, thư mục ClearScript.V8 nằm trong dự án của tôi nhưng tất cả các dll bên trong cần được đánh dấu là "Sao chép luôn" hoặc "Sao chép nếu mới hơn" trong các thuộc tính tệp để chúng triển khai chính xác. – parliament

+1

@parliament Trong trường hợp của chúng tôi, chúng tôi đã phải ** vô hiệu hóa ** (được đặt thành false) * Bật ứng dụng 32 bit * trong ứng dụng Cài đặt nâng cao. Cảm ơn bạn đã bình luận vì nó đã gửi cho tôi xuống con đường bên phải và muốn đăng bài này ở đây trong trường hợp nó có thể giúp đỡ người khác. – ahsteele

15

Để được rõ ràng ngoại lệ này không phải luôn luôn gây ra bởi thiếu ClearScriptV8-32.dll, ClearScriptV8-64.dll, v8-ia32.dll hoặc v8-x64.dll. Thông thường vấn đề là một dll tham chiếu bởi một trong những dlls nói trên không thể được tìm thấy. Trong trường hợp các dll thích hợp trên máy chủ cài đặt Visual C++ Redistributable thích hợp thường sẽ giải quyết vấn đề phụ thuộc transitive này.

Theo diễn đàn thảo luận của dự án ClearScript no longer supports Visual Studio 2012. Có nghĩa là phiên bản của C++ Redistributable trực quan mà cần phải được cài đặt trên máy chủ của bạn phụ thuộc vào phiên bản của ClearScript dự án của bạn đang sử dụng:

+1

Vì vậy, bạn vừa lưu tôi sau một ngày cố gắng khắc phục sự cố này. Chúc phúc cho bạn. Cảm ơn. –

0

Không ai trong số các câu trả lời làm việc cho tôi. Nó là một ứng dụng Windows Service.

Dựa trên accepted answer; Tôi đã gỡ bỏ v8-ia32.dll & ClearScriptV8-32.dll(kể từ khi ứng dụng của tôi được nhắm mục tiêu x64)

Nó giải quyết vấn đề này.

Các vấn đề liên quan