Sorprendentemente, la respuesta para Visual Studio 2012 no está aquí:
La respuesta con una marca de verificación verde no es la respuesta.
La respuesta "mejorada" más alta hace referencia a un artículo de 2010 y dice que tiene que editar su archivo de proyecto csproj que ahora es incorrecto. Agregué el elemento XML ExcludeFoldersFromDeployment a mi archivo csproj de Visual Studio 2012 y no hizo nada, el elemento se consideró no válido, esto se debe a que ExcludeFoldersFromDeployment se ha movido al archivo .pubxml que parece.
Para aplicaciones web y sitios web , edite el archivo .pubxml.
Puede seguir mi respuesta o probar esta guía que encontré más tarde:
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
Sí, puede hacer esto no solo para proyectos de sitios web, sino también para sitios web. Pasé mucho tiempo en Internet buscando esta elusiva capacidad de exclusión con un sitio web de Visual Studio (NO un proyecto de sitio web) y previamente había concluido que no era posible, pero parece que lo es:
En su archivo [mypublishwebsitename] .pubxml, que se encuentra en ~ / Properties / PublishProfiles para proyectos de aplicaciones web y ~ / App_Data / PublishProfiles para sitios web, simplemente agregue:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
como hijos al <PropertyGroup>
elemento principal en su archivo .pubxml. No es necesario agregar un nuevo elemento, a menos que esté ingresando un tipo de compilación específico, como liberación o depuración.
¡¡¡PERO ESPERA!!!
Si está eliminando archivos de su destino / servidor de destino con la siguiente configuración en su configuración de Publicación:
Luego, el proceso de publicación web eliminará en su servidor de origen / destino todo lo excluido, como un elemento que haya delineado en su <ExcludeFoldersFromDeployment>
y <ExcludeFilesFromDeployment>
!
MsDeploy Skip Rules al rescate:
Primero, Web Publish usa algo diferente a MSBuild para publicar (llamado Task IO o algo así) pero tiene un error y no reconoce las reglas de omisión, por lo que debe agregar a su .pubxml:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
Me mantendría <WebPublishMethod>
por su cuenta<PropertyGroup>
, pensaría que podría tener solo un <PropertyGroup>
elemento en su .pubxml pero no se llamaron mis reglas de omisión hasta que me mudé <WebPublishMethod>
a su propio <PropertyGroup>
elemento. Sí, una locura, pero el hecho de que tenga que hacer todo esto para que Web Publish excluya y no elimine una carpeta / archivo de su servidor es una locura.
Ahora mis declaraciones actuales de SkipRules, ExcludeFolders y ExcludeFiles en mi .pubxml:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
Y ahora, las reglas <Target>
de <Project>
omisión ( son un elemento secundario de en su .pubxml): ( es posible que pueda dejar <SkipAction>
vacío para omitir todas las acciones, pero no lo probé y no estoy seguro.
<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>
Y, por favor, no olvides escapar de la .
regla de salto en una ruta de archivo con una barra invertida.