2015-11-19 18 views
7

Tôi đã tình huống sau đây:
Giải pháp vớiTại sao tệp LocalCopy của tôi không được nội địa hóa từ một dự án tham chiếu trong một dự án tham chiếu?

- Project 1: Web_Application (VB.NET Web Application) 
- Project 2: Code_Library (VB.NET DLL, Referenced in Project 1, References My_Reports, My_SQL) 
- Project 3: My_SQL (Embedded SQL scripts C# DLL, referenced in Code_Library) 
- Project 4: MyReports (C# dll, depends on ReportViewer), 
       referenced in Code_library, copyLocal = true 
       unfortunately depends on 
        - Microsoft.ReportViewer.WebForms.dll (copyLocal = true) 
        which depends on 
        - Microsoft.ReportViewer.Common.dll (copyLocal = true) 
        - Microsoft.ReportViewer.ProcessingObjectModel.dll (copyLocal = true) 
        - System.Web.DataVisualization.dll (copyLocal = true) 

Các dll ReportViewer của được thiết lập để localcopy trong MyReports dự án
Trong Code_Library, MyReports được thiết lập để localcopy
Trong Web_Application, Code_Library & MyReports được thiết lập để bản địa hóa

Điều này mang lại kết quả rất không hài lòng sau đây:
Trong MyReports, the R eportViewer dll của localcopied vào thư mục đầu ra.
Trong Code_Library, MyReports.dll nằm trong thư mục đầu ra, nhưng các ReportViewer dll không phải là ...
Trong Web_Application, CodeLibrary.dll & MyReports.dll nằm trong thư mục đầu ra, nhưng ReportViewer dll không ...

Tại sao?
Có bất cứ điều gì tôi có thể làm (viết tắt của việc thêm của ReportViewer dll cho dự án Web Application của tôi?

Tôi hoàn toàn không muốn thêm ReportViewer như depencency để Code_Library, từ đó tôi phải cập nhật 2 địa điểm ., nếu tôi muốn thay đổi sang một phiên bản cao hơn của ReportViewer

+0

Sự cố kết nối đã mở https://connect.microsoft.com/VisualStudio/feedback/details/2035442 –

+0

Dll có vấn đề là một phần của GAC ​​của bạn trên máy phát triển không? Nếu vậy, việc loại bỏ chúng có thể giúp studio trực quan nhận ra nhu cầu đáp ứng các phụ thuộc địa phương. – grek40

+0

@ grek4: Rất có thể họ đang ở trong GAC. Tôi không thể xóa chúng, tôi không có quyền quản trị. Không có các nhà phát triển khác. Tôi cũng có SQL máy chủ Express & quản lý phòng thu được cài đặt, vì vậy tôi không thể nói nếu các hội đồng được cài đặt với một tiêu chuẩn cài đặt .NET 2.0. Ngoài ra, .NET 2.0 dll có lẽ sẽ không có trên một máy sản xuất, nếu nó chạy trên một ứng dụng .NET 4.0. –

Trả lời

0

tôi có một vài lựa chọn:

  1. GAC tài liệu tham khảo bạn không muốn sao chép
  2. tham khảo chúng trong file app.config - ala this
  3. Thêm một sự kiện postbuild để sao chép các tập tin đến nơi bạn cần đến chúng ...

Bạn có thể kiểm tra nơi ứng dụng đang tìm kiếm các tập tin bằng cách enabling fusion logging.

+0

Tùy chọn 1 là không thể, vì tôi không có quyền truy cập quản trị trên máy chủ của khách hàng. Tùy chọn 2 rất không hài lòng, vì nhiều dự án Web_Application (cho nhiều khách hàng khác nhau) sử dụng Code_Library. Tùy chọn 3, với đường dẫn cố định, sẽ chỉ hoạt động trên máy tính của tôi. Với các đường dẫn tương đối, sẽ chỉ hoạt động trên các máy tính có cùng cấu trúc thư mục. –

+0

Bạn có khả năng nhúng các tham chiếu gián tiếp vào dự án được tham chiếu ala [this] (http://stackoverflow.com/a/13766575/2319909) –

+0

Hmm, ilMerge sẽ là một ý tưởng. –

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