Jak uzyskać wersję ClickOnce Publish, aby pasowała do AssemblyInfo.Wersja pliku cs?

Za każdym razem, gdy publikuję aplikację w ClickOnce dostaję możliwość aktualizacji numeru wersji o jeden. Czy istnieje sposób, aby uzyskać tę zmianę automatycznie, aby zmienić numer wersji w AssemblyInfo.plik cs (wszystkie nasze raporty o błędach dotyczą wersji Assembly)?

Author: Peter Mortensen, 2008-09-04

4 answers

Używamy Team Foundation Server Team Build i dodaliśmy blok do TFSBuild.proj ' s AfterCompile target, aby uruchomić publikację kliknięcia z naszym preferowanym numerem wersji:

<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
         Properties="PublishDir=$(OutDir)\myProjectPublish\;
                     ApplicationVersion=$(PublishApplicationVersion);
                     Configuration=$(Configuration);Platform=$(Platform)"
         Targets="Publish" />

Zmienna PublishApplicationVersionjest generowana przez niestandardowe zadanie MSBuild, aby użyć numeru zestawu zmian TFS, ale możesz użyć własnego niestandardowego zadanialub istniejącego rozwiązania , aby uzyskać numer wersji z pliku AssemblyInfo.

Teoretycznie można to zrobić w pliku projektu (który jest po prostu skrypt MSBuild i tak), ale polecam przed wdrożeniem z maszyny deweloperskiej.

Jestem pewien, że inne rozwiązaniacontinuous integration (CI) poradzą sobie z tym podobnie.


Edit: przepraszam, mam pytanie od tyłu. Przejście z numeru wersji ClickOnce do pliku AssemblyInfo powinno być wykonalne. Jestem pewien, że zadania społeczności MSBuild (link powyżej) mają zadanie do aktualizacji pliku AssemblyInfo, więc potrzebujesz tylko niestandardowego zadania, aby pobrać numer wersji z pliku konfiguracyjnego ClickOnce XML.

Możesz jednak również rozważyć zmianę raportowania błędów, aby uwzględnić wersję publikowania ClickOnce:

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
                                                        CurrentDeployment.CurrentVersion);
}
 30
Author: Jason Stangroome,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 15:46:33

Zaimplementowałem to ostatnio przy użyciu niektórych niestandardowych zadań. Problem, który znalazłem przy implementacji tego z ClickOnce jest to, że wszystkie pliki DLL są aktualizowane. Powoduje to, że aktualizacja ClickOnce pobiera wszystkie pliki aplikacji przy każdej aktualizacji. To omija jedną z ciekawych funkcji wdrożenia ClickOnce, gdzie tylko zmodyfikowane pliki są ponownie pobierane w aktualizacji.

Po prostu coś do przemyślenia przy implementacji czegoś takiego z ClickOnce.

 4
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-22 11:11:32

Kroki:

  1. Użyj zewnętrznego numeru wersji (jeśli korzystasz z serwera ciągłej integracji, takiego jak CruiseControl.NET, następnie pochodzi z etykiety build).
  2. Użyj GlobalVersionInfo.cs (file link-odwołuje się do wszystkich projektów w Twoim rozwiązaniu), aby utrzymać bieżącą wersję i zaktualizować ją w build za pomocą zadania AssemblyInfo z zadań MSBuild Community.
  3. Script Mage narzędzie wiersza poleceń z. NET SDK do aktualizacji kliknięcia manifestu, używając tej samej wersji (patrz przełączniki -v i -mv).

BTW, miłą zaletą jest to, że za każdym razem, gdy automatycznie publikujesz nowszą wersję ClickOnce deployment poprzez skrypt integracyjny, jeśli podasz również minimalną wersję do maga.exe (tak samo jak wersja), wtedy każdy użytkownik zostanie zaktualizowany automatycznie przy następnym uruchomieniu aplikacji.

 2
Author: Rinat Abdullin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-22 11:10:48

Prawdopodobnie będziesz musiał utworzyć fragment kodu, który aktualizuje AssemblyInfo.cs zgodnie z numerem wersji zapisanym w .plik csproj. (Wersja ClickOnce deploy jest przechowywana wewnątrz znacznika XML.)

Wtedy zmienisz swoje .plik csproj do uruchomienia tego bitu kodu podczas Publish|Release build jest wykonywana. Ludzie z MSBuild pisali na blogu o tym, jak wykonywać niestandardowe akcje podczas określonych typów budowania; sprawdź blog MSBuild team.

 0
Author: Judah Himango,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-04 19:41:18