2008-09-22 20 views
8

Tôi có một số tệp AssemblyInfo.cs như một phần của nhiều dự án trong một giải pháp mà tôi đang xây dựng tự động như một phần của TeamCity.Sử dụng AssemblyInfo để tự động cập nhật nhiều tệp AssemblyInfo.cs

Để làm cho tập lệnh msbuild dễ bảo trì hơn, tôi muốn có thể sử dụng tác vụ cộng đồng AssemblyInfo cùng với một ItemGroup ví dụ:

<ItemGroup> 
    <AllAssemblyInfos Include="..\**\AssemblyInfo.cs" /> 
</ItemGroup> 

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
        ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
        AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="@(AllAssemblyInfos)" /> 

Không rõ ràng vì OutputFile không thể là một nhóm mục tham chiếu.

Bất kỳ ai biết cách thực hiện công việc này?

Trả lời

9

Hãy thử thay đổi @ để a% như sau

<ItemGroup> 
<AllAssemblyInfos Include="..\**\AssemblyInfo.cs" /> 
</ItemGroup> 

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
           ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
           AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="%(AllAssemblyInfos)" /> 

Điều này tạo ra một cuộc gọi cho mỗi mục trong AllAssemblyInfos.

Bạn cũng hãy xem bài viết này, sẽ hữu ích.

http://blogs.msdn.com/aaronhallberg/archive/2006/09/05/msbuild-batching-generating-a-cross-product.aspx

+0

Thats chính xác những gì tôi đã cố gắng đạt được, cảm ơn! –

+1

Không có vấn đề gì, tôi đã từng làm điều đó với mỗi vòng trong NANT, có một chút khác biệt trong MSBuild, nhưng nó cũng theo nhiều cách mạnh mẽ hơn. Theo kịp các câu hỏi hay :-) – evilhomer

16

Chúng tôi sử dụng tệp "được liên kết" trong dự án. Giải pháp Explorer -> Thêm mục Existin -> .. select_file .. -> arrow_on_left_of_add_button -> Thêm dưới dạng liên kết

Sau đó, tệp được chọn (AssemblyInfo.cs bây giờ) không được sao chép vào direcotry của dự án, chồi chỉ được liên kết từ đường dẫn được chỉ định.

+0

Đó là một ý tưởng thú vị mà tôi chưa từng nghĩ đến! Có thể cho rằng một đi nếu tôi không thể tìm thấy một giải pháp thông qua MSBuild. Nó sẽ được tốt đẹp để tìm hiểu làm thế nào để liệt kê một ItemGroup cho sử dụng khác quá. –

+0

Tôi cũng làm như vậy. Bạn cũng có thể bao gồm một tập tin cụ thể lắp ráp .CS trông giống như tập tin assemblyinfo.cs trung bình của bạn, nhưng chứa các bit cụ thể lắp ráp. – Will

+0

Tôi luôn làm điều này. Nó hoạt động tuyệt vời. – caryden

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