Warum erhalte ich die Fehlermeldung "Das Ziel GatherAllFilesToPublish existiert nicht"?

78

Ich habe kürzlich die neuen Azure-Entwicklungstools für Visual Studio 2010 Service Pack 1 installiert. Jedes Mal, wenn ich versuche, eine vorhandene Website zu veröffentlichen (mithilfe der Dateisystembereitstellung), wird die folgende Fehlermeldung angezeigt:

Das Ziel "GatherAllFilesToPublish" ist im Projekt nicht vorhanden.

Kann mir jemand sagen, was ich vermisse?

Vielen Dank

Joe
quelle
Ich habe das gleiche Problem, ich habe die Tools deinstalliert, konnte es aber noch nicht beheben
Eduardo Campañó
Dies tritt auch beim lokalen Erstellen im Dateisystem auf. Die heiße Antwort von Sayed hat bei mir funktioniert.
Adam Zuckerman
Dies hat bei mir nicht funktioniert :( Ich verwende VS 2013.
KulNinja
Mit VS2019 hierher kommen - Problem besteht immer noch.
Christian

Antworten:

82

Ich denke, dass ich weiß, worum es geht. Wenn Sie die Azure SDK-Bits installieren, werden einige VS Web Publish-Updates installiert. Eine davon aktualisiert die Datei unter

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

Basierend darauf, wie unser Setup definiert ist, wenn diese Datei einen aktualisierten Zeitstempel hat (aus welchem ​​Grund auch immer), wird die Datei bei der Installation der neuen Komponente nicht aktualisiert.

Um dies zu beheben, sollten Sie in der Lage sein, die folgenden Schritte auszuführen:

Sagte Ibrahim Hashimi
quelle
1
Wie Sprinkle sagte, befinden sich die Dateien im Ordner v10.0, haben es aber geschafft! Vielen Dank!
Zenuka
2
Ich habe Microsoft.WebApplication.targets nicht geändert, aber das HotFix hat für mich funktioniert.
Brian
4
Hat für mich funktioniert, nachdem ich den Hotfix angewendet, Visual Studio geschlossen und erneut geöffnet habe, um wirksam zu werden.
Jeff
1
Das Unglückliche ist, dass diese Antwort die Suchergebnisse für diesen Fehler übernommen hat, obwohl sie nur für vs 2010 gilt - gibt es eine Lösung für andere Versionen von VS?
George Mauer
3
Für mich wird VS auch nach dem Schließen sagen, dass KB2591016 nicht zutrifft oder durch eine andere Bedingung auf Ihrem Computer blockiert ist
Iman
72

Ich hatte dieses Problem und es wurde behoben durch Hinzufügen von:

<Target Name="GatherAllFilesToPublish">
</Target>

in die Projektdatei.

Emanuele Ciriachi
quelle
1
Dies hat bei mir funktioniert, erstellt jedoch einen zusätzlichen Ordner namens Backup und sichert die Datei darin. Verdammt VS 2013 ist
fehlerhaft
1
Dies hat das Problem für mich in VS2013 behoben. Es wird kein zusätzlicher Sicherungsordner angezeigt, der von @PhilVallone
Alexander Puchkov erwähnt wird
6
Das habe ich versucht. Der Fehler ist verschwunden, aber auch alle CS-Dateien wurden veröffentlicht. Ich denke, das liegt daran, dass Sie nur einen Stub hinzufügen. Diese Antwort ist keine Lösung für das Grundproblem, sondern eine Problemumgehung.
Chiccodoro
2
Hat für mich gearbeitet. Stellen Sie sicher, dass das Ziel beim Hinzufügen nicht kommentiert wird.
KulNinja
2
Dies hat das Problem auch für mich behoben. Damit alle verstehen, müssen Sie zum Implementieren mit der rechten Maustaste auf das Projekt (nicht auf die Lösung) in Visual Studio klicken, "Projekt entladen" auswählen, dann erneut mit der rechten Maustaste darauf klicken und dann "<Name des Projekts> bearbeiten" auswählen Über dieses <Ziel ....> hinaus in die Datei und speichern Sie es. Schließen Sie die Datei, klicken Sie erneut mit der rechten Maustaste darauf und wählen Sie "Projekt neu laden". Testen Sie dann Ihre Veröffentlichung erneut und prüfen Sie, ob sie funktioniert
mknopf
46

Dies funktionierte für mich behoben - sammeln Sie alle Dateien, um Fehler zu veröffentlichen

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Bearbeiten (Projektname) .csproj. (zB im Notizblock bearbeiten)
  2. Suchen <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  3. Fügen Sie über der Zeile Folgendes hinzu.

    <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion>
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    </PropertyGroup>
    
  4. Projekt speichern und neu laden.

PhillyNJ
quelle
13? Ich habe keine Ahnung, warum das funktionieren würde. Ist nicht das neueste Visual Studio 2013 in Reality Version 12?
Mathias Lykkegaard Lorenzen
2
Es tat es. Ich benutze VS 2013.
PhillyNJ
1
Ich habe die Version meines VS verwendet - $ (VisualStudioVersion) sollte bereits definiert sein, daher wird diese Zeile wahrscheinlich übersprungen. Der VSToolsPath hat es wirklich für mich getan.
Matt DeKrey
3
Das hat es für mich behoben. ASP.NET MVC-Projekt in VS2013
Jaans
3
Ich bin auf diesen Fehler mit einer 100% Neuinstallation von VS2015 bei einer Neuinstallation von Windows gestoßen. Dieser Beitrag hat es für mich behoben, außer dass Sie die 13.0 in eine 14.0 ändern müssen. Vielen Dank @PhillyNJ!
Lounges
9

Das Entfernen dieser Installationen löste das Problem für mich:

  • Microsoft Web Publish - Visual Web Developer Express 2010
  • Microsoft Web Publish - Visual Studio 2010

Referenz

Eduardo Campañó
quelle
Ich habe alles andere in diesem Beitrag ausprobiert ... sehr überrascht, dass dies nicht als Antwort markiert war, hat für mich funktioniert! Danke :)
Sean Haddy
1
Ich habe keines dieser Programme mit Visual Studio 2015
Iman
9

