复制到预构建事件的发布目录输出

时间:2019-02-14 19:34:46

标签: asp.net-core msbuild csproj

在我的csproj中,我有一个预构建事件,在该事件中运行Vue js项目的构建。它输出到“ dist”文件夹,并由cshtml文件加载。

在csproj文件中,我引用了dist文件夹,并告诉它复制到发布目录:

<ItemGroup>
  <Content Include="dist\**" CopyToPublishDirectory="Always" />
</ItemGroup>

在发布时,MsBuild似乎正在尝试复制预构建事件开始之前存在的dist文件夹中的文件。有没有办法让MsBuild在预构建事件之后复制文件夹的内容?

2 个答案:

答案 0 :(得分:2)

为了支持工具(VS等)支持的所有可能的发布机制,我建议将其设置为类似于内置角度模板的工作方式:

<Target Name="PublishDistFiles" AfterTargets="ComputeFilesToPublish">
  <ItemGroup>
    <DistFiles Include="dist\**" />
    <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
      <RelativePath>%(DistFiles.Identity)</RelativePath>
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </ResolvedFileToPublish>
  </ItemGroup>
</Target>

答案 1 :(得分:0)

您可以添加一个步骤来使用Copy task

手动进行操作
<Target Name="MyCopyStep" AfterTargets="AfterPublish">
  <ItemGroup>
     <MyDistFiles Include="dist\**" />
  </ItemGroup>
  <Copy SourceFiles="@(MyDistFiles)" DestinationFiles="@(MyDistFiles->'$(PublishDir)\dist\%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>