2010-02-01 29 views
11

Tôi có một dự án ứng dụng web. Tôi có DLL mà tôi tham chiếu trong dự án được lưu trữ trong thùng/thư mục của tôi. Vâng, bất cứ khi nào tôi làm một xây dựng lại hoặc làm sạch từ Visual Studio, nó sẽ xóa tất cả mọi thứ trong thư mục đó. Làm cách nào để ngăn điều này xảy ra?Giữ studio trực quan xóa tất cả mọi thứ khỏi bin/khi xây dựng lại?

+0

Y ngăn chặn điều đó? – madatanic

+0

Bởi vì tôi có các tập tin như một số hội đồng cho các điều khiển không thuộc sở hữu của chúng tôi và cho Npgsql và AjaxControlToolkit và như vậy. – Earlz

+0

Nếu bạn thêm các assembly đó từ các vị trí vật lý (ví dụ C: \ MyAssemblies \ ...), chúng sẽ vẫn ở đó. Khi bạn muốn triển khai dự án của mình đến một máy khác, bạn cần đăng ký các assembly đó trên máy đó (cài đặt chúng vào GAC) nếu chúng không phải là các assembly hệ thống. – madatanic

Trả lời

8

Tôi sẽ tránh xa câu hỏi 'tại sao' và chỉ nêu rõ cách thực hiện. Đánh dấu các tập tin là chỉ đọc và VS không nên xóa chúng.

+4

-1 chỉ vì bạn không nên lưu trữ các tệp DLL của mình trong thư mục bin, ngay cả khi có cách để làm cho nó hoạt động. –

+11

Điều đó không có nghĩa là chúng ta không nên trả lời câu hỏi. Hãy cứu lấy người thánh thiện hơn ngươi cho một nơi mà các cuộc tranh luận như thế này là đúng. – billb

+0

Thực ra tôi đã quan tâm hơn đến thực tế là câu trả lời vừa được chấp nhận vừa được bình chọn cao nhất (vào thời điểm tôi đã bỏ phiếu). Bạn chính xác rằng nó là một câu trả lời hợp lệ cho vấn đề được đưa ra. –

1

Bạn có thể giải thích lý do tại sao bạn phải lưu trữ nó trong thư mục bin để bắt đầu không? tôi luôn luôn tạo một thư mục riêng biệt cho ví dụ/thành phần nơi tôi lưu trữ tất cả các dll tham chiếu.

+0

idk, bin/luôn có ý nghĩa với tôi. Đó là nơi mà các tệp nhị phân thực thi được đặt. Sẽ di chuyển các tệp ra khỏi thùng rác/sự cố gây ra? – Earlz

+0

@Earlz, bạn nên có một thư mục lib (một số người cũng giống như một thư mục của bên thứ ba) nơi bạn đặt các hội đồng tham chiếu. Kịch bản xây dựng của bạn nên sao chép chúng vào thư mục bin theo yêu cầu, điều này cho phép bạn có một bản dựng sạch. – Paolo

+0

@Paolo: Visual Studio sẽ sao chép chúng vào thùng rác tự động nếu chúng được tham chiếu từ thư mục 'lib'. –

48

Không đặt bất cứ thứ gì vào thùng rác. bin là thư mục đích cho các tệp nhị phân - nó không phải là thư mục nguồn cho các tệp nhị phân.

Tạo cho mình một thư mục lib hoặc một cái gì đó tương tự để đưa các tệp nhị phân của bên thứ ba vào. Bạn thậm chí có thể đặt tên nó là "Third Party Binaries", vì không phải ai cũng biết rằng "lib" có nghĩa là giống nhau. Hãy tham chiếu đến các tệp nhị phân trong thư mục này và Visual Studio sẽ sao chép chúng vào bin khi cần thiết (bao gồm cả việc xây dựng lại).

+6

+1 Câu trả lời đúng duy nhất cho vấn đề này. – Filburt

+0

Điều gì về các phụ thuộc thời gian chạy mà bạn không tham chiếu trực tiếp (tôi chỉ tham khảo phụ thuộc thời gian xây dựng) nhưng vẫn cần thiết để chạy dự án? – wensveen

+0

@wen chính xác điều tương tự - chúng không thuộc về bin –

-3

Một điều "không làm theo cách đó!" mọi người quên là kiểm soát nguồn và phần mềm của bên thứ 3. Sử dụng SVN bạn thường nhận được các tập tin mà nếu các tham chiếu vật lý được sử dụng sẽ tạo ra sự không phù hợp khi chúng không ở cùng một vị trí vật lý.

Một CMS mà tôi đang làm việc tại thời điểm này sẽ xây dựng dự án VS và giải pháp khi bạn thiết lập một "phiên bản" khác của nó. Nó đổ trong một số dlls nó cần ... nhưng nếu bạn xây dựng lại chúng biến mất.

Giải pháp đơn giản trong cả hai trường hợp là thực hiện như đã nêu ở trên và gọi nó là xong.

2

Theo dõi John Saunders trả lời và đặt tệp .dll của bạn vào một thư mục riêng biệt. Trong trường hợp của tôi, tôi đặt tên cho thư mục này là "ServerAssemblies". Sau đó sửa đổi tệp dự án của bạn (.csproj trong trường hợp của tôi) và thêm mục tiêu "AfterRebuild".

<Target Name="AfterRebuild"> 
    <ItemGroup> 
    <ExtraAssemblies Include="$(SolutionDir)ServerAssemblies\**\*.*"/> 
    </ItemGroup> 
    <Copy SourceFiles="@(ExtraAssemblies)" DestinationFolder="$(ProjectDir)bin\"></Copy> 
</Target> 
Các vấn đề liên quan