2013-03-07 14 views
7

Myślę tytuł pytanie całkiem dużo mówi wszystko, ale dla jasności, ja staram się:Korzystając z MSBuild, w jaki sposób zbudować rozwiązanie MVC4 z wiersza poleceń (stosując transformacje Web.config w procesie) i wyprowadzić do folderu?

  1. zbudować rozwiązanie VS2010 ASP.NET MVC4 z wiersza poleceń (MSBuild), określający konfigurację rozwiązania (np release)
  2. Zastosuj wszelkie transformacje web.config dla tej konfiguracji w trakcie procesu
  3. wyjściowe wyniki do folderu na komputerze lokalnym (nie IIS, agentów, pliki zip, FTP, pakiety itp, tylko folder zawierający wszystkie pliki wymagane do uruchomienia tej strony)

Próbuję to rozgryźć przez prawie tydzień teraz, przez dokumenty Microsoft (które są wyjątkowo pomocne), inne odpowiedzi na temat SO i ogólne Googling. Nie wiem, czy po prostu go nie dostaję (co jest całkowicie możliwe), czy też MSBuild/MSDeploy naprawdę jest tajemniczym bałaganem, który obecnie wydaje się być.

Czy istnieje dość prosty sposób, aby to osiągnąć? Prosimy o pomoc!

+0

Dokumenty Microsoft to przesada przez większość czasu. Czytałem dla msbuild, msdeploy, iis. Moje dotychczasowe doświadczenia są jak pies goniący za ogonem. – OK999

Odpowiedz

28

Jeśli używasz VS2010: upewnić się, że zainstalowano Azure SDK 1.7+ (nawet jeśli nie jesteś publikowania Azure, dodaje funkcje wydawnicze VS2012 do VS2010)

VS2012 + mają te biorące wybudowany w

msbuild ProjectFile.csproj /p:Configuration=Release^
          /p:Platform=AnyCPU^
          /t:WebPublish^
          /p:WebPublishMethod=FileSystem^
          /p:DeleteExistingFiles=True^
          /p:publishUrl=c:\output 

Lub jeśli budujemy plik rozwiązanie:

msbuild Solution.sln /p:Configuration=Release^
        /p:DeployOnBuild=True^
        /p:DeployDefaultTarget=WebPublish^
        /p:WebPublishMethod=FileSystem^
        /p:DeleteExistingFiles=True^
        /p:publishUrl=c:\output 

Tak czy inaczej, można również ustawić /p:PrecompileBeforePublish=true a wyjście będzie prec skompilowana wersja strony.

Po zainstalowaniu pakietu Azure SDK zwykle tworzysz profil publikowania i po prostu używasz /p:PublishProfile=DeployToFolder, ale dałem ci ręczną linię poleceń, na wypadek gdybyś nie chciał zagrać za wszystko z nowymi materiałami wydawniczymi.

+4

To jest _fantastic_ Richard, wielkie dzięki! Walczyłem z tym zbyt długo. Zmieniliśmy nieco odpowiedź, aby uwzględnić opcję konfiguracji, która była częścią mojego pytania, ale nie została uwzględniona w tytule z powodu braku miejsca; Przetestowałem obie metody po edycji i wszystko działa idealnie. –

+2

Nawiasem mówiąc, _did_ mam zainstalowany zestaw Azure SDK, ale aby poprawnie zintegrować go z VS2010, najpierw zainstalowałem pakiet 'Windows Azure SDK dla .NET (VS2010 SP1) 1.8.1 - Luty 2013' za pomocą instalatora platformy internetowej . –

+0

Cieszę się, że pomogłem, i dobry punkt o wersji 2010 SDK –