Tengo la siguiente estructura de carpetas para mi proyecto .NET Core 2.1:
¿Cómo puedo incluir la carpeta AppData y todas sus subcarpetas y archivos cuando publique la solución?
Intenté agregar esto al archivo .csproj pero no funcionó:
<ItemGroup> <Folder Include="AppData\*" /> </ItemGroup>EDITAR
También probé con esto y no funcionó:
<ItemGroup> <Content Include="AppData\**" LinkBase="AppData" /> </ItemGroup>Puede colocar un archivo de marcador de posición en él (o usar sus archivos existentes). Luego agregue el archivo al proyecto y configure las propiedades del archivo: Copiar al directorio de salida: Copiar si es más reciente o Copiar siempre.
De otra manera: agregue un comando de paso posterior a la compilación, que crea el directorio.
Agregando esto:
<ItemGroup> <Content Include="AppData\**"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup> a su archivo .csproj copiará la carpeta AppData si no está vacía. Para la carpeta AppData vacía, puede usar esta solución alternativa:
<Target Name="CreateAppDataFolder" AfterTargets="AfterPublish"> <MakeDir Directories="$(PublishDir)AppData" Condition="!Exists('$(PublishDir)AppData')" /> </Target> Esto creará la carpeta AppData después de la publicación si aún no se incluye en la salida. Lo que significa que esto creará la carpeta AppData solo si está vacía durante la publicación.
Hay una solución simple y útil:
<ItemGroup> <Content Include="AppData\**" CopyToPublishDirectory="PreserveNewest"/> </ItemGroup>Puede encontrar más trucos aquí: https://docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj
Ninguna de las soluciones anteriores funcionó para mí. Entonces, tomé el mismo enfoque que se tomó en "Plantilla de proyecto React" y agregué este código a mi archivo .csproj:
<Target Name="PublishFrontend" AfterTargets="ComputeFilesToPublish"> <ItemGroup> <DistFiles Include="ClientApp\build\**" /> <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)"> <RelativePath>%(DistFiles.Identity)</RelativePath> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> </ResolvedFileToPublish> </ItemGroup> </Target>Primera solución, si se ejecuta dotnet build o dotnet Publish, se agregará la carpeta dentro del contenedor.
<ItemGroup> <None Update="AppData\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup>Segunda solución, si ejecuta dotnet Publish agregará la carpeta dentro de bin.
<ItemGroup> <Content Include="AppData\**" CopyToPublishDirectory="PreserveNewest"/> </ItemGroup>