it-swarm.com.de

Visual Studio 2012 Web Publish kopiert keine Dateien

Ich habe ein Webanwendungsprojekt in VS 2012, und wenn ich das Web-Publishing-Tool verwende, wird es erfolgreich erstellt, kopiert jedoch keine Dateien in das Veröffentlichungsziel (in diesem Fall Dateisystem).

Wenn ich mir die Build-Ausgabe ansehe, kann ich sehen, dass alles korrekt in obj\Release\Package\PackageTmp\kopiert wird, aber dann sehe ich in der Build-Ausgabe nur Folgendes:

4> Fertig Projekt "{Projekt} .csproj".
4> Vorhandene Dateien löschen ...
4> Veröffentlichungsordner/...
4> ========== Build: 3 erfolgreich abgeschlossen, 0 fehlgeschlagen, 1 aktuell, 0 übersprungen ==========
=========== Veröffentlichen: 1 erfolgreich, 0 fehlgeschlagen, 0 übersprungen ==========

Obwohl das Publizieren erfolgreich war, befinden sich im Zielverzeichnis keine Dateien für das Publizieren.

Ich habe dies in mehreren Projekten gesehen, und manchmal scheint es, als hätten die Konfigurationen der Lösung/Plattform dieses Problem verursacht, aber ich konnte keine genaue Ursache dafür finden.

Hat jemand das gesehen oder haben Sie eine Idee, wie man das richtig zum Laufen bringt?

UPDATE:

Ich habe möglicherweise eine Problemumgehung dafür gefunden. Ich hatte das gerade noch einmal passiert und habe mich mit den Veröffentlichungseinstellungen beschäftigt. Nachdem ich die ausgewählte Konfiguration auf der Registerkarte "Einstellungen" auf eine andere Konfiguration umgestellt und dann wieder auf die Konfiguration umgestellt hatte, wollte ich alle meine Dateien erneut veröffentlichen. Hoffentlich funktioniert das auch bei anderen Projekten in der Zukunft. 

UPDATE 2:

Ich habe einen Fehler in Microsoft Connect gepostet und von einem Entwickler des VS Web Developer-Teams erfahren. Er sagte, dass sie dieses Problem in ihren internen Builds behoben haben und bald ein Update für das Veröffentlichungstool veröffentlichen werden, das dieses Problem beheben wird.

UPDATE 3:

Dies wurde kürzlich mit Visual Studio 2012 Update 2 behoben

227
Jeff Papp

Dies kann durch Lösungen/Projekte verursacht werden, die mit dem RC von vs2012 erstellt wurden. Dies ist mir schon vor Monaten passiert und hat das Problem behoben, indem sichergestellt wurde, dass meine Konfigurationskonfigurationen mit meinen Projektkonfigurationen übereinstimmen ...

Das gleiche Problem hatte ich kürzlich, als ich dieselbe Lösung öffnete, die ursprünglich in vs2012RC mit VS2012 Express für Web erstellt wurde. Ich habe genau das gemacht, was das ursprüngliche Poster vorschlug, und mein Problem wurde behoben.

Hier ist der Thread, der mich zur Antwort führt:

connect.Microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

Die relevante Antwort aus dem obigen Gespräch, die mir geholfen hat, war:

Gepostet von Microsoft am 13.06.2012 um 12:00 PM Hi Andrew,

Dies war ein Fehler im Umgang mit der Lösungskonfiguration im Vergleich zu Projektkonfiguration. Wir haben fälschlicherweise angenommen, dass es sich um die .__ handelt. Dasselbe Projekt (z. B. das Release | x86 von Solution hätte jedes Projekt auf Release | x86 gesetzt), was dazu geführt hat, dass der falsche Build .__ verwendet wurde. Eigenschaften für das Veröffentlichen von Dateien.

Die Problemumgehung besteht darin, die Lösungskonfiguration vorzunehmen und .__ zu erstellen. Konfigurationsübereinstimmung. Dieses Problem wird in der nächsten Version von .__ behoben. Visual Studio 2012.

