Jak użyć wiersza poleceń msbuild do wdrożenia projektu strony internetowej VS2012 bez prekompilowania go?

Odziedziczyłem bardzo duży projekt strony internetowej VS2012 (Nie aplikacji internetowej) i próbuję zautomatyzować jego wdrożenie. Istnieje mnóstwo okrągłych odniesień w projekcie, więc aby uzyskać go do precompile za pomocą aspnet_compiler.exe muszę włączyć fixednames. Problem z tym powoduje, że budowa trwa około 20 minut na moim Quad core, 16GB ram, SSD developer machine. Poprzedni programista nie musiał sobie z tym radzić, bo po prostu skopiowałby całe źródło do sieci produkcyjnej serwer.

Więc zanim zajmę się problemem odniesień okrągłych chcę przynajmniej automatycznie wdrożyć projekt przy użyciu msdeploy. Mogę korzystać z profili publikowania w visual studio i robi dokładnie to, co chcę:

  1. buduje odwołane biblioteki DLL i dodaje je do projektu.
  2. robi sieć.Config transformuje.
  3. nawet nie próbuje zbudować strony internetowej, ale po prostu pakuje do pliku zip Dla mnie.

To, czego nie mogę wymyślić na całe życie, to jak zdobyć MSBuild.exe zrobić dokładnie to samo!

MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy

Powyższe polecenie nadal próbuje wykonać aspnet_compiler, co nie jest tym, czego chcę. Profil publish mówi, że nie powinien być prekompilowany... ale w dziennikach widzę, że go wykonuje.

Więc: jak mogę użyć msbuild do wdrożenia projektu strony internetowej bez prekompilowania go?

Author: mlhDev, 2013-02-11

2 answers

W przypadku projektu strony internetowej proces publikowania nie jest osadzony w procesie budowania. W przypadku projektu strony internetowej ponieważ nie ma formalnego procesu budowania, nie było dla nas nic do rozszerzenia.

Uwaga: poniższa zawartość wymaga użycia pakietu VS 2012 (lub VS2010) i zestawu SDK usługi Azure . Funkcje nie zostały uwzględnione w spadku RTM VS2012.

Po utworzeniu profilu publish w VS tworzone są:

  1. a publish profil (.plik pubxml) pod App_Data / Publisprofiles
  2. a website.publishproj w katalogu głównym strony

Celem {[1] } jest ułatwienie publikowania wiersza poleceń. Jest to wypełnienie .csproj/.vbproj, które normalnie można uzyskać podczas korzystania z projektu aplikacji internetowej.

Jeśli chcesz zautomatyzować publikowanie, możesz użyć następującego polecenia:

msbuild.exe website.publishproj /p:DeployOnBuild=true 
   /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0

Nie należy określać, które cele są wywoływane.

Odnośnie komunikatu w VS, że strona jest wstępnie skompilowane, to jest błąd. Działa poprzez pre-kompilację, ale publish używa Ustawienia W profilu. Ten błąd powinien być naprawiony w Visual Studio Update 1 . Po zainstalowaniu nie powinieneś widzieć niepotrzebnego etapu wstępnej kompilacji. Proszę dać mi znać, jeśli nadal to widzisz.

 52
Author: Sayed Ibrahim Hashimi,
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-05-14 12:28:26

Podczas gdy odpowiedź Sayeda Ibrahima Hashimi nieco mi pomogła, oto, co uznałem za niezbędne dla VS2012:

Po zainstalowaniu zestawu Azure SDK utworzyłem profil publikowania pliku, który utworzył folder PublishProfiles w folderze Properties mojego projektu. W tym nowym folderze powstały dwa pliki xml o nazwach my_sample_PublishProfile_Foo.pubxml i my_sample_PublishProfile_Foo.pubxml.user.

Za pomocą .pubxml, jestem w stanie opublikować z msbuild Tak:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\...\UI.csproj" /p:DeployOnBuild=true /p:PublishProfile="C:\...\PublishProfiles\my_sample_PublishProfile_Foo.pubxml"  /p:VisualStudioVersion=11.0

Pamiętaj, aby uruchomić plik wsadowy zawierający ten skrypt z Uprawnienia administratora.

 1
Author: callisto,
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-07-09 14:31:35