2012-09-10 9 views

Odpowiedz

5

Środowisko Nazwa zmiennej powinien być napisany bez Procent-znaki („%”), podobnie jak to :

VERSION 

poza tym, myślę, że jesteś dobry, aby przejść.

Może również rozważyć zmianę
${BUILDS_ALL_TIME}
do
${BUILDS_ALL_TIME, XX}

(będzie wymuszać dwucyfrowy gromadzeniu liczby z zerami na początku)

+2

Tak, wymyśliłem, również wygląda na to, że MSBuild.exe domyślnie nie obsługuje wersji/p:. musisz zadzierać z rozszerzeniami MSBuld. Skończyłem właśnie na pisaniu aplikacji konsolowej, aby zaktualizować AssemblyInfo.cs przed budowaniem i nazwać to przejściem w zmiennej środowiskowej. Było to szybsze niż mieszanie się ze skomplikowanymi rozszerzeniami msbuild. –

+0

Cóż, miałem nadzieję, że znalazłeś dobry sposób na przekazanie wersji do kompilacji, ponieważ używamy również dostosowanego do tego skryptu ... – Gonen

2

Jest to cel MSBuild, który zastępuje wersję numer w pliku GlobalAssemblyInfo.cs ze zmienną SVN_REVISION z Jenkins.

Mamy wiele rozwiązań projektowych, w których każdy projekt odwołuje się do tej samej GlobalAssemblyInfo w celu uzyskania informacji ogólnych (takich jak wersja). Zmodyfikuj to, aby pasowało do twojej konfiguracji.

Po spełnieniu warunku Exists cel jest wykonywany na komputerach programistycznych, w których nie zainstalowano MSBuildCommunityTasks. W tych przypadkach numer wersji w GlobalAssemblyInfo.cs pozostaje nietknięty.

<Target Name="InjectSVNRevision" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')"> 
<!-- When this build is done by the Jenkins CI server; the svn revision number is set in the environment variable SVN_REVISION 
    This little snippet replaces the revision number in GlobalAssemblyInfo.cs with this svn revision number 
    --> 
<Message Text="Injecting SVN revision number in GlobalAssemblyInfo.cs" /> 
<FileUpdate Files="GlobalAssemblyInfo.cs" 
    Multiline="true" 
    Singleline="false" 
    Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\(&quot;([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?&quot;\)" 
    ReplacementText="$1(&quot;$2.$(SVN_REVISION)&quot;)" 
    Condition="$(SVN_REVISION) != '' "/> 
</Target> 
1

Najprostszym sposobem, w jaki to zrobiłem, jest użycie Change Assembly Version. Używając tej wtyczki, wystarczy podać numer wersji (lub użytą zmienną środowiskową) i zastąpić ją we wszystkich plikach AssemblyInfo.cs w obszarze roboczym.

0

Bardzo szybkim zadaniem jest utworzenie zadania powershell przed zadaniem msbuild. Zakłada to, że zdefiniowałeś zmienną VERSION jak wyżej (bez %%). I sprawdziłeś usunąć obszar roboczy przed rozpoczęciem kompilacji.

To jest kod dla zadania powershell.

gci -rec -Filter *AssemblyInfo* | ForEach { (Get-Content $_.FullName) | ForEach-Object {$_ -replace "1.0.0.0",$env:VERSION } | Set-Content $_.FullName} 
Powiązane problemy