2011-12-08 47 views
10

Tôi đã tìm kiếm google cho điều này và không thể tìm thấy giải pháp cho vấn đề.Không thể tải tập tin hoặc lắp ráp 'Microsoft.Practices.EnterpriseLibrary.Common' hoặc một trong các phụ thuộc của nó

Tham chiếu trang web của tôi DAL (dll tùy chỉnh) tham chiếu Thành phần truy cập dữ liệu thư viện doanh nghiệp.

Tôi đã thêm các doanh nghiệp Thư viện từ NuGet Package Manager và khi tôi cố gắng xây dựng trang web lỗi biên dịch này bật lên:

Lỗi 44 Không thể tải tập tin hoặc lắp ráp 'Microsoft.Practices.EnterpriseLibrary.Common' hoặc một trong những phụ thuộc của nó. định nghĩa manifest Việc lắp ráp nằm của không phù hợp với tài liệu tham khảo lắp ráp

Tôi đã cố gắng thiết lập các Copy Local = True trong Dal cho Enterprise Library dlls và dlls được chuyển vào thư mục Bin của trang web cùng với DAL dll, nhưng vẫn pops lỗi lên.

bất cứ ai có thể hướng dẫn cho tôi về vấn đề này ....

+0

Hãy đảm bảo rằng tất cả các tập tin EL đều nằm trong thư mục, lưu trữ thư mục .Common. –

+1

Tôi đã đề cập ở trên là tốt, rằng các dlls đã được sao chép vào thư mục bin trang web –

+0

Đây có phải làsuse khi dự án thiết lập để .net khuôn khổ khách hàng hồ sơ thử thay đổi nó để toàn dot net? Sory nếu nó là sai câu trả lời – adopilot

Trả lời

8

Vấn đề là các DLL mà bạn đang sử dụng và một trong đó là được tham chiếu trong dự án của bạn là khác nhau. Tôi không chắc chắn sự khác biệt trong tệp kê khai là gì, nhưng nó có thể là phiên bản và/hoặc khóa công khai.

Bạn có một vài điều để thử:

  1. mở các thuộc tính cho tài liệu tham khảo DLL trong dự án của bạn và thiết lập bản cụ thể để sai.

  2. Xóa tham chiếu, xóa DLL khỏi thư mục bin và thêm lại tham chiếu.

  3. Bạn cũng có thể có phiên bản khác/không chính xác trong GAC của mình. Để đảm bảo rằng bạn luôn sử dụng một phiên bản cụ thể, đã biết, tạo một thư mục assembly tương ứng với thư mục dự án của bạn, sao chép dll vào thư mục đó và thêm một tham chiếu đến DLL trong thư mục assembly chứ không phải một trong GAC hoặc ở nơi khác trên máy của bạn. Điều này sẽ đảm bảo rằng chỉ phiên bản cụ thể mà bạn đã nhắm mục tiêu cho ứng dụng mới được sử dụng thay vì bất kỳ phiên bản nào được cập nhật trên máy của bạn sau này.

+1

Đặt 'Phiên bản cụ thể = true' giải quyết vấn đề. Tôi nghĩ rằng đó là do nhiều phiên bản của 'EnterpriseLibrary' được cài đặt trên hệ thống của tôi và tạo một thư mục khác và đặt các dll có thể có tác dụng tương tự ... –

+0

Đối với tôi (2) đã làm việc. Tôi đã xóa các tham chiếu đã gây ra lỗi và readded chúng một lần nữa –

4

NuGet CommonServiceLocator

Install-Package CommonServiceLocator 
2

dll này có khả năng là trong GAC trên máy phát triển như là một phần của một số cài đặt cửa sổ ứng dụng (dự đoán tốt nhất của tôi là Visual Studio hoặc SSMS). Đó là lý do tại sao chúng tôi có khả năng nhận được cảnh báo hoặc lỗi trên máy xây dựng mà chúng tôi cố gắng hết sức để giữ GAC sạch sẽ như máy chủ sản xuất.

Để tải về tập tin bằng tay, bạn có thể vào https://servicelocation.codeplex.com/

Để khắc phục những lời cảnh báo xây dựng và các lỗi, bạn chỉ cần chạy một lệnh NuGet để cài đặt các CommonServiceLocation package. Gói chỉ chứa một tệp dll này. Microsoft đã phát hành chỉ 1 phiên bản (1.0.0.0) của tệp này từ năm 2008. Tệp này hoàn toàn tương thích với tất cả các phiên bản .NET và tất cả các phiên bản Unity.

0

Cảm ơn thông tin này

Tôi có cùng một vấn đề, tôi đã nâng cấp khung 2,0-4,0, tôi đã cố gắng tất cả những gì bạn đã đề cập, nhưng giải pháp là để thiết lập các giá trị PublicKeyToken cho mỗi tài liệu tham khảo EnterpriseLibrary trong tệp Web.Config

0

Cùng một vấn đề! Tôi vừa xóa phần xây dựng và xây dựng lại dự án. Vì vậy, tất cả các công cụ cũ đã đi và sửa phiên bản chính xác. Giải quyết.

0

tôi đã có thể giải quyết vấn đề này bằng cách loại bỏ từ ALL tài liệu tham khảo Logging trong file app.config ::

, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null 

ví dụ:

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging, 
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null" 
requirePermission="true" /> 

trở thành:

 <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging" 
requirePermission="true" /> 

Đây không phải là lý tưởng, nhưng nó hoạt động ...

Công cụ cấu hình thư viện doanh nghiệp, đặt giá trị trở lại, vì vậy bạn cần phải theo dõi điều đó. Tôi biết có một cách để nói cho các tập tin cấu hình để chấp nhận các cài đặt phù hợp mis - nhưng tôi không chắc chắn như thế nào.

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