2010-05-11 34 views
13

Tôi đang sử dụng Visual Studio 2010 và sử dụng triển khai web để quảng bá trang web .Net MVC đến các môi trường cụ thể. Tôi đã cài đặt Elmah, và nó hoạt động tốt trên môi trường DEV của tôi, nhưng khi tôi đẩy TEST, tôi có ngoại lệ vì SQLite không phải là một định dạng tốt.SQLite không mong muốn được chèn vào bin

Tôi không sử dụng SQLite ở Elmah hoặc bằng cách khác mà tôi biết. Tôi đã loại bỏ tất cả các refernces có thể nhìn thấy để SQLite, và tôi đã loại bỏ các .dll từ tất cả các thư mục bin cấu hình. Nhưng nó vẫn được chèn vào với mỗi bản dựng. Tôi nhận ra vấn đề ngoại lệ là SQLite không thể được xây dựng cho CPU Any, và môi trường của tôi thay đổi từ x86 đến x64. Nhưng tôi muốn SQLite thậm chí không có mặt.

Tôi đã gỡ cài đặt Elmah và SQLite vẫn được chèn vào thư mục \ bin. Bây giờ tôi đã cài đặt lại Elmah, và tôi tự xóa SQLite.dll khỏi \ bin sau mỗi lần xây dựng. Làm thế nào tôi có thể xác định những gì đang gây ra SQLite được chèn vào \ bin của tôi sau mỗi lần xây dựng?

+0

Tôi không rõ ràng về vấn đề này: Bạn đã bỏ SQLite từ Mã Nguồn ELMAH và tái biên dịch nó? –

+0

Stefan, tôi đã không xóa bất kỳ tham chiếu nào từ nguồn Elmah. Tôi chỉ đơn giản là sử dụng các nhị phân Elmah. Có vẻ như tôi sẽ phải chạm vào mã nguyên sơ của họ. Tôi sẽ đi vào nguồn. – wilk

Trả lời

14

Nếu bạn không sử dụng SQLite thì bạn cần phải chỉ cần loại bỏ nó ra khỏi nguồn vị trí từ nơi bạn nhập khẩu tài liệu tham khảo. Để mở rộng trên đó, giả sử bạn đã tải xuống và giải nén ELMAH đến đường dẫn C:\ELMAH trên ổ đĩa cục bộ của bạn. Khi bạn thêm tham chiếu vào ELMAH, có thể bạn đã trỏ đến một trong các phiên bản nền tảng dưới C:\ELMAH\bin, như C:\ELMAH\bin\net-2.0\Release. Từ C:\ELMAH\bin thư mục con, hãy xóa tất cả các tệp và tập tin không mong muốn khác ngoại trừ Elmah.dll, Elmah.pdbElmah.xml. Nói đúng ra, bạn thậm chí không cần hai thứ hai nhưng họ vẫn được khuyến khích. Một khi bạn đã làm điều đó, bạn có thể thêm một tham chiếu đến Elmah.dll vào dự án của bạn trong Visual Studio và không có phụ thuộc nào sẽ được đưa vào thư mục bin của ứng dụng của bạn. Bạn có thể phải xóa thư mục bin và xây dựng lại dự án của mình để loại bỏ bản sao cũ của System.Data.SQLite.dll khỏi tham chiếu trước đó. ELMAH sẽ tiếp tục hoạt động tốt mà không cần System.Data.SQLite.dll miễn là bạn không sử dụng Elmah.SQLiteErrorLog làm cửa hàng nhật ký lỗi của mình.

Theo các đề xuất khác, bạn không cần phải loại bỏ các tham chiếu đến SQLite khỏi các nguồn ELMAH và tạo một bản dựng riêng tư.

+1

Trong khi câu trả lời của Stefan hoàn thành mục tiêu của tôi với ít nỗ lực, giải pháp của Atif giải quyết được vấn đề mà không cần chạm vào nguồn. Đây thực sự là những gì tôi đang tìm kiếm.Bên cạnh đó, tôi là ai để tranh luận với Atif khi nói đến Elmah. – wilk

+1

Trong khi phương pháp này không hoạt động, nó dẫn đến cảnh báo CA260 MSBUILD của cảnh báo VS2010 nếu bạn đã bật phân tích mã cho dự án tham chiếu đến Elmah. Tôi không thể tìm thấy bất kỳ cách nào để ngăn chặn cảnh báo này. Vì vậy, việc tung lên là: có các assembly không cần thiết trong các phụ thuộc dự án của tôi, hoặc sống với các cảnh báo phân tích mã. Tôi không thích ... – BrettRobi

+2

Bất kỳ đề xuất nào cho người dùng NuGet? Nếu tôi lấy gói Elmah trong NuGet nó sẽ ném dll SQLite vào thư mục bin của tôi trên mọi bản dựng. – BZink

0

Sử dụng trình chỉnh sửa văn bản có hỗ trợ "tìm trong tệp" để tìm kiếm tất cả các tệp dự án của bạn cho "sqlite". Một cái gì đó phải được tham chiếu nó.

+0

Sam, cảm ơn. Tôi đã tìm thấy trong tập tin, nhưng không tìm thấy tham chiếu đến SQLite. – wilk

2

Tôi nghĩ rằng Visual Studio sẽ phát hiện rằng SQLite được yêu cầu bởi Elmah và sao chép nó nếu nó tìm thấy nó. Để đạt được mục tiêu tương tự như bạn, tôi đã xóa tất cả các công cụ SQLite khỏi mã nguồn Elmah và xây dựng lại nó. Đây là điều khá đau để làm ...

+1

Cha Ching! Chỉ cần loại bỏ SQLiteErrorLog.cs khỏi dự án, xây dựng và đi. Cảm ơn đã giúp đỡ. – wilk

0

Tôi biết đó là một câu hỏi cũ, nhưng tôi có một vấn đề tương tự và đã hạ cánh ở đây, vì vậy có lẽ câu trả lời của tôi vẫn hữu ích cho người khác.

Đơn giản chỉ cần thêm video này vào tập tin dự án của bạn trong ứng dụng web của bạn trong một phần tử PropertyGroup ưa thích:

<ExcludeFilesFromDeployment>bin\System.Data.SQLite.dll</ExcludeFilesFromDeployment> 
Các vấn đề liên quan