O dziwo, odpowiedzi na Visual Studio 2012 nie ma tutaj:
Odpowiedź z zielonym znacznikiem wyboru nie jest odpowiedzią.
Najwyższa „ulepszona” odpowiedź odnosi się do artykułu z 2010 roku i mówi, że musisz edytować plik projektu csproj, który jest teraz nieprawidłowy. Dodałem ExcludeFoldersFromDeployment element XML do mojego pliku csproj programu Visual Studio 2012 i nic to nie dało, element został uznany za nieprawidłowy, ponieważ ExcludeFoldersFromDeployment został przeniesiony do pliku .pubxml, na który wygląda.
W przypadku aplikacji i witryn internetowych edytujesz plik .pubxml!
Możesz skorzystać z mojej odpowiedzi lub wypróbować ten przewodnik, który znalazłem później:
http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-iis-and-skip-deleting-it-with-msdeployskiprules.html # sthash.MSsQD8U1.dpbs
Tak, możesz to zrobić nie tylko w przypadku projektów witryn internetowych, ale także witryn internetowych. Spędziłem dużo czasu w Internecie, szukając tej nieuchwytnej możliwości wykluczania za pomocą witryny Visual Studio (NIE projektu witryny internetowej) i wcześniej stwierdziłem, że nie jest to możliwe, ale wygląda na to, że:
W pliku [mypublishwebsitename] .pubxml, znajdującym się w ~ / Properties / PublishProfiles for Web Application Projects i ~ / App_Data / PublishProfiles for Websites, po prostu dodaj:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
jako dzieci do głównego <PropertyGroup>
elementu w pliku .pubxml. Nie ma potrzeby dodawania nowego elementu, chyba że kluczem jest określony typ kompilacji, taki jak wydanie lub debugowanie.
ALE POCZEKAJ!!!
Jeśli usuwasz pliki z serwera docelowego / docelowego z następującymi ustawieniami w konfiguracji publikowania:
Następnie proces publikowania w sieci Web usunie z serwera źródłowego / docelowego wszystko, co zostało wykluczone, na przykład element, który nakreśliłeś w swoim <ExcludeFoldersFromDeployment>
i <ExcludeFilesFromDeployment>
!
MsDeploy Skip Rules to ratunek:
Po pierwsze, Web Publish używa do publikowania czegoś innego niż MSBuild (zwanego Task IO lub czegoś podobnego), ale zawiera błąd i nie rozpoznaje reguł pomijania, więc musisz dodać do swojego .pubxml:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Chciałbym zachować <WebPublishMethod>
swój własny <PropertyGroup>
, można by pomyśleć, że możesz mieć tylko jeden <PropertyGroup>
element w swoim .pubxml, ale moje reguły pomijania nie były wywoływane, dopóki nie przeniosłem się <WebPublishMethod>
do ich własnego <PropertyGroup>
elementu. Tak, szalone, ale fakt, że musisz to wszystko zrobić, aby Web Publish wykluczył, a także nie usunął folderu / pliku na serwerze, jest szalony.
Teraz moje rzeczywiste deklaracje SkipRules, ExcludeFolders i ExcludeFiles w moim .pubxml:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
A teraz Reguły pomijania ( <Target>
jest elementem podrzędnym <Project>
w twoim .pubxml): ( Możesz zostawić <SkipAction>
puste pole Pomiń dla wszystkich działań, ale nie testowałem tego i nie jestem pewien.
<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>
I proszę, nie zapomnij o ucieczce przed .
regułą pomijania ścieżki w pliku z ukośnikiem odwrotnym.