2011-12-09 31 views
10

Tôi muốn để có thể xác định số phiên bản dành cho tất cả các cụm được tạo ra trong một xây dựng như một đối số lệnh MSBuild như thế này:Chỉ số phiên bản lắp ráp như một đối số dòng lệnh trong MSBuild

MSBuild.exe /p:version=5.4.3.0 

tôi đã xem qua AssemblyInfoTask nhưng dường như tôi không phải là giải pháp tốt trong trường hợp này.

+0

Tại sao nhiệm vụ AssemblyInfo không phù hợp với bạn? Đó là mục đích * là * để thiết lập thông tin lắp ráp, bao gồm thuộc tính số phiên bản (AssemblyVersion). – DaveE

+0

Số phiên bản cần phải được thiết lập dựa trên một số quy tắc bên ngoài không phải trên một số quy tắc có thể được tích hợp bằng AssemblyInfoTask. Về cơ bản tôi muốn đối số dòng lệnh trở thành số phiên bản. – user379429

Trả lời

10

Tôi sử dụng tác vụ AssemblyInfo khi bạn mô tả trong nhận xét của mình mọi lúc.

<!-- update standard assembly attribute in all projects --> 
    <Target Name="BeforeBuild" > 
    <Message Text="Updating AssemblyInfo to Version $(VersionNumber)"></Message> 
    <Message Text="Writing to AssemblyInfo files in $(SolutionRoot)"></Message> 
    <AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)" 
        AssemblyCopyright="$(AssemblyCopyright)" 
        AssemblyVersion="$(VersionNumber)" 
        AssemblyFileVersion="$(VersionNumber)" 
        > 
    </AssemblyInfo> 
    </Target> 

Giá trị VERSIONNUMBER được truyền từ bên ngoài hồ sơ dự án MSBuild chính xác như bạn mô tả:

MSBuild <project_file> /p:VersionNumber=<value>;... 

Chúng tôi sử dụng các mục tiêu BeforeBuild để đảm bảo AssemblyInfo.cs tập tin tất cả được làm việc trên trước khi xây dựng bắt đầu . Đây không phải là những gì bạn muốn?

+1

Khi tôi thử điều này tôi nhận được một lỗi nói rằng nhiệm vụ AssemblyInfo không được tìm thấy. Tôi googled cho "nhiệm vụ AssemblyInfo" và cài đặt một cái gì đó bằng tên đó như là một phần mở rộng MSBuild, nhưng điều đó đã không làm việc. Bạn có thể cung cấp liên kết tới trang bạn đang sử dụng không? – CoderDennis

+0

@DennisPalmer, chúng tôi sử dụng tác vụ từ [Gói mở rộng MSBuild] (http://msbuildextensionpack.codeplex.com/). Bao gồm tệp tác vụ ... trong phần tử PropertyGroup và bạn nên làm tốt. – DaveE

+0

cài đặt mà gói phần mở rộng không giúp đỡ, tôi vẫn có lỗi vì vậy tôi đã mở câu hỏi SO ở đây http://stackoverflow.com/questions/13090933/assemblyinfo-not-found-and-msbuild-extension-pack-installed –

7

Tôi biết đây là câu hỏi cũ nhưng Google dẫn tôi đến đây là kết quả hàng đầu.

Tôi đã làm theo một giải pháp đơn giản trong this. Không cần gói mở rộng.

Về cơ bản những gì bạn cần làm là thêm một "BuildCommon.targets" tập tin và chỉnh sửa tập tin csproj bạn cho phù hợp để có số phiên bản được quy định tại msbuild như:

msbuild.exe abc.sln /p:Configuration=Release;VersionAssembly=1.2.3.4 

Hope this helps.

+0

Nếu nó là AssemblyVersion? –

+0

@Freidgeim: điều đó phụ thuộc vào cách bạn đặt tên cho lệnh chuyển đổi trong tệp BuildCommon.targets. đó là hoàn toàn tùy thuộc vào bạn :) – Jach

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