MSBuild DeployOnBuild = true,

Mam aplikację webową Visual Studio 2010 MVC2, którą buduję za pomocą wiersza poleceń przy użyciu Hudsona. Chciałbym, aby Hudson opublikował wyjście internetowe, więc dodałem Tagi DeployOnBuild=true i CreatePackageOnPublish=True do mojej linii poleceń.

Moje polecenie to:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
   /target:Clean,Build 
   /property:Configuration=Debug;DeployOnBuild=True;CreatePackageOnPublish=True; 
   [my project name.csproj]

Uruchomienie tego polecenia na moim komputerze programistycznym (Windows 7) pomyślnie publikuje wyjście WWW do \obj\Debug\Package\PackageTmp\. Ale uruchomienie go na serwerze Hudson (ws 2008) kompiluje się pomyślnie, ale nie publikuje. To samo polecenie, ta sama wersja MSBuild, ten sam kod źródłowy.

Próbowałem /t:Publish target, co daje mi pomijanie niepublikowanych odpowiedzi projektu, jak widziałem na postach kilku innych osób.

Próbowałem dodać tagi DeployOnBuild=True i CreatePackageOnPublish=True do mojego pliku projektu, ale bez zmian.

Jakieś pomysły, dlaczego to nie jest publikowanie? Czy używam tych tagów nieprawidłowo? Jestem pewna, że jest tu coś, czego po prostu nie widzę.

Author: SteveC, 2011-02-11

4 answers

Zakładając, że nie masz zainstalowanego Visual Studio 2010 na swoim serwerze hudson, może się okazać, że brakuje Ci pliku "targets". Po wielu bzykaniach, w końcu to rozwiązałem.

Od dłuższego czasu wiedziałem, że muszę skopiować katalog

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications

Z mojej lokalnej maszyny z VS2010 na mój serwer w celu uzyskania projektu do Zbuduj . Ale aby projekt również opublikować musiałem również skopiować katalog

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web

Uwaga: w moim przypadku faktycznie zobowiązuję te foldery do mojej kontroli źródłowej i zmieniam wartość <MSBuildExtensionsPath32> w moim pliku csproj, aby wskazać te sprawdzone foldery (więc jest jeden krok mniej przy przygotowywaniu serwera). Nie jest to konieczne, aby go uruchomić, ale warto to rozważyć po rozwiązaniu problemu.

UPDATE: więc po wykonaniu powyższego, build skarżył się, że nie może znaleźć " Microsoft.Www.Rozlokowanie.dll". Aby to rozwiązać, musiałem zainstalować Microsoft Web Deploy v2.0 na serwerze , mimo że publikuję tylko w systemie plików. Widzę w tym logikę.

Aktualizacja: odkryłem, że instalacja " Visual Studio 2010 Shell (Integrated)" za pośrednictwem Instalatora platformy internetowej IIS zainstaluje wymaganą kompilację cele. Wydaje się to miłym kompromisem między Nie zainstalowaniem całej aplikacji Visual Studio na serwerze, a nie ręcznym kopiowaniem pozornie dowolnych folderów na serwer z maszyny deweloperskiej.

 40
Author: Brian Hinchey,
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
2012-07-16 06:00:46

Wydaje się, że Warunki uruchomienia celu publikacji nie są spełnione.

1) możesz mieć różne ścieżki publikacji

2) warunkiem uruchomienia publish target jest false

Aby zweryfikować oba wywołanie komendy z flagą /v:diag. Wyszukaj według docelowego "Publikuj" i spróbuj dowiedzieć się, co naprawdę się dzieje. Będzie to wyglądać

Target "ExecuteT4Templates: (TargetId:144)" in file "D:\App\App.csproj" from project "D:\App\App.csproj":
Skipping target "ExecuteT4Templates" because all output files are up-to-date with respect to the input files.
Input files: D:\App\App.exe\\App_Config\Configuration.tt;D:\App\App.exe\\App_Config\Debug.App.tt;obj\\Debug.t4lastbuild
Output files: D:\App\App.exe\\App.config
Done building target "ExecuteT4Templates" in project "App.csproj".: (TargetId:144)
 3
Author: Sergio Rykov,
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
2011-02-11 12:14:12

Uruchamiało się z VS2012 -- skończyło się instalowaniem narzędzi dla programistów na serwerze kompilacji i to naprawiło.

 1
Author: bryanjonker,
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
2012-08-23 14:09:21

Kontynuując odpowiedź Briana Hinchey ' a, odkryłem, że muszę również dołączyć moje wywołanie wsadowe msbuild z dodatkowym parametrem VisualStudioVersion, aby prawidłowa wersja i ścieżka w agencie kompilacji (w moim przypadku TeamCity) do Microsoft.Webaplikacja./ align = "left" / Bez tego parametru krok Web deploy i publish nie został ukończony, a moja partia zakończona pomyślnie z kodem 0 powróciła, co bardzo utrudnia analizę - nawet z dołączoną flagą / verbosity "Debuguj" kompilację. Ten punkt jest przez SAYED IBRAHIM HASHIMI na swojej stronie: http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx

Scenariusz w moim przypadku był taki, że miałem włączoną kompatybilność Visual Studio w moim projekcie MVC web, dzięki czemu mogłem otworzyć projekt w VS2010 lub 2012 (Jak Sayed zauważa w powyższym linku) - więc jestem dev'ing lokalnie w VS2012, podczas gdy TeamCity build agent ma VS 2010 web build i wdrożyć cele.

 1
Author: Steve O,
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
2013-02-20 14:28:54