在发布期间在 wwwroot 中创建空目录,即使该目录为空

Posted

技术标签:

【中文标题】在发布期间在 wwwroot 中创建空目录,即使该目录为空【英文标题】:During publish create empty directory inside wwwroot even if the directory is empty 【发布时间】:2022-01-20 02:29:54 【问题描述】:

我的 blazor 服务器项目中有 wwwroot/print/data/ 空文件夹。但是当我发布项目时。 wwwroot 文件夹不包含 print/data/ 子文件夹。但是如果print/data/ 文件夹里面有一些文件,它就会被创建。我希望发布项目有print/data/,即使文件夹是空的。

澄清:我所说的已发布项目是指在解决方案资源管理器窗口中,当您右键单击项目然后单击发布时。发布目录中的项目已创建。

软件信息:

.NET 版本:5.0 项目:Blazor 服务器端

【问题讨论】:

【参考方案1】:

您可以在 .csproj 文件中添加 <Target Name="CreateFolder" AfterTargets="Publish">。它对我有用。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <Target Name="CreateFolder" AfterTargets="Publish">
    <MakeDir Directories="$(PublishDir)wwwroot\print\data" Condition="!Exists('$(PublishDir)wwwroot\print\data')" />
    <WriteLinesToFile File="$(PublishDir)wwwroot\print\data\.log" Lines="Generated file for publish" Overwrite="True" Condition="!Exists('$(PublishDir)wwwroot\print\data\.log')" />
  </Target>
</Project>

经过测试,看了很多博客,发现文件夹是否为空,发布过程中会忽略。

也许我们可以在data文件夹下创建一个示例文件,我认为这是最简单的方法。

【讨论】:

是的,我也认为样本数据更容易。但这似乎是一种技巧,而不是一种解决方案。我的意思是我也可以在已发布的项目中创建文件夹。我希望这是一种更改配置的方法,以便它不会忽略空文件夹。 @KevinStephenBiswas 这是编译时的默认行为。 .csproj 在这里允许这些特殊操作,它是如何破解的? @KevinStephenBiswas docs.microsoft.com/en-us/visualstudio/msbuild/… 官方文档提到了这个用法。

以上是关于在发布期间在 wwwroot 中创建空目录,即使该目录为空的主要内容,如果未能解决你的问题,请参考以下文章

Python 在 __new__ 中创建对象期间设置属性

Gradle 在项目目录中创建大量文件

如果目录不存在,则创建一个目录,然后在该目录中创建文件

即使令牌是在邮递员中创建的,JWT 令牌也会返回空

什么是 asp.net vnext 中的 wwwroot

在 C 中创建一个新目录