Trả lời

30

Có, bằng cách thêm một cuộc gọi vào nó trong trình chỉnh sửa sự kiện sau khi xây dựng.

Nếu bạn truy cập trang Thuộc tính cho dự án của mình, bạn nên chọn tab Xây dựng sự kiện. Bạn có thể nhập cuộc gọi vào tệp lô của mình trong hộp văn bản Sự kiện sau khi tạo sự kiện.

Nếu bạn muốn tham khảo tệp lô bằng cách sử dụng đường dẫn đi kèm trong dự án hoặc giải pháp, bạn có thể nhấp vào nút Chỉnh sửa sau khi tạo .... Thao tác này sẽ mở ra hộp thoại Dòng lệnh sự kiện sau khi xây dựng.

Hộp thoại này có nút Macro >> mà bạn có thể nhấp vào. Nó sẽ hiển thị cho bạn tất cả các Macro có sẵn mà bạn có thể sử dụng để chỉ các thư mục và tệp trong giải pháp của bạn.

Khi bạn chọn một trong các macro đó, bạn có thể sử dụng nút Chèn để chèn chúng vào tập lệnh của bạn.

+0

+1 nhưng để nhận xét đầy đủ nhận xét của divo về phản hồi của Jon Skeet, sử dụng các macro để chỉ định đường dẫn cho các tệp lô cụ thể của dự án . – AAT

+1

Câu trả lời được đề cập ở trên không còn tồn tại. Đường dẫn bình luận là Q. "Làm thế nào để cung cấp cho các tập tin thực thi đường dẫn?" và nhận xét trả lời là A. "Bạn có thể sử dụng hoặc sử dụng đường dẫn mã hóa cứng, hoặc - tốt hơn - sử dụng các biến có sẵn khi bạn nhấp vào nút" Macro ". Ví dụ:" $ (ProjectDir) "(không có báo giá) sẽ là thư mục mà tập tin dự án Visual Studio cư trú " –

+0

Làm thế nào để làm điều đó cho toàn bộ giải pháp chứ không phải là dự án riêng lẻ? –

8

Cũng như gọi tệp .bat, bạn có thể nhập lệnh lô (tức là các lệnh thông thường có sẵn từ bảng điều khiển Windows - cmd.exe) trực tiếp vào trường Tạo trước/Xây dựng sau. Điều này có thể thích hợp hơn vì nó có nghĩa là bạn không phải duy trì tệp bó riêng biệt, vì tất cả các lệnh của bạn sẽ là một phần của dự án.

92

Chắc chắn, đây là một ví dụ:

call "$(SolutionDir)scripts\copyifnewer.bat" "$(SolutionDir)libs\RLPL.Services.CertificateValidator.Basic.dll" "$(TargetDir)RLPL.Services.CertificateValidator.Basic.dll" 
call "$(SolutionDir)scripts\copyifnewer.bat" "$(SolutionDir)libs\RLPL.Services.CertificateValidator.Common.dll" "$(TargetDir)RLPL.Services.CertificateValidator.Common.dll" 

Chỉ cần lưu ý 2 vấn đề có thể bạn có thể có:
1) dấu ngoặc kép bao quanh (xem cách từng phần được bao quanh bởi " dấu)
2) nếu bạn muốn gọi 2 hoặc nhiều tập tin batch đảm bảo bạn sử dụng lệnh call nếu không bạn sẽ gặp khó khăn trong việc tìm kiếm lý do tại sao con dơi thứ hai không thực hiện công việc của mình

+12

cảm ơn bạn đã lưu ý về "cuộc gọi", nó giải quyết được vấn đề của tôi với việc thực thi nhiều lần. – EvgeniyK

+2

Mặc dù SO bây giờ yêu cầu tôi không giải thích lòng biết ơn của tôi: +1 cho điểm 2) – slater

+1

Có thể cần phải thay đổi thư mục hiện tại, theo mặc định nó được chạy trong thư mục 'Bin'. Tôi cần chạy bên trong thư mục giải pháp, vì vậy với tôi đó là: 'gọi cd $ (SolutionDir)' như là một dòng đầu tiên trong các sự kiện Post-build. –