2011-11-17 33 views
8

Chúng tôi có một dự án trong đó các tệp .js và .css được nén bằng Bộ nén YUI. Một công cụ rất tốt. Chúng tôi cũng sử dụng TFS 2010 làm máy chủ xây dựng với các bản dựng hàng đêm cũng triển khai cho trang web dev của chúng tôi.Máy nén YUI và TFS Build

Sự cố mà chúng tôi gặp phải là tệp YUI tạo ra nguyên nhân là một vấn đề "Truy cập bị từ chối". Điều này là do đã có một tập tin được tạo ra từ trước đó, và nó là một phần của dự án, làm cho nó chỉ đọc. Tuy nhiên chúng tôi có thể loại bỏ nó khỏi dự án và nó sẽ tạo ra tốt. Vấn đề sau đó là các tập tin được tạo ra không được bao gồm trong gói triển khai thực tế.

Tại địa phương tôi không gặp vấn đề gì bởi vì tôi có tập lệnh lệnh dựng sẵn trước để xóa các tệp hiện có. Điều này dường như không hoạt động trên máy chủ xây dựng. Có lẽ người dùng ngữ cảnh tfs thiếu sự cho phép, tôi không biết.

Có ai có thể gặp sự cố tương tự không?

Cập nhật 21/11: Câu hỏi có thể không rõ ràng. Để đơn giản hóa, chỉ cần nói rằng tôi muốn tính năng này hoạt động giống như ở địa phương:

IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)Styles\styles.min.css 
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)JavaScript\script.min.js 

Điều này được xác định trong dòng sự kiện lệnh xây dựng trước, trong Thuộc tính dự án -> Tạo sự kiện.

Tập lệnh loại bỏ các tệp trước khi tạo tệp YUI và do đó không có tệp nào để ghi đè. Có thể đơn giản là ngữ cảnh người dùng thực thi TFS-build có quyền sửa đổi không đầy đủ không?

SOLUTION:

Chúng tôi đã kết thúc với đoạn mã sau trong trường hợp xây dựng trước:

attrib -r "$(ProjectDir)Styles\styles.min.css" 
attrib -r "$(ProjectDir)JavaScript\script.min.js" 
IF NOT $(ConfigurationName) == Debug $(MSBuildBinPath)\msbuild.exe "$(ProjectDir)Config\MSBuild\BuildSettings.xml" 

/Mattias

+0

Tôi nghĩ rằng bước đầu tiên của bạn là đọc tệp nhật ký xây dựng TFS và xem tác vụ trước khi xây dựng của bạn có đang chạy hay không. Xem xét thêm một 'attrib -r' vào kịch bản sự kiện prebuild để tắt cờ chỉ đọc cho tệp sẽ được tạo. –

+0

Tôi vẫn không hiểu câu hỏi của bạn ... Bạn đang cố gắng tìm ra lý do tại sao bước tạo trước không chạy trên máy chủ xây dựng TFS? –

+0

Tôi đã tự hỏi làm thế nào để giải quyết vấn đề của tự động tạo ra các tập tin như là một phần của xây dựng, khi các tập tin đã tồn tại (và chỉ đọc). Có lẽ chúng tôi sẽ áp dụng cùng một kỹ thuật sử dụng sự kiện dựng trước để xóa tất cả. – GarethOwen

Trả lời

4

Nếu các tập tin là một phần của dự án của bạn và tải về từ kho lưu trữ TFS, trước hết hãy luôn loại bỏ cờ chỉ đọc được nếu bạn cần xử lý chúng, ví dụ như xóa. Vì vậy, trong tập lệnh của bạn, trước tiên hãy làm:

attrib -r *.js 
attrib -r *.css 

Có thể xóa chúng sau đó. Nó có lẽ không phải là một vấn đề cho phép, vì tài khoản được sử dụng để tải xuống các tệp cũng là tài khoản được sử dụng để xóa chúng.

+0

Làm việc như một sự quyến rũ. Cảm ơn bạn! – Mattias

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