2011-05-24 10 views

Respuesta

23

Michael tiene toda la razón, mediante la edición del archivo .csproj, puede excluir manualmente la publicación de los archivos/carpetas.

Una forma más fácil si no quiere meterse con el archivo .csproj es resaltar los archivos dentro del explorador de la solución VS. En el panel de propiedades, cambie la compilación a la acción de 'contenido' a 'ninguno'.

De esta forma no tiene que descargar el proyecto de la solución, cargue el archivo .csproj y agregue una línea para cada archivo nuevo que agregue que no necesite ser publicado, sino que logre lo mismo con 3 mouse- clics

(suponiendo que haya establecido el 'publicar sólo los archivos necesarios para ejecutar esta aplicación' en la pestaña de edición)

+8

Para las carpetas, parece que la forma más simple que recomienda no funciona, ya que no hay ninguna propiedad de "Crear acción" para las carpetas en el panel Propiedades (al menos no en VS2010 y VS2012). Para excluir carpetas enteras (en lugar de solo archivos individuales) puede usar la solución a la que se refirió en la respuesta de Michael. – RSW

+3

@RSW, tienes razón. La opción .cproj anula específicamente cualquier archivo marcado como 'contenido'. Sin embargo, si no tiene archivos marcados como 'contenido' en una carpeta, esa carpeta no se publicará. Aún prefiero marcar n archivos y luego anular esos ajustes de archivo con un .CSL de una sola línea oculto/que se olvida fácilmente, pero cada uno es suyo. – jbokkers

+2

_ "La opción .cproj anula específicamente cualquier archivo marcado como 'contenido'" _... eso es muy interesante e importante de saber ... ¡No me di cuenta de eso! Para mí, es una trampa potencial en cualquier caso ... si marcó toda la carpeta, es posible que involuntariamente anule algo dentro de ella. Si hago los archivos individualmente, yo (u otra persona) más tarde puedo agregar un archivo y olvidarme de excluirlo. Supongo que, como con la mayoría de las espadas de doble filo, es mejor comprender completamente las implicaciones para que cualquier elección que elijas esté bien informada. – RSW

4

Otra forma de hacerlo es ocultar las carpetas en el explorador de Windows que no son necesarias para ser publicadas (no es la mejor solución pero funciona si tiene un gran conjunto de imágenes que aún deben estar en el cuadro de desarrollo).

+4

Esta es la única solución si tiene un proyecto de tipo sitio web. http://forums.asp.net/post/1997766.aspx – RobD

+0

Y si tiene un archivo de proceso por lotes haciendo la publicación, puede usar ** ATTRIB + H FolderName ** justo antes de la publicación y ** ATTRIB -H FolderName ** para volver a establecerlo después de publicar – mrd3650

13

Si se trata de un proyecto de sitio web, puede excluir determinadas carpetas y/o archivos de la siguiente manera (Véanse los elementos ExcludeFoldersFromDeployment y ExcludeFilesFromDeployment):

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <WebPublishMethod>FileSystem</WebPublishMethod> 
     <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
     <LastUsedPlatform>Any CPU</LastUsedPlatform> 
     <SiteUrlToLaunchAfterPublish /> 
     <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
     <ExcludeApp_Data>True</ExcludeApp_Data> 
     <publishUrl>D:\YAZILIM\Adopen.2015\PreCompiledWeb</publishUrl> 
     <DeleteExistingFiles>True</DeleteExistingFiles> 
     <PrecompileBeforePublish>True</PrecompileBeforePublish> 
     <EnableUpdateable>True</EnableUpdateable> 
     <DebugSymbols>False</DebugSymbols> 
     <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption> 
     <UseMerge>True</UseMerge> 
     <SingleAssemblyName>AdoIntranet</SingleAssemblyName> 
     <ExcludeFoldersFromDeployment>customobjects;uploads</ExcludeFoldersFromDeployment> 
     <ExcludeFilesFromDeployment>app.config</ExcludeFilesFromDeployment> 
    </PropertyGroup> 
</Project> 
+0

Esta es una gran solución. Otra solución similar es crear un archivo * .wpp.targets * si necesita aplicar estas reglas a todos los perfiles de publicación. – crush

+0

¿A dónde va esto? Tengo un archivo .publishproj pero hay un comentario que dice que no lo modifique. – nasch

+2

Los archivos de definición de publicación de @nasch se almacenan en. \ App_Data \ PublishProfiles con la extensión .pubxml – HGMamaci

3

Usted puede hacer una 'encontrar & sustituir' en el archivo Web.cspoj a Elimin rápidamente comió una carpeta particular del proceso de publicación/despliegue

Me gusta;

<Content Include="Uploads/ 

a

<None Include="Uploads/ 
+0

Gracias por la mejor respuesta – vaqifrv

0

Como la cuestión se etiqueta con ASP, no hay .proj archivo a meterse. Con VS2015, hay otro archivo útil en su lugar: website.publishproj. Y this Asp.Net article on excluding files and folders menciona el archivo .wpp.targets.

Todos estos archivos contienen <ItemGroup> elementos, que pueden tener elementos como <ExcludeFromPackageFolders>. Como estas parecen características documentadas, simplemente úsalas y no te sientas culpable por hackear o 'ensuciar'. Para mí, excluir un directorio usando las instrucciones simples de ese enlace y el archivo website.publishproj funcionó como un encanto!

Cuestiones relacionadas