Tôi có một tệp SLN bình thường, và tôi đang biên soạn nó tốt với msbuild từ dòng lệnh. Tôi làm điều này:msbuild SLN và vẫn nhận được kết quả đầu ra dự án riêng biệt?
C: \ slndir> msbuild/p: OutDir = C: \ slnbin \
Và nó bãi tất cả mọi thứ vào C: \ slnbin, ngoại trừ cho các trang web, mà được triển khai để C: \ slnbin_PublishedWebsites \.
Điều tôi muốn là không chỉ có tất cả các tệp nhị phân bị bỏ trong thư mục bin, mà còn có mỗi chương trình thực thi có thư mục "triển khai" của riêng nó, tương tự như những gì mỗi trang web nhận được.
Vì vậy, ví dụ, Nếu tôi có các dự án sau: - Common - Lib1 - Service1 - Lib2 - Service2
Tôi wan để nhận được:
C:\slnbin\ // Everything
C:\slbin\Deploy\Service1 // Common, Lib1, Service1
C:\slbin\Deploy\Service2 // Common, Lib2, Service2
Tôi đã cố gắng làm các công cụ như "msbuild/p: OutDir = C: \ slnbin \ $ (ProjectName)", nhưng nó chỉ xử lý nó như là một chữ và tạo ra một "$ (ProjectName)" subdir thực tế.
Ưu tiên, tôi sẽ không phải sửa đổi từng dự án riêng lẻ, v.v.
Điều này có khả thi không? Dễ dàng?
Điều này rất hữu ích đối với chúng tôi. Một câu hỏi - khi bạn gọi MSBuild passing Projects = "% (ProjectFiles.Fullpath)", MSBuild có đủ thông minh để chỉ xây dựng từng dự án một lần không? Ví dụ, nếu bạn có foo.dll trong Solution, và được tham chiếu bởi 4 dự án khác, nó sẽ xây dựng foo.dll một lần, hay 4 lần, hay 5 lần? –
"Không giống như sử dụng Exec Task để khởi động MSBuild.exe, nhiệm vụ này sử dụng cùng một quá trình MSBuild để xây dựng các dự án con. Danh sách các mục tiêu đã được xây dựng có thể bỏ qua được chia sẻ giữa cha và con. nhanh hơn vì không có quá trình tạo MSBuild mới nào được tạo. " Vì vậy, tôi đoán foo.dll sẽ được xây dựng một thời gian nhưng tôi không chắc chắn. –
Whats dòng lệnh cần thiết để xây dựng này? –