Ich bin mit VS 2017 auf dieses Problem gestoßen und habe versucht, die csproj-Datei wie hier vorgeschlagen manuell zu ändern, und keine der vorgeschlagenen Korrekturen hat bei mir funktioniert. Ich bin auf dieses Nuget-Paket gestoßen. Die Installation hat bei mir funktioniert.

MSBuild.Microsoft.VisualStudio.Web.targets

Buddy J.
quelle
Ich danke dir sehr! Das hat bei mir funktioniert. Und ich dachte, es würde einer dieser Tage werden.
Timothy Kanski
Vielen Dank! Der obige Vorschlag, den Zielknoten zur Projektdatei hinzuzufügen, enthält viel zu viele Dateien, und ich stimme den Kommentaren zu, dass dies eine Problemumgehung und keine Lösung ist. Dies scheint nach der Installation dieses Nuget-Pakets genau wie erwartet zu veröffentlichen. Danke noch einmal!
Zpert
5

Ich hatte ein ähnliches Problem, als ich meine ASP.Net-Anwendung in Windows Azure veröffentlichen wollte. Nach vielen Versuchen und Irrtümern endlich dies funktionierte Lösung für mich. Dies erfordert keine Umbenennung von Dateien oder Installation / Neuinstallation von Hotfixes / Patches. Folgendes müssen Sie tun:

Öffnen Sie die ASP.Net-Projektdatei (.csproj) in Wordpad / Notepad und suchen Sie die folgende Zeile:

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

