2012-11-09 11 views
9

Chỉ cần tò mò - bất cứ khi nào tôi thấy xml của .csproj, nó bắt đầu với DefaultTargets="Build" và do đó tôi giả định rằng <Target Name="Build"> phải có mặt; Tuy nhiên, tôi chưa bao giờ tìm thấy mục tiêu mặc định này trong bất kỳ tệp .csproj nào.Tại sao <Target Name = "Build"> không tìm thấy trong bất kỳ tệp .csproj nào?

VS có tiêm mục tiêu này trước khi biên dịch hay không msbuild xây dựng nó theo mặc định. Điều gì xảy ra trong nội bộ?

+0

xem các tệp dựng được nhập bằng phương tiện rene

Trả lời

12

Gần cuối tệp bạn sẽ thấy điều này; <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> nhập khẩu các mục tiêu tiêu chuẩn, "Xây dựng" là một trong số này. Quá trình nhập tạo mục tiêu "Xây dựng" theo kiểu động dựa trên các dữ liệu khác có sẵn trong tệp dự án của bạn.

1

Có một hoặc nhiều < nhập ...> ở đâu đó trong hồ sơ dự án là hàng nhập khẩu tập tin khác (s) mà nên có mục tiêu mà ...

-2

Vì vậy, vấn đề là những gì? Nó phụ thuộc vào phiên bản VS của bạn, phiên bản tệp dự án, tình hình của dự án (TFS bị ràng buộc hay không), cài đặt của bạn trên các dự án. Tôi sẽ đề nghị bạn không nên tò mò về những điều này bởi vì họ dạy bạn không có gì. Cố gắng tò mò về thiết kế logic và cách chúng được thực hiện. Có rất nhiều công cụ mã cứng ngoài các cấu trúc này.

Cheers

+0

Tôi đánh giá cao đề xuất của bạn nhưng không trả lời được câu hỏi của tôi. –

+0

Vâng tôi biết. Bởi vì nó giống như bạn đã nói, chỉ là một gợi ý rằng kinh nghiệm của tôi khiến tôi viết nó cho bạn. ;) – Rikki

5

Một csproj thường có này:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

mà theo MSDN cũng nhập khẩu Microsoft.Common.targets đó là nơi mà mục tiêu được xác định.