2010-02-14 14 views
19

Chcę móc automatycznie publikować w folderze lokalnym za każdym razem, gdy budowany jest projekt web asp.net mvc 2.Jak automatycznie opublikować witrynę internetową w programie Visual Studio 2008?

Używam Visual Studio 2008.

+0

Zgadzam się z @Luhmann - dlaczego chcesz to zrobić? – PatrickSteele

+0

Zgadzam się również z @Luhmann.:) Nie tylko to, ale prawdopodobnie będziesz publikować w trybie debugowania, który nie byłby dobry do testowania/wydania. –

+2

Może to być na serwerze kompilacji, na którym jest używane narzędzie Visual Studio. Chociaż nie jest idealny, miałoby sens, dopóki ich kompilacja nie zostanie zautomatyzowana. – Jaxidian

Odpowiedz

5

Najprostszym sposobem zautomatyzowania funkcjonalności zawartej w akcji "publikowania" programu Visual Studio dostępnej z menu Build jest użycie web deployment project. Jest też jeden dla VS2005. Zasadniczo jest to dodatkowy projekt, który dodajesz do rozwiązania, które będzie kierować twój projekt internetowy, a gdy zostanie zbudowany, opublikuje twój projekt internetowy w ramach procesu budowania. Ułatwia to automatyczne budowanie strony w ramach budowy bez muckingu przy pomocy MSBuild (choć MSBuild nie jest tak trudny).

+10

Chociaż było to całkowicie poprawne po napisaniu, projekty Web Deployment nie są już dostępne dla Visual Studio 2012 i po –

13

Cóż można zrobić to with MSBuild w przypadku post-build.

Ale czy na pewno chcesz to zrobić? Spowoduje to spowolnienie i prawdopodobnie nie musisz publikować dla każdej kompilacji? Dlaczego nie po prostu uruchomić witrynę w IIS zamiast Cassini.

0

Opcja 1: Przejście z tempomatu do JetBrains TeamCity (nie pożałujesz!). W TeamCity dostępna jest opcja Artefakty, która ...

"Artefakty to pliki tworzone przez kompilację." Po zakończeniu kompilacji TeamCity wyszukuje artefakty w katalogu kasowym kompilacji zgodnie z określonymi wzorami artefaktów. serwer, skąd będą dostępne do pobrania. "

Opcja 2: Utwórz zadanie w tempomatie, aby wykonać XCOPY po zakończeniu kompilacji.

<tasks> 
    <msbuild> 
     ... here's your main build ... 
    </msbuild> 

    <exec> 
    ... define your XCOPY or other executable task here ... 
    <buildTimeoutSeconds>900</buildTimeoutSeconds> 
    </exec> 

Wariant 3: Tworzenie projektu po kompilacji w rozwiązania i mają zadanie to, aby skopiować pliki na, dodać warunek na to zadanie, które tylko spust, gdy działa na cruise control (różne zmienne środowiskowe włącz to).

2

Oto jak to zrobić w moim projekcie strony internetowej. Zauważ, że spowoduje to skopiowanie do folderu; jeśli chcesz publikować za pośrednictwem FTB, WebDav lub SSH, musisz użyć zadania Exec zamiast zadania Copy i określić narzędzie wiersza polecenia, które może wdrożyć pliki w pożądanym protokole.

Nie można również edytować zadania AfterBuild w ustawieniach projektu w IDS VS. Musisz otworzyć go w Notatniku lub ulubionym edytorze tekstu/XML. (Możesz nawet użyć VS, jeśli zamkniesz rozwiązanie i wymusisz je, aby otworzyć plik za pomocą edytora XML :-))

Istnieje również cel kompilacji, który wywołuje AspNetCompiler, który mam obecnie wyłączony, ale ty można łatwo włączyć za pomocą wartości właściwości MvcBuildViews.

<PropertyGroup> 
    <MvcBuildViews>false</MvcBuildViews> 
    <DropPath>..\..\drop\</DropPath> 
    </PropertyGroup> 
    <Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" /> 
    </Target> 
    <Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler"> 
    <ConvertToAbsolutePath Paths="$(DropPath)"> 
     <Output TaskParameter="AbsolutePaths" ItemName="FullDropPath" /> 
    </ConvertToAbsolutePath> 
    <Message Importance="High" Text="Binplacing -&gt; @(FullDropPath)" /> 
    <ItemGroup> 
     <Binaries Include="$(OutputPath)**\*.*" /> 
    </ItemGroup> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Compile)" DestinationFiles="@(Compile->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Content)" DestinationFiles="@(Content->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(EntityDeploy)" DestinationFiles="@(EntityDeploy->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Binaries)" DestinationFiles="@(Binaries->'$(DropPath)%(Identity)')" /> 
    </Target> 
+1

BTW można łatwo edytować projekt XML w Visual Studio, wystarczy kliknąć prawym przyciskiem myszy projekt, usunąć go, a następnie kliknąć prawym przyciskiem myszy Edytuj to. Załaduj ponownie, gdy skończysz. –

5

Krok 1. Upewnij się, że masz projekt internetowy.

Krok 2. Przejdź do Widok-> Paski narzędzi-> Opublikuj publikację jednym kliknięciem.

Przycisk web przycisku publikowania na pasku narzędzi zrobi to, co chcesz ... zbuduj i opublikuj w jednym kroku.

+0

Doskonale! Od dawna chcę wiedzieć, jak to zrobić! Pozwala to zaoszczędzić około stu kliknięć tygodniowo !! :) –

Powiązane problemy