2013-06-13 4 views
13

이것은 teamcity에서 생성 된 패키지를 가져 오는 내 nuspec 파일입니다. 버전은 teamcity 변수에 의해 실제로 설정됩니다.nuspec 파일에서 Teamcity 변수 바꾸기

<?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> 

버전을 현재 팀십 빌드 ID 번호로 대체하는 방법은 무엇입니까? 모두 시도했습니다 $teamcity.build.id$%teamcity.build.id%

작동하지 않았습니다. $version$으로 시도했다. 버전은 패키지의 버전 태그에서 올바르게 대체되지만 종속성에서는 대체되지 않습니다.

현재 빌드에있는 동일한 버전의 패키지를 사용하여 동일한 빌드 번호를 사용하고자합니다.

어떤 생각이 도움이 될 것입니다.

답변

11

Teamcity 빌드 기능의 AssemblyInfo 패치 프로그램으로 해결되었습니다.

해결하려면

구성 단계 -> 단계 빌드 -. 빌드 기능 (버튼)

추가 어셈블리 정보의 Patcher 추가> 1.0로 버전을 제공 % teamcity.build.id %, 그 문제가 해결되었습니다.

버전이 $ version $ 인 버전에서 종속 라이브러리가 있으면이를 해결합니다.

희망이 있습니다.

10

TeamCity 변수로 바꾸지 않아도됩니다. 다음과 같은 -version 스위치를 사용하십시오.

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

이렇게하면 런타임시 nuspec 버전이 대체됩니다.

+2

종속 라이브러리는 동일한 버전이어야합니다. Assembly Patcher로 해결되었습니다. – Kannaiyan

3

나는 [$ version $]을 내 의존성에 넣음으로써 그것을 풀었다.

+0

AssemblyInfo Patcher는 dll도 버전 화합니다. 그렇지 않으면 dll이 한 버전에 있고 nuget 패키지가 다른 버전에있을 것입니다. – Kannaiyan

+1

이것은 나를 위해 일했습니다. 열쇠는'-Version' 스위치가'nuget pack' 명령에 사용되는지 확인하는 것입니다. – craftworkgames

2

TeamCity 9.1에서 "Nuget Pack"빌드 단계에서 버전 번호를 무시할 수 있습니다.

enter image description here

+0

모든 프로젝트에서 동일한 버전을 사용하려는 경우 구성하기가 번거로울 수 있습니다. 하나의 중앙 위치 대신 각 nuspec을 구성해야합니다. – Kannaiyan