2009-01-28 24 views
7

Tôi muốn sửa đổi chuỗi trong tệp .h với NAnt trước khi tạo giải pháp.làm thế nào để sửa đổi nguồn với NAnt?

Có macro trong tệp .h: #define SERVER_ADDRESS "www.customserver.net" và tôi muốn sửa đổi chuỗi trước khi triển khai phần mềm để mỗi bản dựng có thể được tạo cho địa chỉ tùy chỉnh bằng cách chuyển địa chỉ trong dòng lệnh .

Có ai biết cách thực hiện điều này không?

Cảm ơn!

Trả lời

14

Có thể sử dụng tác vụ loadfile để trợ giúp việc này. Tác vụ này tải tệp đã cho vào thuộc tính. Điều gì thực sự hữu ích là khi bạn áp dụng một filterchain với replacetokens để thay thế các khu vực nhất định của tệp. Ví dụ, nếu một là để xác định một file header mẫu giống như trông một cái gì đó như thế này:

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#endif 

Người ta có thể sử dụng các nhiệm vụ loadfile để thay thế @ SERVER_ADDRESS_TOKEN @ với bất kỳ chuỗi, và sau đó sử dụng echo tác vụ thực sự ghi lại tiêu đề thực sự tiêu đề thực sự.

<loadfile file="MyMacrosTemplate.h" property="theMacrosFileContents"> 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_ADDRESS_TOKEN" value="www.customerserver.net" /> 
     </replacetokens> 
    </filterchain> 
</loadfile> 
<echo file="MyMacros.h" message="${theMacrosFileContents}" /> 

Điều này sẽ tạo tệp MyMacros.h với chuỗi đã sửa đổi cho SERVER_ADDRESS.

0

Tôi không nghĩ đó là cách thích hợp để sử dụng NAnt. Tôi sẽ không muốn sửa đổi nội dung tập tin theo cách đó. Tôi không tin là có thể.

Có lẽ bạn có thể có một tệp khác cho từng trường hợp và chỉ định đường dẫn đến nó tùy thuộc vào thông số đầu vào.

Cá nhân, tôi nghĩ các chuỗi như vậy không nên được mã hóa cứng vào ứng dụng. Nếu họ sẽ thay đổi, tốt hơn để chuyển đổi chúng thành các tệp cấu hình hoặc thuộc tính được đọc khi khởi động. Bằng cách đó bạn có thể thay đổi chúng mà không phải thay đổi nguồn hoặc biên dịch lại.

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