2013-06-06 41 views
11

Tôi đã chuyển một dự án từ MVC 3 sang MVC 4 cách đây không lâu.visual studio express 2012 app.config remapping assembly

khi tôi xây dựng, tôi nhận được thông điệp

1> No way to resolve conflict between "System.Web.Mvc, Version=3.0.0.0 ..." and , Version=2.0.0.0 
1> Consider app.config remapping of assembly "System.Web.WebPages ..." from Version "1.0.0.0" to Version "2.0.0.0" to solve conflict and get rid of warning. 
1> Consider app.config remapping of assembly "System.Web.WebPages.Razorfrom Version "1.0.0.0" [c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\System.Web.WebPages.Razor.dll] to Version "2.0.0.0" [C:\Users\OEM\documents\visual studio 2012\Projects\DabTrial\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll] to solve conflict and get rid of warning. 

và vân vân.

Khi tôi xem tài liệu tham khảo, chúng là tất cả các phiên bản sau và web.config chỉ đề cập đến các phiên bản sau. Khi tôi tìm kiếm toàn bộ thư mục giải pháp bằng mã thông báo khóa công khai (trong cửa sổ thám hiểm), tôi không tìm thấy tệp loại XML nào có tham chiếu đến các phiên bản trước đó.

rõ ràng là đường dẫn đến các tệp khác nhau, nhưng tôi không thể tìm thấy nơi trình biên dịch đang được hướng đến đường dẫn cho tệp .dll trước đó.

Dự án xây dựng và chạy tốt, nhưng tôi cho rằng trình biên dịch đề xuất những thay đổi này vì một lý do. Cảm ơn vì bất kì sự giúp đỡ.

+0

bạn có bất kỳ thư viện bạn đã cài đặt với NuGet? – DSlagle

+0

Có, nhiều và thông báo xây dựng đã xảy ra sau khi cập nhật các thư viện. Tôi không đủ quen thuộc với nuget để biết cách tìm/sửa lỗi này mặc dù – Brent

+5

Thử chạy update-package -reinstall trong bảng điều khiển quản lý gói. Bạn phải có nuget 2.1 được cài đặt để làm điều này nhưng nó sẽ nhắm mục tiêu lại tất cả libs bên thứ 3 của bạn. Đã làm điều này trên dự án của tôi một vài ngày trước sau khi cập nhật .net 4.5. Tôi đã có cùng một loại thông báo lỗi. Kiểm tra liên kết này để biết thêm thông tin http://stackoverflow.com/questions/12006991/retargeting-solution-from-net-4-0-to-4-5-how-to-retarget-the-nuget-packages – DSlagle

Trả lời

12

Phụ thuộc nuget của bạn có thể tham khảo phiên bản MVC3. Bạn có thể thử đặt sau vào cấu hình web của bạn để buộc các phiên bản MVC4:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Bạn cũng có thể thử chạy sau trong Package Manager Console

Update-Package -Reinstall 

Bạn phải có ít nhất là phiên bản 2.1 của NuGet cho lệnh này nhưng nó sẽ cập nhật các gói của bạn và nhắm mục tiêu lại chúng nếu bạn đã cập nhật .NET. Bạn có thể kiểm tra bài đăng này để biết thêm thông tin.

Retargeting solution from .Net 4.0 to 4.5 - how to retarget the NuGet packages?

+0

Cảm ơn bạn DSlagle - sắp yêu cầu bạn đăng bài để tôi có thể chấp nhận câu trả lời. Tôi đoán điều này sẽ sớm được đánh dấu là trùng lặp, nhưng tôi có thể thấy các tìm kiếm của tôi không tìm thấy liên kết StackOverflow của bạn như thế nào. – Brent

+0

chỉ là lưu ý phụ, 'Update-Package -Reinstall' sẽ mất nhiều thời gian theo dự án của bạn – mhesabi

+1

CẢNH BÁO - Điều này sử dụng lệnh này làm cho hầu hết các tham chiếu của tôi không hợp lệ và tôi phải tạo lại giải pháp. – Dementic

0

Tôi cũng gặp phải vấn đề như vậy. Tôi đã làm hai điều:

  • cập nhật System.Web.Mvc và tất cả phụ thuộc vào phiên bản mới nhất (5.2.3)
  • Rebuild tất cả các giải pháp (tôi đã sử dụng "Giải pháp ->sạch giải pháp "sau đó" giải pháp ->xây dựng giải pháp ")
Các vấn đề liên quan