我的.NET Core 2.1项目具有以下文件夹结构:
发布解决方案时,如何包含文件夹AppData
及其所有子文件夹和文件?
我尝试将其添加到.csproj文件中,但无效:
<ItemGroup>
<Folder Include="AppData\*" />
</ItemGroup>
编辑
我也尝试过这种方法,但是没有用:
<ItemGroup>
<Content Include="AppData\**" LinkBase="AppData" />
</ItemGroup>
答案 0 :(得分:4)
添加此内容:
<ItemGroup>
<Content Include="AppData\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
如果您的.csproj
文件不为空,则会复制AppData
文件夹。对于空的AppData
文件夹,您可以使用以下解决方法:
<Target Name="CreateAppDataFolder" AfterTargets="AfterPublish">
<MakeDir Directories="$(PublishDir)AppData" Condition="!Exists('$(PublishDir)AppData')" />
</Target>
这将在发布后创建AppData
文件夹(如果输出中尚未包含该文件夹)。这意味着只有在发布时为AppData
文件夹时,该文件夹才会创建。
答案 1 :(得分:3)
您可以在其中放置一个占位符文件(或使用现有文件)。然后将文件添加到项目中并设置文件属性:复制到输出目录:如果较新则复制或始终复制。
其他方式:添加一个post build step命令,用于创建目录。
答案 2 :(得分:1)
有一个简单而有用的解决方案:
<ItemGroup>
<Content Include="AppData\**" CopyToPublishDirectory="PreserveNewest"/>
</ItemGroup>
您可以在此处找到更多技巧: https://docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj
答案 3 :(得分:1)
以上解决方案均不适合我。因此,我采用了“反应项目模板”中的相同方法,并将此代码添加到了.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>
答案 4 :(得分:0)
第一个解决方案,如果运行 dotnet build 或 dotnet publish 将在 bin 中添加文件夹。
provided
第二种解决方案,如果运行 dotnet publish 会在 bin 中添加文件夹。
<ItemGroup>
<None Update="AppData\**" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>