2012-07-26 66 views
12

Tôi đang tìm kiếm để giải quyết lỗi này:Lỗi: Không thể tải log4net lắp ráp

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified." This error is located in the web.config file.

Khi tôi sao chép log4net.dll vào thư mục bin của webapp của tôi, tôi nhận được một

Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

này lỗi cũng xảy ra trong tệp web.config.

Thật dễ dàng, đủ để thay đổi phiên bản và mã thông báo khóa công khai để khớp với tệp sao cho lắp ráp tải chính xác. Khi tôi làm điều đó, trang web của tôi chạy hoàn hảo, ngoại trừ khi một đối tượng reportViewer được khởi tạo. Sau đó, nó ném lỗi ban đầu tại thẻ reportViewer, không phải là web.config.

Giả thuyết của tôi là nếu tôi cài đặt phiên bản yêu cầu của log4net.dll, các sự cố của tôi sẽ được giải quyết. Nhưng tôi không có đầu mối mà tập tin đó, hoặc nơi để tìm thấy nó. Tôi đã kiểm tra rõ ràng bằng cách tải xuống log4net 1.2.10 và thử mọi dll trong quá trình tải xuống.

Tôi nên đề cập rằng trang web chạy mà không có sự cố trên máy phát triển của tôi, nhưng không phải khi được xuất bản lên máy chủ của tôi.

Tôi đang chạy trang web asp.net, .NET 4.0, IIS 7, trên hệ điều hành Server 2008 R2. Tôi đã cài đặt Crystal Reports 13.0.1 cho 64bit (máy của tôi là 64bit).

Tôi làm cách nào để giải quyết vấn đề này?

EDIT: Để trả lời câu trả lời của @ Kevian, tôi đã thực hiện thay đổi đối với tệp web.config của mình. Tôi vẫn gặp lỗi khi định nghĩa tệp kê khai không khớp với tham chiếu lắp ráp. Mã ném lỗi này là:

Line 33:  <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" 
Line 34:   BestFitPage="True" ToolPanelView="None" /> 
+0

Đã được một giải pháp này tìm thấy? – tomfanning

Trả lời

1

Hãy thử thêm mã này vào web.config của bạn. Về cơ bản nó nói với thời gian chạy là bạn OK cho nó tải lắp ráp tương tự cho cả hai phiên bản

<runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="log4net" publicKeyToken="692fbea5521e1304" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 

Bạn sẽ cần phải thay thế 1.2.10.0 với phiên bản mà bạn thực sự có trong thư mục bin của bạn.

+0

Nó có vẻ như nó sẽ làm việc, nhưng nó dường như không chuyển hướng tất cả các tài liệu tham khảo lắp ráp. – Brynne

+0

@notkilroy bạn có thể giải thích thêm một chút không? những gì bạn có nghĩa là nó không chuyển hướng tất cả các tài liệu tham khảo? bạn có thể cho tôi thông báo lỗi được cập nhật không? –

+0

Không thể tải tệp hoặc lắp ráp log4net. Định nghĩa tệp kê khai của assembly được đặt không khớp với tham chiếu assembly. Tuy nhiên, thay vì lỗi trỏ đến mã trong web.config của tôi, bây giờ nó trỏ đến một dòng trong một trang riêng lẻ. Dòng này là: "" – Brynne

4

Có một vài vấn đề ở đây chơi mà phân giải:

  1. Các thẻ khóa công khai cho phiên bản 32bit của cuộc đụng độ log4net.dll với một sử dụng bởi Crystal Reports. Để xác minh nếu bạn có vấn đề này, thực hiện tìm kiếm cho "692fbea5521e1304" trong tất cả các tập tin csproj của bạn - nếu bạn thấy tài liệu tham khảo để Crystal Decisions log4net bạn có vấn đề này.
  2. Phiên bản 32 bit của các vụ đụng độ log4net.dll với các dll được biên dịch cho kiến ​​trúc 64 bit hoặc AnyCPU. Nếu bạn có vấn đề này, bạn sẽ tìm thấy các tài liệu tham khảo trông giống như dưới đây. Bạn có thể xác minh vấn đề bằng cách cấu hình lại hồ bơi ứng dụng của mình để chạy dưới dạng 32 bit và kiểm tra xem ứng dụng có chạy hay không - nếu có, bạn gặp sự cố này.
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, 

PublicKeyToken=692fbea5521e1304, processorArchitecture=x86" >

Cách khắc phục mà làm việc cho chúng tôi trong 64-bit là để có được những log4net mới nhất.dll mà thực sự có một PublicKeyToken mới, thay thế các log4net.dll trong 3 thư mục bên bin của bạn, thay đổi tất cả các tài liệu tham khảo log4net.dll để trông giống như vậy:

<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, 

PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">

0

Tôi gặp sự cố này trong mã của mình. Một trong những dự án mà ai đó đang sử dụng có xung đột phiên bản Log4Net. Họ đang sử dụng 12.2.10 và tôi đã có 12.2.13. Vì vậy, để khắc phục vấn đề tôi đã loại bỏ tham chiếu của tôi và tìm thấy dll tham chiếu của họ. Tôi đã sử dụng nó thay vào đó và nó hoạt động hoàn hảo.

Để tìm tham chiếu Microsoft Visual Studio có tính năng Trình duyệt. Bạn có thể sử dụng nó để lấy dll. Để tìm dll, bạn có thể nhấp vào các tham chiếu trong dự án của bạn và nhấp vào tham chiếu mà bạn muốn tìm. Trong trường hợp này Log4Net. Nó sẽ hiển thị một danh sách các phụ thuộc, log4net khác phải ở gần Log4Net đã chọn, và sẽ có một số văn bản hiển thị vị trí của tham chiếu dll đã chọn hiện tại. Đây là nơi bạn sẽ tìm thấy tài liệu tham khảo.

0

MSDOS

-- Create a virtual disk 
subst t: C:\Windows\assembly 

-- Delete log4net x64 assembly 
del t:\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll 

-- remove the virtual disk 
subst t: /d 
0

Đối với vấn đề của bạn tôi khuyên bạn nên xóa/gỡ bỏ các dll này trong refereneces và cài đặt lại và đây là làm thế nào để cài đặt đúng Log4Net trên VS 2013:

1) Đảm bảo bạn bật trên gói nuget.org của bạn cho tiện ích NuGet Packages Manager bằng: Rightclick Project (không phải giải pháp) rồi chọn "Manague NUGet Packages ..." ở phía dưới bên trái chọn "Settings" rồi chọn "Package Manager" rồi chọn "Package Sources" Các nguồn gói sẵn có chọn "nuget.org" cũng kiểm tra cả "Nguồn gói máy", nhấp vào "OK"

2) Nó sẽ đưa bạn đến Quản lý gói NUGet sau đó chọn "Trực tuyến" trên ngăn bên trái sau đó tìm kiếm "log4net" nó được chuyển từ apache log4j rồi cài đặt nó. Xong, bạn sẽ tìm thấy nó được cài đặt trong Tham khảo trong dự án

Tôi cũng đính kèm ảnh chụp màn hình.

tận hưởng!

enter image description here

enter image description here

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