2009-09-05 23 views
5

Chcę, aby cel w moim skrypcie MSBuild że:Aktualizacja informacji w wersji z MSBuild (po plików binarnych kompilacji)

  • Fetch SVN rewizji/datetime z katalogu źródeł („svn informacji” poleceń)
  • aktualizacji Zasób VERSIONINFO z .EXEs i .DLLs wygenerowany przez cel "kompilacji"

Czy jest coś, co można osiągnąć? Pytam tylko przed narastającymi innym kole ...

Daję spojrzeć na http://msbuildextensionpack.codeplex.com

+0

+1 za miłe pytanie, byłbym zainteresowany zrobieniem tego sam. – 7wp

+0

Ja też! - Ale nasze (niezdarne) wewnętrzne rozwiązanie działa dobrze. Więc ... :) –

Odpowiedz

5

MSBuild Community Tasks Project jest twoim przyjacielem. Sprawdź ich zadanie "SvnInfo".

Również Daniel Doubrovkine na ResourceLib to doskonałe dzieło i można uniknąć Ci dużo bóle głowy, próbując rozwikłać tworzeniem bałagan versionInfo (tam, zrobić, że ...)

+0

Dziękuję bardzo! –

+0

Należy pamiętać, że ResourceLib został przeniesiony do Github: https://github.com/dblock/resourcelib –

1

Dużo łatwiej to zrobić przed kompilacja poprzez napisanie pliku AssemblyInfo (lub dowolnego pliku z atrybutami zespołu) zawartego w projektach.

Przykład pisząc to w PowerShell znaleźć tutaj: https://github.com/craigbeck/rhino-esb/blob/master/psake_ext.ps1#L7-46

jedno zastrzeżenie - wersje w .NET są nie tylko dowolny ciąg ale ushort s, co oznacza, że ​​mają max 65535 (patrz docs here). Jeśli użyjesz wersji svn (tak jak to zrobiliśmy w jednym punkcie) twoja kompilacja zostanie przerwana, gdy przekroczy ona tę liczbę magiczną.

Po co miałbyś to robić po kompilacji?

+0

Pliki binarne są generowane z 5 różnych kompilatorów. Żadne z nich dla .NET. W każdym razie, dzięki za podpowiedź o ushortach. –

+0

OK, teraz jestem jeszcze bardziej ciekawy ... jakie języki/kompilatory? Wzmianka o bibliotekach DLL i EXE spowodowała, że ​​zakładałem, że mówiłeś o standardowym rozwoju .Net (np. C#/VB, Visual Studio itp.). Jeśli tak nie jest, dlaczego wybrałeś MSBuild? – craigb

+0

Począwszy od VS2010, natywne projekty C++ są budowane przy użyciu msbuild. Istnieją narzędzia do aktualizowania informacji o wersji zespołu, ale dla tubylców, wersja jest nadal kontrolowana przez zasoby aplikacji VERSIONINFO (zwykle w pliku .rc). – jschroedl

Powiązane problemy