Erstaunlicherweise ist die Antwort für Visual Studio 2012 nicht hier:
Die Antwort mit grünem Häkchen ist nicht die Antwort.
Die höchste "erhöhte" Antwort verweist auf einen Artikel aus dem Jahr 2010 und besagt, dass Sie Ihre csproj-Projektdatei bearbeiten müssen, die jetzt falsch ist. Ich habe das ExcludeFoldersFromDeployment-XML-Element zu meiner Visual Studio 2012-csproj-Datei hinzugefügt und es hat nichts getan. Das Element wurde als ungültig angesehen. Dies liegt daran, dass ExcludeFoldersFromDeployment in die .pubxml-Datei verschoben wurde, wie es aussieht.
Für Webanwendungen und Websites bearbeiten Sie die .pubxml-Datei!
Sie können meiner Antwort folgen oder diese Anleitung ausprobieren, die ich später gefunden habe:
http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-iis-and-skip-delete-it-with-msdeployskiprules.html # sthash.MSsQD8U1.dpbs
Ja, Sie können dies nicht nur für Website-Projekte, sondern auch für Websites tun. Ich habe lange Zeit im Internet nach dieser schwer fassbaren Ausschlussmöglichkeit mit einer Visual Studio-Website (NICHT Website-Projekt) gesucht und war zuvor zu dem Schluss gekommen, dass dies nicht möglich ist, aber es sieht so aus:
Fügen Sie in Ihrer .pubxml-Datei [mypublishwebsitename], die sich in ~ / Properties / PublishProfiles für Webanwendungsprojekte und ~ / App_Data / PublishProfiles für Websites befindet, einfach Folgendes hinzu:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
als Kinder zum <PropertyGroup>
Hauptelement in Ihrer .pubxml-Datei. Sie müssen kein neues Element hinzufügen, es sei denn, Sie geben einen bestimmten Build-Typ wie Release oder Debug ein.
ABER WARTE!!!
Wenn Sie Dateien von Ihrem Ziel- / Zielserver mit der folgenden Einstellung in Ihrer Veröffentlichungskonfiguration entfernen:
Dann löscht der Webveröffentlichungsprozess auf Ihrem Quell- / Zielserver alles Ausgeschlossene, wie z. B. ein Element, das Sie in Ihrem <ExcludeFoldersFromDeployment>
und <ExcludeFilesFromDeployment>
!
MsDeploy Skip Rules zur Rettung:
Erstens verwendet Web Publish etwas anderes als MSBuild zum Veröffentlichen (Task IO oder ähnliches genannt), hat jedoch einen Fehler und erkennt keine Überspringregeln. Daher müssen Sie Ihrer .pubxml Folgendes hinzufügen:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Ich würde halten <WebPublishMethod>
in seinem eigenen <PropertyGroup>
, würden Sie denken, Sie nur eine haben könnten <PropertyGroup>
in Ihrer .pubxml Element aber meine überspringen Regeln wurden nicht genannt zu werden , bis ich zog <WebPublishMethod>
zu seinem eigenen <PropertyGroup>
Elemente. Ja, verrückt, aber die Tatsache, dass Sie all dies tun müssen, damit Web Publish einen Ordner / eine Datei auf Ihrem Server ausschließt und auch nicht löscht, ist verrückt.
Jetzt meine aktuellen SkipRules-, ExcludeFolders- und ExcludeFiles-Deklarationen in meiner .pubxml:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
Und jetzt die Überspringregeln ( <Target>
ist ein Kind von <Project>
in Ihrer .pubxml): ( Sie können <SkipAction>
Skip möglicherweise für alle Aktionen leer lassen, aber ich habe das nicht getestet und bin mir nicht sicher.
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipConfigFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipPhotosFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Photos</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Web\.config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Temp</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
Und bitte vergessen Sie nicht, die .
Regel in einem filePath Skip mit einem Backslash zu umgehen.