Vielen Dank, - Jimmy Lewis SDET, Visual Web Developer Team

78
Dave Riedl

Gleiches Problem. Die Problemumgehung bestand darin, die Veröffentlichungseinstellungen von Release in Debug zu ändern. Veröffentlichen Sie erneut und wechseln Sie dann wieder zu Release ...

104
Roberto Nunes

Um noch ein bisschen weiter zu gehen. Sie haben zwei Dateien, die erstellt werden, wenn Sie ein Veröffentlichungsprofil erstellen. 

  • NewProfile.pubxml 
  • NewProfile.pubxml.user

Wenn Sie ein Projekt öffnen, das diese Dateien im PublishProfile-Ordner von einer Quellcodeverwaltung enthält, hat es nur die .pubxml-Datei und nicht die .publxml.user-Datei. Daher erstellt es die .publxml.user-Datei beim Öffnen des Projekts ..__ Der neue .publxml.user im Fluge sieht die XML so aus:

<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
</Project>

Wenn Sie ein neues Profil erstellen, wird XML erstellt, das wie folgt aussieht:

<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

Wenn Sie den Knoten <PropertyGroup> in die Datei .pubxml.user aufnehmen, funktionieren Ihre PublishProfiles wieder.

39
Eric Wild

Eine einfache Lösung besteht darin, Ihr Veröffentlichungsprofil zu löschen und ein neues zu erstellen.

wenn Sie mit der rechten Maustaste auf Ihre Lösung klicken und "Veröffentlichen" auswählen, haben Sie ein Profil festgelegt. Löschen Sie dies und erstellen Sie ein neues.

das wird es beheben.

Dieses Problem hatte ich von 2010 auf 2012 gewechselt

21
JGilmartin

Ich hatte denselben Fehler und ich ändere die Einstellung von release in debug und das Problem wurde behoben. 

9
Stack User

Ich hatte das gleiche Problem, aber keine der Antworten in diesem Thread funktionierte für mich. Mein Problem war, dass es ein Verzeichnis gibt, das dynamisch (von meiner App) statische HTML-Dateien enthält. Das gesamte Verzeichnis wurde nicht veröffentlicht.

Die Lösung, die für mich funktionierte, wurde gefunden hier :

Ein Thema, das ich vor einiger Zeit hatte, dachte ich sollte dokumentieren, dass bestimmte Dateitypen nicht hochgeladen wurden, als ich mein Projekt veröffentlichte.

Die betreffenden Dateitypen waren .pdf-Dateien und .rtf.

Der Grund dafür war, dass diese Dateierweiterungen von Visual Studio nicht als veröffentlichungspflichtig erkannt wurden. Glücklicherweise kann dies in Visual Studio geändert werden.

Wählen Sie die Dateien aus, die nicht kopiert werden. Stellen Sie in Eigenschaften sicher, dass Build-Aktion auf Inhalt gesetzt ist.

Wenn dies nicht funktioniert, können Sie Folgendes versuchen:.

Wählen Sie im Menü ProjectPackage/Publish Web aus und beachten Sie diese Dropdown-Liste:

enter image description here

Ändern Sie dies in Alle Dateien in diesem Projektordner.

8
Charles Wesley

Ich habe alle diese Lösungen ausprobiert, aber dies ist die, die jedes Mal funktioniert. 

Wir ändern einfach die "Publish-Methode:" von "Dateisystem" beispielsweise in "Web Deploy" und ändern sie sofort wieder in "Dateisystem".

7
user2896889

Dies liegt daran, dass die Datei .pubxml.user zum Veröffentlichen erforderliche Informationen enthält und diese Datei nicht in der Quellcodeverwaltung enthalten ist (und nicht sein sollte). Um diesen VS-Fehler zu beheben, kopieren Sie die Informationen aus der Datei .pubxml.user in die Datei .pubxml. Die relevanten Eigenschaften sind:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

