2012-02-01 23 views
7

Tôi đang cố gắng tạo tài liệu XML cho tất cả các dự án trong giải pháp ngay cả khi tùy chọn không được kiểm tra trong thuộc tính dự án (và đây là điểm then chốt).MSBUILD Tạo tệp tài liệu xml cho tất cả các dự án trong giải pháp (không cần chạm vào dự án)

Tôi đang sử dụng TFS 2010 SP1 và đã thử với "/ p: TreatWarningsAsErrors = true/p: GenerateDocumentation = true" trong trường "MSBuild Arguments" của định nghĩa xây dựng của tôi. Nó không tạo ra bất cứ điều gì.

Tôi cũng đã thử với /p:DocumentationFile=foo.xml, nó hoạt động nhưng tôi giả định tệp bị ghi đè bởi dự án được biên dịch cuối cùng, vì vậy tôi đã thử sử dụng biến thay vì không may mắn, tôi đã thử với

/p:DocumentationFile=$(Project).xml, 
/p:DocumentationFile=$(localProject).xml 
/p:DocumentationFile=$(localBuildProjectItem).xml 

Có cách nào để tạo tài liệu XML cho tất cả các dự án từ bên trong MSBUILD ngay cả khi tùy chọn không được chọn trong dự án?

PS: Và có, tôi đã thấy một chủ đề tương tự như thế này nhưng tôi không muốn sửa đổi các dự án, đó là toàn bộ điểm làm việc đó với MSBUILD.

Cảm ơn thời gian của bạn

+0

bạn đã bao giờ tìm được giải pháp cho điều này chưa? bên dưới không giải quyết được vấn đề – artfulhacker

+0

Nop, theo như tôi biết, đây là điều tốt nhất chúng tôi có thể nhận được –

+0

Tôi đã suy nghĩ một giải pháp có thể, sẽ được lặp qua sln và xây dựng csproj một cách riêng biệt, sau đó DocumentationFile = .. sẽ công việc, tôi thấy điều này nhưng tôi chưa bao giờ thấy loại cú pháp này trước trong một tập lệnh xây dựng http://social.msdn.microsoft.com/Forums/vstudio/en-US/e46e2500-0acc-4e0f-95aa-ed282a73d2b0/get -all-csproj-files-in-build-template-khi-xây dựng-sln – artfulhacker

Trả lời

2
  1. Mở trình mẫu của bạn (nghĩa là .: $/yourproject/BuildProcessTemplates/DefaultTemplate.xaml)

  2. Cuộn xuống để tìm hoạt động Compile the Project.

  3. Thêm một biến mới có tên DocumentationFile, type = String, phạm vi = Compile the Project
  4. thiết lập giá trị mặc định của nó để:

    String.Format("{0}.XML", System.IO.Path.GetFileNameWithoutExtension(serverBuildProjectItem)) Compile the Project

  5. Lưu thay đổi và cuộn xuống để Run MSBuild for Project hoạt động.

  6. Trong CommandLineArguments, thiết lập giá trị sau: String.Format("/p:SkipInvalidConfigurations=true {0};DocumentationFile={1}", MSBuildArguments, DocumentationFile) Run MSBuild for Project

  7. Kiểm tra trong những thay đổi và xây dựng. Điều này sẽ tạo ra các tài liệu ngay cả khi nó không được thiết lập bởi dự án.

+0

Tôi sẽ đánh dấu câu trả lời này bởi vì tôi nghĩ rằng nó tốt nhất chúng ta có thể nhận được mà không sửa đổi nhiệm vụ, có vẻ như trong nhiệm vụ msbuild, bộ sưu tập dự án thực sự là các giải pháp được chọn trong định nghĩa xây dựng chứ không phải từng dự án của từng giải pháp –

+0

điều này tạo tệp xml nhưng nó không ngăn tệp được thay thế khi xây dựng một đoạn với nhiều dự án – artfulhacker

Các vấn đề liên quan