Powtórz VS2008 "Publish Web Site" z wiersza poleceń

Próbuję odtworzyć dokładną funkcjonalność tego dialogu w Visual Studio 2008 w skrypcie build: alt text http://i41.tinypic.com/1osl1f.png

To jest ASP.NET web site , a nie web application .

Wygooglowałem to i znalazłem sporo rzeczy związanych z MSBuild, ale to wszystko wydaje się dotyczyć rozwiązań ułożonych jako ASP.NET www Zastosowania:

Http://www.driebier.net/post/Using-MSBuild-to-deploy-visual-studio-2005-web-applications.aspx http://blog.donnfelker.com/post/TFS-Build-Not-Publishing-Web-Applications.aspx

Ten artykuł wydaje się być istotny dla ASP.NET strony internetowe, ale okazuje się, że dostaję błąd podczas próby budowania za pomocą tych sugestii:

C:\dev\T&A>msbuild /t:_CopyWebApplication /property:OutDir=c:\temp\taweb\ /prope
rty:WebProjectOutputDir=c:\temp\taweb\

Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3074]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 22/04/2009 11:50:42.
Project "C:\dev\T&A\TAWeb.sln" on node 0 (_CopyWebApplication target(s)).
  Building solution configuration "Debug|.NET".
C:\dev\T&A\TAWeb.sln : error MSB4057: The target "_CopyWebApplication" does not
 exist in the project.
Done Building Project "C:\dev\T&A\TAWeb.sln" (_CopyWebApplication target(s)) --
 FAILED.


Build FAILED.

"C:\dev\T&A\TAWeb.sln" (_CopyWebApplication target) (1) ->
  C:\dev\T&A\TAWeb.sln : error MSB4057: The target "_CopyWebApplication" does n
ot exist in the project.

0 Warning(s)

1 Error(s)

Time Elapsed 00:00:00.06

Rozwiązanie, które próbuję opublikować (odziedziczone, Nie własne), nie ma .pliki csproj (gdzie I można zaimportować obiekt docelowy _CopyWebApplication z C:\Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0\Webaplications \ Microsoft.Webaplikacja.targets)

Może to jest różnica Visual Studio 2005/2008?

W każdym razie, czuję, że podążam złą ścieżką.

Zasadniczo muszę tylko osiągnąć dokładnie to, co robi powyższy dialog, ale z linii poleceń.

Dziękuję bardzo

Author: Cerebrus, 2009-04-22

11 answers

Poniższe polecenie duplikuje okno dialogowe Publish Web Site z ustawieniami domyślnymi.

Polecenie do publikowania strony www z ustawieniami domyślnymi

aspnet_compiler -nologo -v / -p "C:\WebSite1" -u "C:\TargetPath"

Odniesienie

1) Zobacz Zawartość społeczności zatytułowaną chcesz opublikować stronę, ale nie masz wtedy Visual Studio... at http://msdn.microsoft.com/en-us/library/20yh9f1b (classic). aspx .

  • Microsoft Visual Studio 2005 > Wiersz Poleceń Visual Studio 2005
  • Microsoft Visual Studio 2008 > Wiersz Poleceń Visual Studio 2008
  • Microsoft. NET Framework SDK v2. 0 > wiersz polecenia SDK

2) zobacz "ASP.NET narzędzie kompilacji (Aspnet_compiler.exe) " at http://msdn.microsoft.com/en-us/library/ms229863.aspx .

3) następujący fragment z Walkthrough: ASP.NET aplikacja internetowa wykorzystująca XCOPY at http://msdn.microsoft.com/en-us/library/f735abw9.aspx

Jako alternatywa dla korzystania z XCOPY narzędzie wiersza poleceń, które jest obsługiwane przez wszystkie wersje. NET Framework, możesz korzystać z nowego. NET Framework 2.0 narzędzie znajdujące się na %SystemRoot % \Microsoft.NET\Framework\version 2 lub Nowszy \ Aspnet_compiler.exe to Kompiluj i wdrażaj swoją sieć podanie. Aby uzyskać więcej informacji, zobacz ASP.NET narzędzie kompilacji (Aspnet_compiler.exe) .

4) następujący fragment z Jak: Precompile ASP.NET strony internetowe dla Rozmieszczenia w http://msdn.microsoft.com/en-us/library/ms227976.aspx .

Jeśli Twoja strona internetowa nie jest Internetem Zastosowanie usług informacyjnych (IIS) i dlatego nie ma wpisu do IIS metabase, zastosowano następującą wartość dla przełącznik-V.

aspnet_compiler -p physicalOrRelativePath -v / targetPath

