11

Tôi gặp sự cố mà dường như đã được báo cáo ở đây:Razor Compiler Cảnh báo/lỗi - ASP.NET MVC 4

Need razor view engine auto-complete to work in a class library?

Vấn đề của tôi là cảnh báo sau đây:

G:\Accountable\Accountable\Views\LedgerUser\EditorTemplates\LedgerServiceViewModel.cshtml: ASP.NET runtime error: There is no build provider registered for the extension '.cshtml'. You can register one in the section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

này vấn đề là rõ ràng trong tất cả các quan điểm của tôi. Hình ảnh mẫu bên dưới.

enter image description here

enter image description here

enter image description here

Bây giờ tất cả bài viết và tài liệu tham khảo trực tuyến mà tôi đã tìm thấy được tham khảo để bổ sung Web.config khác nhau (như đã đề cập trong bài trước) tùy chọn, nhưng doesn này dường như không hoạt động, vì tôi có các cấu hình này được mặc định trong dự án. Dưới đây là Configs Web của tôi:

Main Web.config

View root Web Config

Tôi nghĩ rằng vấn đề này có lẽ trong khi im cũng nhận được các lỗi biên dịch sau trên Views:

The name 'Html' does not exist in the current context

enter image description here

gì tôi đang làm sai à?

+0

Hầu như bản sao của luồng này: http: // stackoverflow.com/questions/4158573/cần-dao cạo-xem-động cơ-tự động hoàn thành-to-work-in-a-class-thư viện –

+0

Hey David. Cảm ơn bạn đã bình luận. Có tôi đã tham chiếu rằng trong bài đăng ở trên. Tôi không thể thấy bất kỳ sự khác biệt nào với những cái mặc định được tạo trong Project. – garfbradaz

Trả lời

21

Arrrgghhh tôi đã bỏ lỡ sau từ ROOT Web.config:

<compilation debug="true" targetFramework="4.0"> 
    <!-- New --> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </assemblies> 
</compilation> 

này cho phép sửa lỗi và cho phép tôi sử dụng Intellisense trong View.

+1

Tôi thực sự không biết tại sao điều này đã sửa nó, nhưng nó đã làm. Nó đã làm việc tốt và sau đó tôi đảo ngược một đoạn rất nhỏ trên một tập tin trong git và toàn bộ dự án của tôi thổi lên. Điều này dường như sửa chữa nó. –

+1

Điều này làm việc cho mvc5, chỉ cần thay đổi phiên bản thành '3.0.0.0' và khóa công khai thành một trong web.config của bạn (nó ở cuối tệp). – VSG24

+0

trong MVC 5 đã cập nhật tất cả các phiên bản và phím nhưng lỗi vẫn còn ở đây. –

3

Đưa lại những dòng sau trong Web.config gốc cố định:

<system.web> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
</system.web> 
2

tôi nhận nó làm việc bằng cách đơn giản dỡ và tải lại dự án. Tất cả các không gian tên trên đã có trong root.config gốc và tôi vẫn gặp vấn đề này.

2

Xóa tệp khuôn khổ asp.net tạm thời hoạt động cho tôi.

Dừng IIS và loại bỏ tất cả mọi thứ trong thư mục này:

C:\Windows\Microsoft.NET\Framework64\[framework version]\Temporary ASP.NET Files

Sau đó khởi động lại IIS. Bam!

+1

Bắt đầu nhận lỗi này vì không có lý do rõ ràng - dự án của tôi đã hoạt động trong nhiều năm trước đó. Điều này làm việc cho tôi, cảm ơn! – Jesse

0

Tôi đã thử bằng cách khởi động lại IIS, loại bỏ Tệp ASP.NET tạm thời và thay đổi thẻ biên dịch trong tệp cấu hình web. Không ai trong số họ làm việc cho tôi.

Tôi đã khắc phục sự cố bằng cách xóa và thêm System.Web.MVC vào dự án.

Trong trường hợp của tôi, cú pháp Dao cạo được tô sáng bằng màu đỏ.