¿Puedo excluir una carpeta o archivos cuando publico un sitio web en Visual Studio 2005? Tengo varios recursos que quiero tener a mano en el Explorador de soluciones, como archivos de configuración alternativos para varios entornos, pero realmente no quiero publicarlos en el servidor. ¿Hay alguna forma de excluirlos? Cuando utilizo otros tipos de proyectos, como un ensamblado .dll, puedo establecer la propiedad Build Action de un archivo en "Ninguno" y su propiedad Copiar en el directorio de salida en "No copiar". No encuentro configuraciones similares para archivos en un sitio web.
Si el IDE no ofrece esta función, ¿alguien tiene una buena técnica para manejar dichos archivos?
visual-studio
visual-studio-2005
web-publishing
Jim Snyder
fuente
fuente
Respuestas:
Si puede identificar los archivos en función de la extensión, puede configurarlo utilizando la etiqueta buildproviders en web.config . Agregue la extensión y asignela a ForceCopyBuildProvider. Por ejemplo, para configurar archivos .xml para que se copien con una acción de publicación, debe hacer lo siguiente:
Para evitar que se copie un archivo determinado, haría lo mismo pero usaría System.Web.Compilation.IgnoreFileBuildProvider como tipo.
fuente
Excluya archivos y carpetas agregando elementos
ExcludeFilesFromDeployment
yExcludeFoldersFromDeployment
al archivo de su proyecto (.csproj, .vbproj, etc.). Deberá editar el archivo en un editor de texto o en Visual Studio descargando el proyecto y luego editándolo.Agregue las etiquetas en cualquier lugar dentro del apropiado
PropertyGroup
(depuración, lanzamiento, etc.) como se muestra a continuación:Se admiten comodines.
Para explicar el ejemplo anterior:
ExcludeFilesFromDeployment
excluyeFile1.aspx
(en la raíz del proyecto) yFolder2\File2.aspx
(Folder2
está en la raíz del proyecto)ExcludeFilesFromDeployment
excluye todos los archivos dentro de cualquier carpeta nombrada.svn
y cualquiera de sus subcarpetasExcludeFoldersFromDeployment
carpetas excluidas nombradasFolder1
(en la raíz del proyecto) yFolder2\Folder2a
(Folder2
está en la raíz del proyecto)Para obtener más información, consulte la publicación del blog de MSDN Implementación web: exclusión de archivos y carpetas a través del archivo de proyecto de la aplicación web
fuente
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:
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:
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:
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.Y, por favor, no olvides escapar de la
.
regla de salto en una ruta de archivo con una barra invertida.fuente
Luché con el mismo problema y finalmente apreté el gatillo para convertir el sitio web en una aplicación web. Una vez que hice esto, obtuve todos los beneficios del IDE, como la acción de compilación, y se compiló más rápido para arrancar (no más sitio web de validación ...).
Paso 1: convierta su 'sitio web' en una 'aplicación web'. Para convertirlo, acabo de crear una nueva "aplicación web", borré todos los archivos que creó automáticamente y copié y pegué mi sitio web. Esto funcionó bien. Tenga en cuenta que los archivos de informe deberán tener su Acción de compilación establecida en "Contenido" en lugar de "ninguno".
Paso 2: Ahora puede establecer la propiedad "Acción de compilación" de cualquier archivo.
Espero que esto ayude.
fuente
En Visual Studio 2013, encontré que la respuesta de Keith, agregar el
ExcludeFoldersFromDeployment
elemento al archivo del proyecto, no funcionó (no había leído la respuesta de Brian Ogden que dice esto). Sin embargo, descubrí que podía excluir un archivo de texto al publicar en Visual Studio 2013 simplemente configurando las siguientes propiedades en el archivo de texto:1) Acción de construcción: ninguna
2) Copiar al directorio de salida: no copiar
Inicialmente intenté configurar la propiedad Copiar en el directorio de salida por sí misma, pero eso no funcionó cuando la Acción de compilación se estableció en el valor predeterminado, Contenido. Cuando configuré la Acción de compilación en Ninguna, el archivo de texto ya no se copió en la carpeta de destino cuando publiqué.
Para ver estas propiedades en la GUI de Visual Studio, en el Explorador de soluciones, haga clic con el botón derecho en el archivo que desea excluir y seleccione Propiedades en el menú contextual.
fuente
Creo que solo tienes dos opciones aquí:
He pasado por esto antes y no pude encontrar nada realmente elegante.
fuente
Para Visual Studio 2017, publicación de aplicaciones web , primero cree un perfil de publicación de sistema de archivos estándar. Vaya a la carpeta App_Data \ PublishProfiles \ y edite el archivo [nombre de perfil] .pubxml.
Añadir
debajo de la etiqueta
<PropertyGroup>
Solo puede especificar esta etiqueta una vez, de lo contrario, solo tomará los últimos valores.Ejemplo:
Asegúrese de que la etiqueta DeleteExistingFiles esté establecida en False
fuente
La característica que está buscando existe si su proyecto se crea como una "Aplicación web". Sitio web "proyectos" de son solo una colección de archivos que se consideran 1: 1 con lo que se implementa en un servidor web.
En términos de funcionalidad, ambos son iguales, sin embargo, una aplicación web compila todo el código fuente en una DLL, en lugar de que los archivos de código fuente desnudos se copien en el servidor web y se compilen según sea necesario.
fuente
En Visual Studio 2017 (15.9.3 en mi caso), ¡la manipulación del archivo .csproj funciona bien! No es necesario modificar el pubxml.
Luego puede construir configuraciones bastante agradables en el archivo .csproj usando la condición PropertyGroup, por ejemplo:
excluye la carpeta "Samples" de todas las implementaciones con configuraciones que comienzan con "Pub _" ...
fuente
Como respuesta contemporánea, en Visual Studio 2017 con un sitio principal .net:
Puede excluir de la publicación como tal en el csproj, donde CopyToPublishDirectory nunca es.
Esto se analiza con más detalle aquí: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-2.2
Las sugerencias anteriores no funcionaron para mí, supongo que porque Visual Studio ahora está usando un mecanismo de publicación diferente debajo, supongo a través de la herramienta cli "dotnet publish" o equivalente debajo.
fuente
Esto es solo un anexo a las otras respuestas útiles aquí y algo que he encontrado útil ...
Uso de wpp.targets para excluir archivos y carpetas
Cuando tiene varias implementaciones para diferentes entornos, es útil tener un solo archivo común donde puede configurar todos los archivos y carpetas excluidos. Puede hacer esto creando un
*.wpp.targets
archivo en la raíz del proyecto como el siguiente ejemplo.Para obtener más información, consulte esta guía de Microsoft:
Cómo: editar la configuración de implementación en archivos de perfil de publicación (.pubxml) y el archivo .wpp.targets en proyectos web de Visual Studio
fuente