Ersetzen Sie es durch eine Linie wie unten angegeben:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Rashid
quelle
Bitte versuchen Sie, diese stackoverflow.com/help/deleted-answers zu lesen , um besser zu verstehen, wie man nicht antwortet. Nämlich: "Antworten, die die Frage nicht grundlegend beantworten": kaum mehr als ein Link zu einer externen Seite
Radim Köhler
1
Du hast meinen Tag gerettet! Ich habe alle anderen Antworten ausprobiert und keine hat geklappt. Es stellte sich heraus, dass in meiner csproj-Datei aus irgendeinem Grund die Zeile sogar das Attribut in der wörtlichen Form von enthielt Conditon="false". Ich musste das Projekt auch bereinigen und neu erstellen, bevor es anfing zu funktionieren.
Chiccodoro
5

Gleiches Problem mit VS2017. Sie können dies versuchen, es hat bei mir funktioniert.

  1. Entladen Sie das Projekt und bearbeiten Sie die csproj-Datei
  2. Suchen Sie das Schlüsselwort "WebApplication.targets".

     <Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
    

    KOMMENTIEREN oder ENTFERNEN Sie diese Zeile (möglicherweise zwei Zeilen, abhängig von "Bedingung").

  3. Projekt speichern und neu laden

In diesem Schritt werden Sie aufgefordert, ein Paket mit einer Größe von ca. 500 MB zu installieren.

Danach Projekt neu laden, dann funktioniert es!

Ich vermisse wohl nur einige Komponenten, wenn ich VS 2017 installiere.

Ich stelle auch fest, dass der MSBuild-Pfad in VS2017 ganz anders ist, aber vielleicht hängt das nicht mit dem Problem zusammen, da er den relativen Pfad in der csproj-Datei verwendet.

Joey
quelle
Der einfachste. Vielen Dank!
Antonín Procházka
4

Ich erkenne dies in einer alten Frage, aber ich bin kürzlich darauf gestoßen und hier ist, wie ich es gelöst habe.

Hintergrund: Ich hatte ein altes Projekt, das ich auf VS Studio 13 aktualisiert habe. Es sieht so aus, als ob die Projektdatei nicht ordnungsgemäß aktualisiert wurde.

Es gibt Verweise auf VS v10.0 in der csproj-Datei, aber ich verwende VS 13, das wirklich "v12.0" ist.

Also habe ich der csproj-Datei gesagt, dass sie den Ordner "v12.0" verwenden soll, nicht den Ordner "v10.0".

Das hatte ich:

<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Das habe ich geändert in:

<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Jetzt funktioniert meine Veröffentlichung im Dateisystem!

Vilhelm H.
quelle
3

Ich hatte ein ähnliches Problem und löste es mithilfe der von Sayed bereitgestellten Schritte.

Die Datei, die ich umbenannt habe, befand sich jedoch im Verzeichnis v10.0.

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

Die ursprüngliche Datei, die dort vorhanden war, wurde am 18. Januar 2011 datiert. Nachdem sie mit einer .bak-Erweiterung umbenannt und anschließend KB2591016 neu installiert wurde, scheint die Veröffentlichung wieder zu funktionieren. Das neue Datum der Datei Microsoft.WebApplication.targets ist jetzt der 11. August 2011.

Streuen
quelle
3

Ich habe mit dem gleichen Problem mit Visual Studio 2013 (und 2015) zu kämpfen.

Die entscheidende Lösung für mich war das Hinzufügen der VSToolsPathEigenschaftseinstellung, die aus irgendeinem Grund in meiner Projektdatei fehlte.

Ich habe dies in die <PropertyGroup>Richtlinie aufgenommen:

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

Als Randnotiz: Meine Projektdatei verweist auch auf die Version 10.0 der Microsoft.WebApplication.targetsDatei, aber das scheint in Ordnung zu sein.

derFunk
quelle
2

Ich hatte den gleichen Fehler. Irgendwie fehlte diese Zeile.

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

Fügte es gleich unten hinzu

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

Funktioniert jetzt gut

