繁体   English   中英

.NET Core 在发布中包含文件夹

[英].NET Core include folder in publish

我的 .NET Core 2.1 项目具有以下文件夹结构:

发布解决方案时,如何包含文件夹AppData及其所有子文件夹和文件?

我尝试将其添加到 .csproj 文件中,但没有奏效:

<ItemGroup>
    <Folder Include="AppData\*" />
</ItemGroup>

编辑

我也试过这个,但没有用:

<ItemGroup>
    <Content Include="AppData\**" LinkBase="AppData" />
</ItemGroup>

添加这个:

<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文件夹。

有一个简单而有用的解决方案:

  <ItemGroup>
    <Content Include="AppData\**" CopyToPublishDirectory="PreserveNewest"/>
  </ItemGroup>

您可以在此处找到更多技巧: https : //docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj

您可以在其中放置一个占位符文件(或使用您现有的文件)。 然后将文件添加到项目并设置文件属性:复制到输出目录:如果更新则复制或始终复制。

其他方式:添加后构建步骤命令,创建目录。

以上解决方案都不适合我。 因此,我采用了在“React 项目模板”中采用的相同方法,并将此代码添加到我的 .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>

第一个解决方案,如果运行 dotnet build 或 dotnet publish 将在 bin 中添加文件夹。

<ItemGroup>
  <None Update="AppData\**"  CopyToOutputDirectory="PreserveNewest"  />
</ItemGroup>

第二种解决方案,如果运行 dotnet publish 将在 bin 中添加文件夹。

<ItemGroup>
  <Content Include="AppData\**" CopyToPublishDirectory="PreserveNewest"/>
</ItemGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM