2015-08-06 31 views
15

Tôi có một giải pháp C# sử dụng Smith Html Editor (Tôi đang phát triển trên dự án chính sử dụng điều này, vì vậy tôi không biết nhiều về thư viện này), mà làm cho một tham chiếu đến MSHTML. Điều này làm việc tốt cho đến khi nâng cấp lên Windows 10 và nó không thể tìm thấy MSHTML nữa. Tôi có thể trực tiếp tham khảo các DLL trên thư mục GAC, và nó ngừng phàn nàn và do đó xây dựng, nhưng nó nhận được một số lỗi thời gian chạy liên quan đến trình soạn thảo không instantiating.MSHTML DLL trên Windows 10

Sau một ít nghiên cứu, nó chỉ ra rằng MSHTML được loại bỏ khỏi Windows 10 vì nó bây giờ sử dụng EdgeHTML. Có ai có bất kỳ ý tưởng làm thế nào tôi có thể đi xung quanh này?

Giải pháp vẫn hoạt động cho Windows 7.

+0

Bạn đã thử liên hệ với tác giả của điều khiển html chưa? –

+4

Nó không phải là" bị loại bỏ ", MSHTML vẫn được sử dụng nhiều trong Win10. Các lớp WebBrowser của Winforms và WPF phụ thuộc vào nó. Không có gì là rõ ràng sai với COMReference là tệp .csproj. Hãy thử nó với một dự án giả, sử dụng Project> Add Reference> Browse và chọn c: \ windows \ system32 \ mshtml.tlb. Nếu điều đó rơi xuống thì bạn sẽ biết điều gì đó khác bạn có thể ghi lại trong câu hỏi của mình. Tại một thông báo lỗi * chính xác * lỗi chính xác và đề cập đến giá trị thuộc tính Đường dẫn của tham chiếu MSHTML. –

+0

nếu câu trả lời của tôi hữu ích nếu bạn có thể gắn cờ câu trả lời của tôi là chính xác. Cảm ơn bạn! –

Trả lời

21

Tôi vừa tạo một số blog post về sự cố này. Vấn đề là việc lắp ráp Microsoft.mshtml.dll trong bộ nhớ Cache toàn cầu trở nên không được đăng ký từ ActiveX trong quá trình nâng cấp. Để khắc phục vấn đề này, cần phải chạy "regasm" trên assembly:

  1. Mở phiên bản "Developer Command Prompt for VS2013" (hoặc bất kỳ phiên bản Visual Studio nào bạn đang sử dụng). Chạy nó với tư cách Quản trị viên bằng cách nhấp chuột phải vào biểu tượng và chọn "Chạy với tư cách Quản trị viên."
  2. Điều hướng đến" C: \ Windows \ assembly \ GAC \ Microsoft.mshtml \ 7.0.3300.0__b03f5f7f11d50a3a. "Có thể đường dẫn của bạn sẽ thay đổi. Để xác minh, hãy đi tới" C: \ Windows \ assembly \ GAC \ Microsoft .mshtml "và gõ 'dir.'
  3. Khi bạn đang ở trong đường dẫn chính xác, loại regasm Microsoft.mshtml.dll
+3

Tôi đã cùng một vấn đề sau khi cập nhật lên Windows 10 (Ver. 1607) Đối với tôi giải pháp này hoạt động tốt. Cảm ơn bạn! – Tintifax

+0

Chúng tôi đã gặp sự cố là sự kiện đó không nằm trong GAC. Chúng tôi đã làm cho nó hoạt động bằng cách tạo thủ công cấu trúc thư mục được đề cập trước và sau đó làm theo các bước sau. – CSharpie

+0

Bạn tuyệt đối phao cứu sinh! – DDuffy

6

Tôi đã gặp sự cố tương tự. Thêm c: \ windows \ system32 \ mshtml.tlb đã hoạt động. Lưu ý nó không phải là dll, nhưng tlb. Cảm ơn bạn rất nhiều vì đã đặt câu hỏi này và cảm ơn bạn Hans, vì câu trả lời :)

2

MSHTML vẫn là một thành phần quan trọng trong Windows 10, ngay cả với Edge làm trình duyệt mặc định. Bạn có thể tìm thấy nó trong "C: \ Windows \ System32". Trích dẫn từ các câu hỏi thường gặp chính thức:

http://dev.modern.ie/platform/faq/will-the-webbrowser-control-work-with-mi

MSHTML:

Trong Windows 10 sự kiểm soát WebBrowser sẽ sử dụng di sản rendering engine của Internet Explorer, mshtml.dll. Tại thời điểm này EdgeHTML không phải là có sẵn thông qua điều khiển WebBrowser.

EdgeHtml

Trong Universal của Windows Apps được xây dựng dành cho Windows 10, điều khiển WebView sử dụng Microsoft EdgeHTML. Điều khiển WebView trong các ứng dụng được tạo cho Windows 8 & 8.1 sẽ tiếp tục tải MSHTML để duy trì khả năng tương thích.

3

tôi đã cùng một vấn đề và tôi nghĩ những gì đang xảy ra, ít nhất là trong trường hợp của tôi, đó là dự án ban đầu là một dự án VS2012 trên Windows 7 và đã có một Primary Interop Assembly cài đặt mà được tham chiếu. Khi tôi xóa và thêm lại tham chiếu vào MSHTML và đã làm khác biệt trên tệp, sự khác biệt duy nhất là <WrapperTool> đã được thay đổi từ primary thành tlbimp<EmbedInteropTypes> đã được thay đổi từ false thành true. Tại một số điểm, Visual Studio thêm khả năng nhúng trình bao bọc COM trực tiếp vào assembly thay vì tham chiếu PIA, vì vậy tôi đoán rằng cài đặt VS2015 mới trên Windows 10 không còn cài đặt PIA vì chúng không cần thiết. Vì vậy, đó là lý do tại sao việc xóa và thêm lại tham chiếu sẽ khắc phục sự cố và dự án sẽ tiếp tục xây dựng tốt trên hệ điều hành cũ hơn.

+0

Xóa MSHTML và thêm lại nó là giải pháp. Việc thêm lại rất chậm để làm việc, hãy để nó có thời gian! –

0

Sử dụng VS 2015 tôi có vấn đề này sau khi người cuối cùng Windows 10 cập nhật. tôi đã gỡ bỏ các tài liệu tham khảo" Microsoft HTML Object Thư viện "và thêm lại nó vào dự án. Điều này giải quyết được vấn đề trong trường hợp của tôi.

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