Legen Sie diese in Ihre .pubxml-Datei ein, und Sie sollten gut damit umgehen können.

7
Chris Hynes

Ich hatte (hatte) das gleiche Problem für mehrere Projekte. Die einzigen, die betroffen sind, scheinen Webprojekte zu sein. Wenn Sie das Profil löschen und erneut erstellen, wird das Problem nur einmal gelöst. Darüber hinaus ergibt ein Vergleich der erzeugten publishxml-Datei keine Unterschiede, so dass es überhaupt nicht mit dem Profil zusammenhängt.

Die von OP erwähnte Problemumgehung, um Build-Probleme hin und her zu ändern, scheint momentan die einzige zuverlässige Lösung zu sein. 

5
Bob Noordam

Folgendes hat für mich gearbeitet:

Wechseln Sie einfach von Release> Debug> Release (oder umgekehrt) und veröffentlichen Sie anschließend. 

Sie müssen nichts löschen, bearbeiten und veröffentlichen, was Sie nicht brauchen.

4
dav_i

Mein Problem war in einer falschen Konfiguration der Datei myproject.csproj. Die Datei '_address-step1-Saved.cshtml' wurde beim Veröffentlichen nicht kopiert. 'None' wurde in 'Content' geändert, jetzt ist es in Ordnung .  enter image description here

4
Yara

Auf VS 2010 stieß ich auf das gleiche Problem. Nachdem ich die Ausgabe von Veröffentlichungen, die Ereignisprotokolle geprüft und visuelle Studioprotokolle usw. überprüft hatte, entschied ich mich, das Webpublishing (via Hinzufügen/Entfernen) zu entfernen, das meiner Meinung nach kürzlich auf Version 1 aktualisiert wurde. 0,30810,0. Dies hat das Problem gelöst.

4
Matt Jordan

Hier hatten wir das gleiche Problem.

Wir ändern einfach die "Publish-Methode:" von "Dateisystem" beispielsweise in "Web Deploy" und ändern sie sofort wieder in "Dateisystem".

4
KoalaBear

Gleiches Problem mit VS 2012 Pro mit einem Veröffentlichungsziel für Datenträger. Projekt wurde für die korrekte Veröffentlichung verwendet, begann jedoch mit diesem Problem, bei dem die Dateien nicht in den Zielordner kopiert werden konnten.

Die Lösung bestand darin, das Veröffentlichungsprofil zu bearbeiten, den Modus von Release (Any CPU) in Debug zu ändern und anschließend auf Release (Any CPU) zu wechseln. Dadurch wird die Datei PublishProfiles\projname.pubxml.user (wie oben beschrieben) überschrieben. Sieht aus, als würden die Elemente LastUsedBuild, LastUsedPlatform und TimeStampOfAssociatedLegacyPublishXmlFile unter dem Eigenschaftengruppenknoten hinzugefügt. Nach Abschluss der Veröffentlichung wird eine weitere ItemGroup mit einzelnen Dateien und Veröffentlichungszeiten hinzugefügt.

3
mellodev

Hatte vor kurzem in VS 2013 das gleiche Problem für ein MVC-Projekt, in das ich Umbraco CMS importierte. Ich konnte nicht veröffentlichen. Die Antwort oben half, obwohl ich eine Weile brauchte, um herauszufinden, was ich eigentlich in VS tun sollte. Es brauchte etwas Forschung, z. auf MS-Blogs, um herauszufinden. Ich versuche es einfach zu sagen:

  • Wählen Sie in der VS-Symbolleiste eine bestimmte Konfiguration aus, z. Release und eine beliebige CPU. Führen Sie das Projekt aus.
  • Klicken Sie anschließend im Projektmappen-Explorer mit der rechten Maustaste auf die betreffende Lösung und wählen Sie Veröffentlichen. Erstellen Sie ein neues Veröffentlichungsprofil oder verwenden Sie ein bestimmtes Profil. Stellen Sie jedoch sicher, dass in den Einstellungen die gleiche Konfiguration (z. B. Release und Any CPU) ausgewählt wird, bevor Sie das Projekt zum letzten Mal ausführen.
  • Außerdem war es in meinem Fall notwendig, den OBJ - Ordner zu löschen, da hier die Einstellungen meiner letzten erfolglosen Veröffentlichungsversuche stecken blieben, obwohl ich VS neu gestartet und alle Publishing-Profile gelöscht habe.
