2010-04-22 42 views
9

Sau khi chuyển đổi ứng dụng Hybrid ASP.NET MVC1 thành MVC2 Tôi nhận được lỗi sau khi tôi thử và chạy ứng dụng:Tên loại hoặc không gian tên 'Mvc' không tồn tại trong không gian tên 'System.Web'

Tên loại hoặc không gian tên 'Mvc' không tồn tại trong không gian tên 'System.Web' (bạn có thiếu tham chiếu assembly không?)

Thủ phạm bị cáo buộc trong tệp web.config là System.Web.Mvc:

<namespaces> 
    <add namespace="System.Web.Mvc"/> 
    <add namespace="System.Web.Mvc.Ajax"/> 
    <add namespace="System.Web.Mvc.Html"/> 

Cho đến nay cuộc điều tra của tôi dường như khiến tôi tin rằng phiên bản 2 o f System.Web.Mvc chưa được cài đặt hoặc chưa được chọn.

Tôi đã thử tạo một Tệp> Dự án mới dựa trên MVC 2 và đó là chọn phiên bản MVC mới (v2). Tôi cũng đã chuyển đổi một số dự án khác (mà không phải là lai) và họ đã chuyển đổi mà không có vấn đề với MVC2.

Tôi cũng đã gỡ cài đặt MVC1 để thử và xóa tham chiếu đến nó khỏi GAC. Tuy nhiên, không ai trong số này đã làm việc.

Bất kỳ ý tưởng nào?

Trả lời

9

Đảm bảo bạn có các ràng buộc chuyển hướng trong Web.config của bạn:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Web.Mvc" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Điều này buộc MVC 2 ngay cả khi MVC 1 là trên máy tính này.

Ngoài ra: MVC 1 không có một không gian tên System.Web.Mvc, do đó hãy chắc chắn rằng bạn cũng có:

<assemblies> 
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
+7

Đó là đề xuất thứ hai của bạn về khai báo rõ ràng không gian tên System.Web.Mvc trong các hội đồng đã thực hiện thủ thuật. Cảm ơn Craig - đánh giá cao! – Guy

2

Tôi đã xem qua somthing tương tự và giải pháp là để thay đổi tham chiếu đến Microsoft.Web.Mvc để Sao chép địa phương được đặt thành True.

0

Tôi đã gặp lỗi tương tự và nhấp vào liên kết lỗi biên dịch chi tiết trong trang hiển thị các sự cố với System.Web.Helpers, .Http,.WebPages.

Sau khi sao lưu hệ thống, tôi chạy update-package -reinstall 'và buộc gỡ cài đặt/cài đặt lại tất cả các gói. Điều này buộc tệp web.config phải được xây dựng lại chính xác và các phần dependentAssembly được xây dựng ngay.

Sau khi xây dựng lại giải pháp đã chạy lần đầu tiên.

Lưu ý, nó đã thêm phần xấu sau providers vào web.config.

<contexts> 
    <context type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</contexts> 
<providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

Điều này chỉ tạo cảnh báo xây dựng, nhưng tôi đã xóa cảnh báo này, ưu tiên yếu tố prec2ing contexts.

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