Zurzeit habe ich ein Web-Deployment-Projekt eingerichtet, das Code in den Ordner .\Release
kompiliert. Nach dem Build möchte ich die Dateien auf einen anderen Computer kopieren (da das Verzeichnis, in dem Sie es erstellen, gelöscht und dann neu erstellt wird).
Die ItemGroup zum Definieren der zu kopierenden Dateien ist wie folgt eingerichtet:
%Vor%"Website" ist Code, der für mehrere Websites verwendet wird. Daher werden mehrere Webbereitstellungsprojekte in der Lösung eingerichtet.
Dann habe ich das AfterBuild-Ziel, um die Dateien zu kopieren:
%Vor% Die ReleaseFiles werden jedoch nicht kopiert, was kann die Ursache dafür sein? Ich hatte den Fehler .\TempBuildDir\folder\subfolder - The process cannot access the file because it is being used by another process.
, wobei folder\subfolder
jedesmal anders sein kann, aber selbst wenn diese Nachricht nicht erscheint, werden die Dateien immer noch nicht kopiert.
Problem ist, es hat vorher funktioniert.
Das Hauptproblem besteht darin, dass die ItemGroup in Ihrem Beispiel zum Zeitpunkt des Ladens der MSBuild-Datei ausgewertet wird - und zu diesem Zeitpunkt sind diese Dateien höchstwahrscheinlich noch nicht vorhanden .....
Daher sind Ihre Sammlungen "ReleaseFiles" und "OverrideFiles" leer und dann wird nichts kopiert.
Sie müssen Ihre ItemGroups dynamisch erstellen, nachdem der Build passiert ist (und die hier referenzierten Dateien tatsächlich vorhanden sind):
%Vor%Jetzt sollten Sie in Ordnung sein, und die Kopieraufgabe sollte funktionieren.
Marc
Tags und Links visual-studio-2008 web-deployment-project