1
Anja

Ich habe festgestellt, dass ich dieses Problem umgehen könnte, indem ich den Zielspeicherort von obj/[release | stage | ..] auf einen neuen Pfad außerhalb der Lösungsordner komplett geändert habe, z. B. c:\deploy. Es scheint, als würde VS 2012 während des Veröffentlichungsprozesses durcheinander geraten und vielleicht irgendwo aufgeben.

Matt

1
Wilkoteq

Diese Aktion war für mich erfolgreich:

Beenden Sie Publish-Profile in "Eigenschaften> PublishProfiles> xxxx.pubxml" und setzen Sie die Einstellungen erneut.

1
MichAdel

Für das, was es wert ist, gab ich es schließlich auf, mit Web Deploy zu kämpfen, damit es das tat, was ich wollte (kopierbare bereitstellbare Dateien und nichts anderes), also habe ich es in PowerShell erstellt und bin mit dem Ergebnis wirklich zufrieden. Es ist viel schneller als alles, was ich mit MSBuild/Web Publish ausprobiert habe, vermutlich weil diese Methoden immer noch Dinge tun, die ich nicht brauchte.

Hier ist der Gist ( wörtlich ):

function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir\$_"
    $to = split-path -parent "$deploy_dir\$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}

In meinem Fall rufe ich dies in einer CI-Umgebung (TeamCity) auf, aber es könnte leicht in ein Post-Build-Ereignis eingebunden werden.

1
Todd Menier

Ich habe eine Webanwendung mit mehreren anderen referenzierten Projekten in der Lösung. Ich habe in der Vergangenheit viele Male erfolgreich mit einer einzigen Publish-Konfiguration bereitgestellt. Ich habe die Projektkonfiguration von Debug zu Release für ein Projekt geändert, das in der Vergangenheit übersehen wurde. Beim nächsten Bereitstellungsversuch kam es zu diesen Symptomen, bei denen das Publish-Verfahren nur leise fehlschlägt. Es bewirkt nichts und sagt, dass es erfolgreich war:

1>------ Build started: Project: Project, Configuration: DeployProduction Any CPU ------
1>  
2>Publishing folder /...
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

Die einzige Möglichkeit zur Wiederherstellung bestand darin, das Veröffentlichungsprofil zu löschen, Visual Studio zu schließen, um die Löschung zu speichern, erneut zu öffnen und das Veröffentlichungsprofil von Grund auf neu zu erstellen. Sobald ich das getan hatte, konnte ich wieder gut veröffentlichen.

Win8 VS2012, beschissener Laptop.

0
Chris Moschini

Überprüfen Sie in Ihrem aktuellen Projekt, ob Sie eine Kopie mit demselben Klassennamen und unterschiedlichen Seitennamen erstellt haben (Klassenname erbt die kopierte Datei). Letztendlich wird das den Compiler verwirren !!!

CodeFile = "Consolidated.aspx.vb" Inherits = "Consolidated

0
Dileep

Dies ist mir bei mit Visual Studio generierten Service Reference -Dateien aufgetreten, die hinsichtlich der Gesamtpfadlänge zu lang werden.

Verkürzen Sie sie, indem Sie die Servicereferenz mit svcutil.exe erneut generieren und alle ursprünglichen Servicereferenzdateien löschen.

svcutil kann so aufgerufen werden:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