StefanHa
quelle
In meinem Fall war es <Import Project = "$ (MSBuildToolsPath32) \ Microsoft.CSharp.targets" />
Joy Acharya
2

Ich habe das gleiche Problem in VS2013. Die Lösung, die ich gefunden habe, bestand darin, ein neues leeres Webanwendungsprojekt zu erstellen, mit dem die folgenden Zeilen in mein altes Website-Projekt kopiert werden können: Oben:

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\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" />
Lernerplatten
quelle
2

Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Bearbeiten (Projektname) .csproj. (zB Bearbeiten im Editor) Suchen Sie nach Fügen Sie Folgendes über der Zeile hinzu.

13.0 $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) Projekt speichern und neu laden.

Das funktioniert wirklich für mich, danke

Pratham
quelle
2

Für Visual Studio 2017 sollte es nach dem Block in der .csproj-Datei hinzugefügt werden. Verwenden Sie den Editor und suchen Sie nach ".targets", um es zu finden ...

Ich habe ein neues VS 2017-Projekt erstellt und dies funktioniert für mich (ohne Warnungen):

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\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" />
  <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>
Yovav
quelle
2

Ich hatte das gleiche Problem: Ich habe das Projekt in erstellt VS 2010und musste aus veröffentlichenVS 2019 . Keine der Lösungen hier funktionierte für mich, und ich war ungefähr einen Tag mit dem Problem beschäftigt.

Was funktioniert hat, kam von diesem Link: http://www.dotnetxp.com/visual-studio-error-publish-target-gatherallfilestopublish-not-exist-project/

Das habe ich getan:

** Entladenes störendes Projekt.

** Öffnen Sie die csproj-Datei im Texteditor.

** Finde diese Zeile

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

und damit ersetzen. Ich benutze, 16.0weil das die Version ist, die ich benutze (vs2019).

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">16.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

** Projekt neu laden und veröffentlichen.

Lief wie am Schnürchen.

fdkgfosfskjdlsjdlkfsf
quelle
1

Die Lösung von Sayed funktionierte in meinem Projekt nicht, das mit VS2012 aktualisiert wurde. Aber das hat funktioniert

Rush Frisby
quelle
1

Wenn Sie in VS2012 (Visual Studio 2012) ein VS2010-Projekt bearbeiten, versuchen Sie dies. Bearbeiten Sie die csproj-Datei von:

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

Und wechseln Sie zu:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />
SushiGuy
quelle
1
Die Zeile könnte wie folgt aussehen: <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" condition = 'false' /> Es hat bei mir funktioniert. Danke @SushiGuy
Kashif R
0

Da das Problem auf meiner Seite nicht reproduziert werden kann, möchte ich Ihnen empfehlen, das SDK neu zu installieren.

Bitte versuchen Sie, das alte SDK vollständig zu entfernen, bevor Sie das neue installieren.

Freundliche Grüße,

Ming Xu.

Ming Xu - MSFT
quelle
Ich habe die Werkzeuge komplett entfernt und neu installiert, aber das schien nicht zu funktionieren. Ich habe die neuen Tools (Windows Azure SDK für .NET) vollständig deinstalliert und wieder die alten (aktuellen) Veröffentlichungsfunktionen von Visual Studio 2010 SP1 verwendet.
Joe
1
Warum ist alles so fehlerhaft? Ernsthaft. Ich hatte mehr von Microsoft erwartet.
Mathias Lykkegaard Lorenzen
0

Gleiches Problem habe ich behoben. Bitte überprüfen Sie, ob einige Dateien in der Lösung fehlen. wenn Sie Fehler wie sehenError - The target "GatherAllFilesToPublish" does not exist in the project. Dann stoßen, öffnen Sie einfach die .proj-Datei und löschen Sie diese Zeile<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Sie erhalten einen tatsächlichen Fehler oder diese fehlenden Dateien in Lösung

Appasaheb Tawale
quelle