Tôi cần một tập hợp các tác vụ cần được thực thi chính xác một lần cho toàn bộ giải pháp. Thao tác này sẽ chạy các tác vụ sẽ sửa đổi từng dự án để chạy một tập hợp các tác vụ riêng biệt cho từng dự án. Chúng tôi đã làm điều này trước đó bằng cách sử dụng một dự án riêng biệt cho giải pháp có nhiệm vụ cấp độ giải pháp, nhưng chúng tôi muốn di chuyển ra khỏi đó. Có ai làm điều này hay không ai có bất cứ đề nghị về cách thực hiện điều này?Thực hiện mục tiêu chạy một lần ở cấp độ Giải pháp trong MSBuild
7
A
Trả lời
6
Vì tệp giải pháp không có định dạng MSBuild, chúng không dễ dàng mở rộng hoặc tùy chỉnh. Nếu bạn muốn kiểm soát nhiều hơn quá trình xây dựng, bạn sẽ phải tạo một tập tin msbuild "driver" sẽ thay thế tệp giải pháp của bạn. Bên trong tập tin trình điều khiển này bạn sẽ xây dựng tất cả các dự án mà bạn cần và thực hiện một số nhiệm vụ bổ sung. Bạn sẽ làm điều này bằng cách sử dụng MSBuild task. Đây là một ví dụ cho thấy cách xây dựng hơn 1 dự án.
<Project ...>
<ItemGroup>
<Projects Include="proj01.csproj"/>
<Projects Include="proj02.csproj"/>
<Projects Include="proj03.csproj"/>
</ItemGroup>
<Target Name="BuildAll">
<MSBuild Projects="@(Projects)" BuildInParallel="true" />
</Target>
</Project>
Vì vậy, trong trường hợp bạn chỉ thực hiện các tác vụ trước khi bạn tạo dự án. Cũng lưu ý rằng tôi đã chỉ định giá trị true cho BuildInParallel
cho biết MSBuild có thể thử và xây dựng nhiều hơn một dự án cùng một lúc.
Các vấn đề liên quan
- 1. Tại sao MSBuild không thực hiện nhiều mục tiêu?
- 2. Thư mục giải pháp phòng thu trực quan ở cấp độ dự án
- 3. Các giải pháp hạn chế cấu trúc thư mục MSBuild
- 4. MSBuild - Đặt thuộc tính cho giải pháp
- 5. MSBuild: Nhận thư mục hiện các mục tiêu
- 6. Vượt qua mục tiêu msbuild tùy chỉnh từ Giải pháp đến Dự án
- 7. Chỉ chạy mục tiêu MSBuild nếu dự án thực sự được xây dựng
- 8. Làm thế nào để gọi cùng một mục tiêu msbuild hai lần?
- 9. Cách thêm thư mục bao gồm bổ sung vào cấp độ giải pháp?
- 10. Mục tiêu "Cuối cùng" cho MSBuild
- 11. MSBuild: Chỉ định một mục tiêu từ dòng lệnh
- 12. thực hiện một mục tiêu 'cài đặt' với SCons
- 13. .gitignore gói thư mục NuGet ở mọi cấp độ nhưng bao gồm tệp .targets ở mọi cấp độ
- 14. Mục tiêu Maven chạy từ nhật thực
- 15. Bất kỳ giải pháp hiện có nào để thực hiện "giờ mở cửa" ở Django
- 16. Mục tiêu-C: Đếm số lần một đối tượng xuất hiện trong một mảng?
- 17. Viết một Maven Plugin/Mojo: làm thế nào để bạn thực hiện một mục tiêu buộc thực hiện các mục tiêu khác?
- 18. Mục tiêu C - cách lấy độ phân giải màn hình hiện tại?
- 19. Sự kiện xây dựng bài đăng VS, sao chép một cấp ở trên thư mục giải pháp?
- 20. Thực hiện tác vụ ở chế độ nền trong JavaFX
- 21. Dừng quá trình msbuild nếu mục tiêu không thành công
- 22. GNU thực hiện: Nhiều mục tiêu trong một quy tắc đơn
- 23. Thực hiện StyleCop MSBUILD từ Gói NuGet
- 24. Không thực hiện mục tiêu org.apache.maven.plugins
- 25. Giá trị trả lại được thực hiện ở cấp độ lắp ráp như thế nào?
- 26. Thư mục giải pháp trong studio trực quan
- 27. Trong một giải pháp C#, bạn khai báo các enums phạm vi giải pháp ở đâu?
- 28. giao thức C Mục tiêu đòi hỏi phải thực hiện ít nhất một trong một tập hợp các phương pháp
- 29. MsBuild chạy Exec cho mọi mục trong danh sách
- 30. Cách thực hiện cuộc gọi lại trong mục tiêu-C
Đây là một ý tưởng thú vị. Tôi tin rằng điều này cũng sẽ làm việc nếu tôi muốn thực hiện một số nhiệm vụ bổ sung trước khi xây dựng các dự án? (Và những nhiệm vụ bổ sung đó sẽ tự sửa đổi các dự án.) – Chandam
Tạo các tệp xây dựng này là một kịch bản rất phổ biến. Rất nhiều người thích viết các loại tệp xây dựng này thay vì sử dụng giải pháp xây dựng sản xuất. Trong trường hợp của tôi, tôi chỉ sử dụng các tệp giải pháp cho Visual Studio, không bao giờ thực sự được xây dựng. –
Nói trong cách tiếp cận này nói rằng nếu dự án của tôi 1 phụ thuộc vào dự án 2 sau đó sẽ không msbuild xây dựng dự án của tôi 2 hai lần do đó trì hoãn quá trình xây dựng? – Nikhil