My.Namespace sollte durch den vorhandenen Namespace im generierten Service-Proxy ersetzt werden (normalerweise in der Datei Reference.cs zu finden), um Kompilierungsfehler zu vermeiden. 

http://myservice sollte durch die Dienstendpunkt-URL ersetzt werden.

0
saille

Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

Build > Publish > Profile > New

Erstellen Sie ein neues Profil und konfigurieren Sie es mit den gleichen Einstellungen wie Ihr vorhandenes Profil.

Das Projekt wird jetzt korrekt veröffentlicht. Dies geschieht häufig aufgrund eines quellengesteuerten Veröffentlichungsprofils von einem anderen Computer, das in einer neueren Version von Visual Studio erstellt wurde.

0
Adam

Ich bin in dasselbe Problem geraten. Keine der oben genannten Lösungen funktionierte für mich.

Ich habe also die Dateien ausgeschlossen, die beim Veröffentlichen nicht kopiert wurden.

0
Rahul Nikate

Ich hatte die Website mehrmals veröffentlicht. Aber als ich eines Tages einige ASPX-Dateien modifizierte und dann versuchte, die Website zu veröffentlichen, entstand ein leerer veröffentlichter Ordner.

Bei meinem Workaround habe ich eine Lösung gefunden.

  1. Der Veröffentlichungsassistent zeigt alle Fehler beim Veröffentlichen an, kopiert jedoch keine Dateien in den Zielordner.

  2. Um die fehlerhafte Datei herauszufinden, kopieren Sie einfach den Inhalt des Websiteordners in einen neuen Ordner und starten Sie das Visual Studio mit dieser Website.

  3. Wenn Sie jetzt versuchen, zu veröffentlichen, erhalten Sie den Dateinamen, der Fehler enthält.

  4. Beheben Sie einfach den Fehler im ursprünglichen Websiteordner und versuchen Sie zu veröffentlichen. Der Fehler wird wie zuvor ausgeführt.

0
Ramanathan RM

Keine der oben genannten Lösungen funktionierte für mich.

Mir fiel jedoch auf, dass von unseren fünf ASP.NET-MVC-Projekten in unserer Hauptlösung vier das Bereitstellungspaket an der richtigen Stelle platziert haben, während eines unter obj\Debug lag.

Ich habe die Projekte verglichen und eine Diskrepanz festgestellt. Die Lösung bestand darin, dies zu ändern :

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

dazu :

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

Nachdem ich diese Änderung vorgenommen hatte, platzieren alle fünf Projekte ihre Bereitstellungspakete an der richtigen Stelle.

(Tut mir leid wegen der langen Leitungen, aber ich konnte keinen besseren Weg finden, um sie zu verdichten.)

0
Ryan Lundy

Ich habe die Antwort endlich selbst gefunden. Alle oben genannten Lösungen funktionieren nicht für mich. 

Was ich getan hatte, ist, dass ich das Projekt verschieben möchte, um es zu ändern.

der Grund dafür, dass es auf meiner Seite fehlgeschlagen ist, ist, dass ich einen sehr langen Projektnamen/Hierarchie hatte.

C:\Benutzer\Benutzer\Desktop\Compliance Management System\ComplianceIssueManagementSystem\ComplianceIssueManagementSystem

Ich hatte daran gedacht, weil manchmal, wenn ich rar-Dateien extrahierte, der Name/Pfad zu lang ist. Ich dachte, es wird das gleiche sein wie beim Visual Studio 2012. und das tut es!

ich hoffe, es wird euch helfen.

0
Joebet

In Visual Studio 2012 führt das Wechseln zwischen Versionen immer noch zu Problemen. 

Wir haben ein Pre-Build-Ereignis hinzugefügt, um den Ordner obj zu löschen: del /s /f /q $(ProjectDir)\obj, und das Problem der Veröffentlichung wurde behoben. Die Reinigung funktioniert manchmal, aber nicht immer.

0
Candide