2013-06-13 29 views
13

Đây là tệp nuspec của tôi để nhận gói được tạo từ teamcity. Phiên bản thực tế được đặt bởi biến nhóm.Thay thế biến Teamcity trong tệp nuspec

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>Company.Name</id> 
    <version>$version$</version> 
    <title>Title</title> 
    <authors>My Name</authors> 
    <owners>We are the owners</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Support</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2013</copyright> 
    <tags>Core</tags> 
    <dependencies> 
     <dependency id="Core.Assembly" version="[1.0.$teamcity.build.id$]" /> 
    </dependencies> 
    </metadata> 
</package> 

Làm cách nào để thay thế phiên bản bằng số id xây dựng đội ngũ hiện tại? Đã thử với cả hai $teamcity.build.id$%teamcity.build.id%

Đã không hoạt động. Đã thử với $version$. Phiên bản được thay thế chính xác trong thẻ phiên bản của gói, nhưng không được thay thế trên phụ thuộc.

Tôi muốn sử dụng cùng một phiên bản của gói trong phiên bản hiện tại, vì vậy chúng có cùng số bản dựng.

Bất kỳ ý tưởng nào cũng sẽ hữu ích.

Trả lời

11

Đã giải quyết bằng bản vá AssemblyInfo từ Tính năng xây dựng Teamcity.

Để khắc phục,

Cấu hình Steps -> Xây dựng Steps -.> Thêm tính năng xây dựng (Button)

Thêm AssemblyInfo Patcher và cung cấp cho các phiên bản 1,0% teamcity.build.id% và giải quyết vấn đề.

Có thư viện phụ thuộc ở phiên bản với $ version $ đã giải quyết.

Hy vọng điều đó sẽ hữu ích.

10

Bạn không cần thay thế bằng biến TeamCity. Sử dụng công tắc chuyển đổi, chẳng hạn như:

nuget.exe pack <nuspec> -version %teamcity.build.id% 

Bằng cách này, phiên bản nuspec sẽ bị ghi đè khi chạy.

+2

Thư viện phụ thuộc cần phải có cùng một phiên bản. Giải quyết với Assembly Patcher. – Kannaiyan

3

Tôi đã giải quyết nó bằng cách đơn giản đặt [$ version $] vào sự phụ thuộc của tôi.

+0

AssemblyInfo Patcher cũng là phiên bản dll của bạn. Nếu không thì dll sẽ nằm trên một phiên bản và gói nuget sẽ nằm trên một phiên bản khác. – Kannaiyan

+1

Điều này làm việc cho tôi. Điều quan trọng là để đảm bảo công tắc '-Version' được sử dụng trên lệnh' nuget pack'. – craftworkgames

2

Trong TeamCity 9.1 Bạn có thể ghi đè lên số phiên bản trong bước xây dựng "Gói Nuget".

enter image description here

+0

Điều này có thể cồng kềnh để cấu hình nếu bạn muốn có cùng một phiên bản trên tất cả các dự án. Có nghĩa là bạn cần phải cấu hình cho mỗi nuspec thay vì một vị trí tập trung. – Kannaiyan

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