2013-02-13 25 views
9

Dự án chạy tốt tại địa phương, chỉ khi được xuất bản tôi nhận được lỗi sau:Lỗi xuất bản Azure MVC4 - Không thể tải tệp hoặc lắp ráp 'System.Web.Razor'

Không thể tải tệp hoặc lắp ráp 'Hệ thống. Web.Razor 'hoặc một trong các phụ thuộc của nó. Định nghĩa tệp kê khai của assembly được đặt không khớp với tham chiếu assembly. (Ngoại lệ từ HRESULT: 0x80131040)

Đã dành vài giờ cuối cùng googling vấn đề có vẻ là một gói nuget tôi thêm vào tài liệu tham khảo dự án dao cạo 1 và ghi đè lên 2 dao cạo của tôi. Tôi đã thử sao chép các dao cạo 2.0.0.0 dll vào refernces thay vì 1 nhưng lỗi vẫn tồn tại. Đây là nơi các cuộc xung đột được thể hiện trong việc xây dựng sản lượng chi tiết:


Có một mâu thuẫn giữa "System.Web.Razor, Version = 1.0.0.0, Culture = trung tính, PublicKeyToken = 31bf3856ad364e35" và "hệ thống. Web.Razor, Phiên bản = 2.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 ". 1> "System.Web.Razor, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35" đã được chọn vì nó là chính và "System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "không phải. 1> Tài liệu tham khảo phụ thuộc vào "System.Web.Razor, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35" [C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1 .0 \ Assemblies \ System.Web.Razor.dll]. 1> C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Trang Web \ v1.0 \ Assemblies \ System.Web.Razor.dll 1> Mục tệp dự án bao gồm tham chiếu gây ra "C: \ Chương trình tập tin (x86) \ Microsoft ASP.NET \ ASP.NET trang web \ v1.0 \ Assemblies \ System.Web.Razor.dll ". 1> System.Web.Razor, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35, bộ vi xử lýArchitecture = MSIL 1> Tham khảo phụ thuộc vào "System.Web.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "[C: \ Users \ Jack \ SkyDrive \ LessonUp.Current \ packages \ RazorEngine.3.0.8 \ lib \ net40 \ System.Web.Razor.dll]. 1> C: \ Users \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll 1> Mục tệp dự án bao gồm Tham chiếu "C: \ Users \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll". 1> System.Web.Mvc, Version = 4.0.0.0, Culture = trung tính, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL 1> xác thực lại


Từ đó nó tiếp tục liệt kê các gói khác phụ thuộc vào dao cạo 2.

Các gói tôi đã thêm vào dự án là; Recaptcha, Recaptcha.mvcModel và Postal. Có ai có ý tưởng về những bước tôi có thể thực hiện để giải quyết vấn đề này không? Hãy cho tôi biết nếu có thêm thông tin nào tôi có thể cung cấp thông tin đó có thể dẫn đến giải pháp.

Trả lời

0

Cuối cùng đã được sắp xếp, tải razor2.0 này một lần nữa từ NuGet. Dường như sắp xếp webconfig và sửa lỗi phụ thuộc. Là lên và chạy trên azure không phải không có bất kỳ vấn đề.

5

Đảm bảo dll 2.0 được tham chiếu và sao chép địa phương = true, sau đó thử thêm một ràng buộc lắp ráp chuyển hướng trong web.config:

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

Có đã là một ràng buộc lắp ráp như sau: Tôi đã đổi nó thành nội dung bạn đã đăng và lỗi vẫn giữ nguyên. Tôi cũng đã kiểm tra các thuộc tính tham chiếu và sao chép địa phương đã được đặt thành "true". Bất kỳ ý tưởng nào khác? – jakhicks

+0

Cảm ơn. Đặt 'Copy local = true' làm việc cho tôi. Dường như đây là mặc định cho các dự án mới, đặc biệt là khi thêm các tham chiếu với nuget. – ps2goat

+0

Tôi đã thay đổi phiên bản cũ là 1.0-3.0 và phiên bản mới 4.0 - Điều này đã khắc phục sự cố cho tôi sau khi cập nhật dự án MVC3 VS2012 cũ trong VS2013 thành MVC4. – ppumkin

0

Kiểm tra tệp dự án của bạn và web.config để xem chúng có bị gói NuGet chặn hay không. Một đứa trẻ có vấn đề đã biết là postal 0.8.0. Nó kéo vào như một phụ thuộc một phiên bản beta của RazorVersion (ngay cả khi bạn đã lọc để chỉ hiển thị ổn định).Ngay cả khi bạn cập nhật RazorVersion lên phiên bản mới nhất, ổn định, tệp dự án của bạn sẽ kết thúc tham chiếu System.Web.Razor phiên bản 1 và web.config của bạn có các ràng buộc lắp ráp thời gian chạy không chính xác.

Để sửa lỗi, hãy làm khác biệt với tệp dự án của bạn và web.config so với tệp dự án MVC 4 trống, mới. Sau đó sao chép chính xác phần tử Reference cho System.Web.Razor từ tệp dự án gốc. Trong web.config, xóa phần tử dependentAssembly cho System.Web.Razor.

Đây là văn bản TLDD (quá lười, không phân biệt) cho tệp dự án của bạn. Hy vọng rằng, vào thời điểm đoạn trích này đã lỗi thời, nguyên nhân cơ bản sẽ được sửa.

<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <Private>True</Private> 
    <HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath> 
</Reference> 

(Thật không may, bạn không thể sửa lỗi này bằng gỡ bỏ cài đặt và cài đặt lại với NuGet, bởi vì bạn sẽ phải gỡ bỏ cài đặt gói phụ thuộc vi phạm như bưu điện, mà sẽ tái-break thứ khi bạn cài đặt lại nó.)

+0

Đối với bưu điện, hiện có [báo cáo lỗi] (https://github.com/andrewdavey/postal/issue/49). –

1

Tôi đã gặp sự cố tương tự với Bưu điện 0.8.0 trong dự án MVC4. Khi bạn cài đặt Bưu điện với NuGet, nó sẽ thay thế System.Web.Razor 2.0 bằng System.Web.Razor 1.0. Tôi phải xóa tham chiếu đến System.Web.Razor 1.0 và sau đó thêm lại vào System.Web.Razor 2.0. Bạn cũng phải đặt Sao chép Địa chỉ thành True vào Thuộc tính cho System.Web.Razor và tất nhiên là xây dựng lại dự án. Một khi tôi đã làm điều đó VS2012 sao chép System.Web.Razor.dll vào thư mục bin triển khai và vấn đề được xóa.

Bưu điện cũng thêm các phụ thuộc này vào web.config. Tôi đã xóa chúng và nó vẫn hoạt động bình thường.

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="RazorEngine" publicKeyToken="9ee697374c7e744a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.8.0" newVersion="3.0.8.0" /> 
</dependentAssembly> 
0

gốc ..

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 

Đối với một số thuộc tính lý do newVersion đã được thiết lập lên phiên bản 2.0.0.0 trong khi dll là của 3.0.0.0

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 

Thân nó làm việc

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