Publicar directorios vacíos en una aplicación web en el proyecto web VS2010
-
27-09-2019 - |
Pregunta
A menudo necesito publicar un proyecto web que preserve un árbol de directorio, incluso si los directorios están vacíos, por ejemplo, directorios para contener archivos cargados. Si publico mi aplicación usando el comando VS2010 Publish, los directorios vacíos no se crean en el sistema de archivos remoto, en el servidor web.
¿Hay alguna forma de forzar VS para crear ciertas carpetas, aunque vacías, en el directorio de destino? ¡Gracias!
Solución
No, esto no es posible, me temo que tuvimos el mismo problema. Debe crear un archivo de marcador de posición.txt en cada directorio vacío si desea que la herramienta de precompilación genere estas carpetas vacías. Si no puede crear una aplicación de línea de comandos que creará las carpetas en su publicación de eventos de compilación (pero solo si está utilizando el proyecto del proyecto de aplicación web, no el proyecto del sitio web).
Espero que esto ayude.
Otros consejos
Sé que esta pregunta menciona Visual Studio 2010
Pero llegué aquí buscando el mismo problema ...
Estoy usando Visual Studio 2012
y encontró una forma agradable/elegante de superar esta molesta situación. Creo que también funcionará en VS 2010
y es mejor que agregar archivos vacíos ficticios dentro de las carpetas vacías.
Cuando crea un perfil de publicación con VS 2012
generará un MyPublishProfile.pubxml
archivo en el Properties\PublishProfiles
carpeta (My Project\PublishProfiles
para vb). Estos son MSBuild
Los archivos y uno pueden editarlos para personalizar el proceso de publicación. En nuestro caso, podemos inyectar un objetivo en el proceso de publicación, antes de que la publicación realmente ocurra así:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>CreateEmptyFolders
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEmptyFolders">
<Message Text="Adding empty folder to hold Files" />
<MakeDir Directories="$(_MSDeployDirPath_FullPath)\Files\MyEmptyFolder"/>
</Target>
</Project>
La propiedad AfterAddIisSettingAndFileContentsToSourceManifest
Sostiene los nombres de los objetivos que se invocarán después de que se haya preparado el contenido del paquete de implementación. Este es el momento perfecto para agregar archivos o carpetas adicionales al paquete.
Código y texto mezclado desde:
Implementación web: personalización de un paquete de implementación
Hubo un informe de errores a Microsoft sobre esto y dijeron que no lo arreglarían.http://connect.microsoft.com/visualstudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-folders
Demasiado. Porque solía funcionar en Visual Studio 2008.
Tenga en cuenta que no es necesario implementar realmente el archivo ficticio. Solo necesita existir como parte del proyecto en el entorno de compilación.
This one worked for me:
Edit your publish pubxml file that visual studio generates, like Leniel Macaferi mentioned, then add this: Visual studio already generated a property like
<publishUrl>f:\publish_web</publishUrl>
in the
<PropertyGroup>
section, so I've used it like this: Added to section:
<PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
And also added:
<Target Name="CustomBeforePublish">
<Message Text="CustomBeforePublish task:"/>
<MakeDir Directories="$(publishUrl)\MyFolder\MyFolder2"/>
</Target>
Inside the Empty Folder Add a Default.aspx file. You can leave it empty, It will then create the folder in the PreCompiled version.