W tym przypadku, parametr physicalOrRelativePath odnosi się do w pełni wykwalifikowanych ścieżka katalogowa, w której witryna www pliki znajdują się, lub ścieżka względna do prądu katalog. Okres (.) operator jest dozwolony w parametr physicalOrRelativePath. Na -V Switch określa korzeń, którego kompilator użyje do rozwiązania application-root references (for przykład, z operatorem tyldy ( ~ )). Gdy podasz wartość / dla przełącznik-v kompilator będzie rozwiązywanie ścieżek za pomocą fizycznego ścieżka jako korzeń.

 38
Author: AMissico,
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
2009-10-29 01:43:55

Myślę, że szukasz AspNetCompiler zadania

<Target Name="PublishToIIS" DependsOnTargets="Publish">
    <AspNetCompiler    
            VirtualPath="$(IISVirtualPath)"
            TargetPath="$(IISTargetPath)"
            PhysicalPath="$(MSBuildProjectDirectory)/trunk/InternalAppCS/Web.UI/"
            Force="true"
            Debug="$(IISDebug)"
     />

</Target>
 6
Author: slf,
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
2009-04-22 11:35:13

Ta "magiczna" kombinacja robi to, czego szukasz. ) Zajęło tylko dwa dni, aby uzyskać właściwą kombinację dla mojego projektu.) Kluczem jest włączenie celu _CopyWebApplication i celu ResolveReferences.

msbuild "/t:_CopyWebApplication;ResolveReferences;publish" /p:OutDir="C:\inetpub\wwwroot\[appname]\bin\" /p:WebProjectOutputDir="C:\inetpub\wwwroot\[appname]" c:\directory\[appname].csproj    
 6
Author: Brad Bruce,
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 00:56:58

Dodaj do swojego .plik csproj:

<Target Name="AfterBuild">
<Message Text="Copying to Deployment Dir:" />
<Copy SourceFiles="@(Content)" DestinationFolder="..\PreCompiledWeb\%(Content.RelativeDir)" />
<CreateItem Include="$(OutputPath)\*">
    <Output TaskParameter="Include" ItemName="Binaries"/>
</CreateItem>
<Copy SourceFiles="@(Binaries)" DestinationFolder="..\PreCompiledWeb\bin" />

Zmień "..\PreCompiledWeb " dla folderu, w którym chcesz opublikować lub możesz podać zmienną w rodzaju: $(OutputFolder), którą możesz przekazać

Następnie przejdź do folderu aplikacji i wykonaj:

msbuild /t:Build

Następnie możesz skopiować te pliki gdziekolwiek chcesz używając xcopy:

xcopy "..\PreCompiledWeb\*.*" "C:\MySite\" /e
To powinno wystarczyć.
 5
Author: ,
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
2009-09-10 21:47:00

Osobiście używam buildbota, który uruchamia komendy dla mnie, musiałem stworzyć skrypt VBS, który wykonuje upload dla mnie.

Zainstalowałem WinSCP aby wykonać pracę ftp i po prostu skrypt uploadu:

Set WshShell = CreateObject("WScript.Shell")
sCmd1 = """C:\Program Files\WinSCP\winscp.com"" <myusername> /command ""option batch on"" ""option confirm off"" ""put " & DefaultPath & strResult & "\" & DefaultFileName & " /Usr/<myuser>/" & updateType & "/" & strResult & "/"" ""exit"""

Aby wstępnie skompilować stronę z linii poleceń wykonuję następujące czynności, jednak robię to na serwerze WWW, a nie przed załadowaniem:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -p "D:\<mycompany>\Backedup\Web Sites\<mysite\Root" -v /
 4
Author: Phil Hannent,
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
2009-04-23 11:23:18

Używam msbuild dokładnie do tego, co opisujesz. Próbowałeś ustawić nieruchomość w ten sposób?

 /property:"OutDir=c:\temp\taweb\;WebProjectOutputDir=c:\temp\taweb\"

Jeśli nadal nie działa, daj mi znać i mogę wysłać ci mój plik bat, który kopnie skrypt msbuild, który robi svn get, buduje assembly.info plik, wdrożyć witrynę internetową, i wreszcie uruchamia HTTP get na stronie głównej witryny, aby upewnić się, że zbudowany i wdrożony poprawnie.

Hope it helps Rihan

 4
Author: Rihan Meij,
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
2009-04-29 11:29:32

Zmagałem się z tym samym błędem (MSB4057: cel "_copywebapplication" nie istnieje w projekcie.

Tak. Korzystałem z projektu aplikacji internetowej (nie strony internetowej). Byłem zdumiony, ponieważ miałem jeden projekt, który zadziałał, a jeden nie. Więc usiadłem z ExamDiffPro i poszedłem do pracy porównując pliki projektu. To, co znalazłem, to sekcja build target zawiera na dole plików projektu były różne.

Jeden projekt (który był working) został stworzony przy użyciu nowszej wersji Visual Studio. Drugi (który nie działał) został stworzony lata temu i był uaktualniany przez lata, do obecnej wersji, z którą pracuję. Ulepszony projekt najwyraźniej nie został zaktualizowany o nowe cele kompilacji, ponieważ nowsze wersje Visual Studio stały się dostępne.

Na dole działającego pliku projektu znalazłem:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" />

Druga linia importu nie była w projekcie, który sprawiał problemy.

Po prostu skopiowałem import z pliku roboczego i wkleiłem go we względną lokalizację w pliku niedziałającym, a następnie skopiowałem!

Chociaż nie jest to bezpośrednie rozwiązanie początkowego problemu zdefiniowanego w tym wątku, mam nadzieję, że pomoże to niektórym osobom, które natknęły się na ten wątek, szukając podobnych problemów, tylko z rzeczywistymi projektami aplikacji internetowych.

 4
Author: Todd W. Powers,
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-09-20 00:59:13

Oto mały skrypt PowerShell, który buduje rozwiązanie, a następnie publikuje projekt internetowy z niego.

MSBuild jest dla. Net 3.5, więc w razie potrzeby zmień na "\v4.0\".

$build = "$env:windir\Microsoft.NET\Framework\v3.5\MSBuild.exe"

$SolutionPath = "C:\Projects\AdminWebSite"
$SolutionFile = "AdminWebSite.sln"
$WebProjectFile = "Admin.Web\Admin.Web.csproj"
$OutputPath = "C:\PublishedSites\Hosts\adminweb"

& $build "$SolutionPath\$SolutionFile" /t:rebuild
& $build "$SolutionPath\$WebProjectFile" "/t:ResolveReferences;_CopyWebApplication;publish" /p:OutDir="$OutputPath\bin\" /p:WebProjectOutputDir="$OutputPath"

" ResolveReferences "musi być przed "_CopyWebApplication" w przeciwnym razie zależności znikną.

Przykładowe ścieżki podane tutaj budują się do:

  • C:\Project\AdminWebSite\AdminWebSite.sln
  • C:\Project\AdminWebSite\Admin.Web\Admin.Www.csproj
 3
Author: Iain Ballard,
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-04-07 13:32:27

The error you received (C:\dev\T&A\TAWeb.sln : błąd MSB4057: cel "_copywebapplication" nie istnieje w projekcie) wynika z dwóch problemów. Po pierwsze: docelowa aplikacja _copywebapplication musi być wywołana w pliku projektu WebApplication, a nie w rozwiązaniu. Po drugie: strona internetowa nie ma pliku projektu, aplikacje internetowe mają pliki projektu.

Cel _CopyWebApplication dotyczy tylko publikacji projektu WebApplication. Użyj zadania AspNetCompiler MSBuild, aby opublikować stronę internetową.

Kiedy publikujesz stronę internetową w visual studio 2008, druga linia wyjścia to "Pre-compiling Web Site". Opcje visual studio wyświetla dla publikacji mapy strony internetowej bezpośrednio do opcji dla AspNetCompileri Aspnet_compiler.exe .

Chociaż nie jestem tu pierwszy, aby powiedzieć "użyj AspNet_compiler", pomyślałem, opisując powody, dla których może być pomocne. Na marginesie, myślę, że AspNet_compiler może być używany do publikowania webapp, ale muszę zrobić jeszcze trochę testów.

 2
Author: mcdon,
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
2010-10-27 17:26:10

Używam pliku bat używając msbuild.exe (. NET 3.5, vs 2008) do "publikowania" mojej strony (vbproj) w folderze.

%msBuildDir % \msbuild "D:\Project1\Client\WebPresentation\ConsultaOperaciones.vbproj" / t: resolver; Rebuild /p:BuildingProject=true;OutDir=D:\Instalaciones\ultima\PublicacionWeb\OutDir\;WebProjectOutputDir=D:\Instalaciones\ultima\PublicacionWeb\WebProjectDir\

 1
Author: Kiquenet,
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-07-20 18:16:55

Nie ma nic magicznego w "publikacji..."funkcja, której nie można odtworzyć samodzielnie, zwłaszcza, że kierujesz na udział plików sieciowych.

W jego rdzeniu, wszystko co robi, to kopiowanie plików z jednego miejsca do drugiego. Używając NAnt, możesz to wykonać za pomocą zadania copy lub możesz użyć zadania exec do wywołania xcopy Jeśli używasz narzędzia do budowania innego niż NAnt, jestem pewien, że istnieje wsparcie dla podobnych zadań.

If you want to leave Twój surowy kod i debugowanie informacji za, można wykluczyć pliki, które kończą się .cs or .pdb. Zarówno nant copy, jak i xcopy zapewniają łatwe sposoby na to.

 -1
Author: Brad Tutterow,
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
2009-04-22 11:27:12