Es muy probable que, en los tiempos que corren, estemos usando Webpack (o algo similar) para generar los archivos .js y .css minificados de nuestro sitio web. A estos archivos no los mantenemos versionados en nuestro repositorio de código, los usamos sólo para desplegar nuestra aplicación, y tampoco los tenemos incluidos en nuestro archivo de proyecto. Por este motivo es que al compilar nuestra aplicación y generar el paquete de despliegue para nuestra Azure Web App, estos archivos por defecto no están incluidos dentro del paquete.
Para solucionar este problema podemos tomar dos caminos:
- Modificar el archivo de proyecto
- Generar un perfil de publicación y agregar ahí los cambios
Particularmente prefiero ir con la primera opción, ya que de esta manera no necesitamos indicarle a MSBuild que perfil de publicación usar.
Lo que necesitamos es agregar un PropertyGroup con el tag CopyAllFilesToSingleFolderForMSDeployDependsOn, y un Target con los archivos que vamos a agregar:
| <?xml version="1.0" encoding="utf-8"?> | |
| <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
| ... | |
| <PropertyGroup> | |
| <CopyAllFilesToSingleFolderForMSDeployDependsOn> | |
| CustomCollectFiles; | |
| $(CopyAllFilesToSingleFolderForMSDeployDependsOn); | |
| </CopyAllFilesToSingleFolderForMSDeployDependsOn> | |
| </PropertyGroup> | |
| <Target Name="CustomCollectFiles"> | |
| <ItemGroup> | |
| <_CustomFiles Include="Scripts\your-app-bundle.*" /> | |
| <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> | |
| <DestinationRelativePath>Scripts\%(Filename)%(Extension)</DestinationRelativePath> | |
| </FilesForPackagingFromProject> | |
| </ItemGroup> | |
| </Target> | |
| </Project> |