簡體   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