2010-04-09 13 views
66

Chcę spakować mój projekt aplikacji WWW VS2010 gotowy do wdrożenia za pomocą msdeploy. Na komputerze deweloperskim mogę to zrobić za pomocą:Nie znaleziono pakietu docelowego MSBuild

MSBuild.exe "C:\path\to\WebApp.csproj" /target:package 

Ale na moim serwerze kompilacji otrzymuję ten błąd:

error MSB4057: The target "package" does not exist in the project.

Czego mi brakuje na serwerze kompilacji?

Odpowiedz

107

Właśnie dostałem tej pracy bez konieczności instalowania VS2010, wykonując następujące kroki na serwerze produkcji:

  1. Jeśli .NET Framework 4 nie jest zainstalowany, należy go zainstalować
  2. Zainstaluj narzędzie Web Deployment z http://www.iis.net/download/webdeploy
  3. Z folderu C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 na komputerze programisty skopiuj foldery "Sieć" i "Aplikacje internetowe" do odpowiedniego katalogu na serwerze kompilacji.

To wydaje się działać dla mnie

+3

Upewnij się także, że używasz MSBuild.exe w wersji .net 4! (w% windows% \ Microsoft.net \ Framework \ v4.0.30319) – AndyM

+7

W moim przypadku problem polegał na tym, że skopiowałem plik w folderze "Aplikacje internetowe", ale nie w folderze "Sieć". – willem

+0

Ta odpowiedź usunęła ten błąd. Dzięki spmason! – Stewie

1

Musisz mieć .Net 4.0 zainstalowany na serwerze kompilacji. Instalacja .Net 4.0 wprowadzi nowy MSBuild 4.0, który obsługuje projekty aplikacji internetowych do pakowania.

Ponadto, jeśli używasz msbuild.exe, upewnij się, że używasz tego, który znajduje się w folderze .Net 4.0.

-3

Aby rozwiązać ten problem, zainstaluj Visual Studio 2010 na serwerze kompilacji i upewnij się, że zainstalowano funkcję Visual Web Developer.

+5

Nie jest konieczne instalowanie programu Visual Studio na serwerze kompilacji. Proces budowania/wdrażania zależy tylko od garści plików (patrz post spmasona). –

+2

Bardzo się staram, żeby tego nie robić ... –

+0

To jest przesada – Matt

9

Wiem, że to stare pytanie, ale niedawno wpadł na ten sam problem i żadna z odpowiedzi nie pomogło. Mi brakuje następującego pliku na moim serwerze produkcji:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio 
    \v11.0\Web\Microsoft.Web.Publishing.targets 

Jest importowanego przez:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio 
    \v11.0\WebApplications\Microsoft.WebApplication.targets 

nadzieję, że to pomoże ktoś taki jak ja :)

+2

pracował dla mnie ... Skopiowałem folder docelowy dla stron internetowych, ale nie do folderu sieciowego ... Kompilacja by się powiodła, ale po prostu nie zostałaby wdrożona – jdmonty

+0

To było problem dla mnie za pomocą Visual Studio Build Tools 2017. Nie wybrałem "Obciążenia programu do tworzenia aplikacji internetowych", więc cel publikowania w sieci nie został zainstalowany. Modyfikowanie instalacji w celu uwzględnienia tej poprawki. –

-1

również rozważyć użycie msbuild z wersji odpowiadającej Wersja narzędzia Web Deployment. Mam do czynienia z tym samym problemem co OP. Rozwiązaniem było zmienić msbuild z 4.5 na 4.0 na buildServer.

0

Doświadczyłem tego samego problemu. Zakończono rozwiązywanie przez dodanie:

<PropertyGroup> 
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
</PropertyGroup> 

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 

do mojego pliku .csproj.