dotnet publish doesn't include files generated during post build event

Mis*_*tyK 4 .net c# asp.net asp.net-web-api

Here is part of my A.csproj:

 <ItemGroup>
    <Content Include="..\..\Payloads\**\*.*">
      <Link>Payloads\%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>None</CopyToOutputDirectory>
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </Content>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

Payloads directory is created in a project B which is referenced from project A

B.csproj

 <PropertyGroup>
    <PostBuildEvent>
      xcopy /I /S /R /Y /d $(TargetDir)*.* $(SolutionDir)Payloads\Content
    </PostBuildEvent>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

Payloads directory doesn't exist in publish directory when I run dotnet publish

Info

dotnet SDK version 2.0, ASP.NET Core 2.0 on .NET 461 framework
Run Code Online (Sandbox Code Playgroud)

It seems like publish content is calculated before the build. When I run dotnet publish if Payloads exists it is deployed correctly. This is just simplified example of my projects. How can I fix this?

Mis*_*tyK 5

我更换了

 <ItemGroup>
    <Content Include="..\..\Payloads\**\*.*">
      <Link>Payloads\%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>None</CopyToOutputDirectory>
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </Content>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

 <Target Name="AddPayloadsFolder" AfterTargets="AfterPublish">
        <PropertyGroup>
          <PayloadsDirectory>$(SolutionDir)Payloads</PayloadsDirectory>
        </PropertyGroup>
        <Exec Command="xcopy.exe /I /S /R /Y /d $(PayloadsDirectory) $(PublishDir)Payloads" Condition="!Exists('$(PublishDir)Payloads')" />
        <Exec Command="xcopy.exe /I /S /R /Y /d $(PayloadsDirectory) $(PublishUrl)Payloads" Condition="!Exists('$(PublishUrl)Payloads')" />
      </Target>
Run Code Online (Sandbox Code Playgroud)

带有 PublishUrl 的版本适用于 Visual Studio。它使用它是为了兼容性。