如何修改csproj PublishRunWebpack以包含来自外部目录的静态文件

问题描述 投票:0回答:1

我已经开始使用ASP.NET核心Web应用程序 - > Angular SPA,但我已将角度应用程序移动到csproj之外的单独存储库。

所以我的文件夹结构如下所示:

frontend
  dist

backend
  wwwroot
  backend.csproj

现在我想修改csproj,以便将frontend/dist/**/*.*发布到$(outputDirecory)/ClientApp/dist/**/*.*

我应该如何修改PublishRunWebpack目标来复制这些文件:

  <PropertyGroup>
    <SpaRoot>../Frontend</SpaRoot>
  </PropertyGroup>

  <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
      <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
      <!-- Include the newly-built files in the publish output -->
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">


        <!-- THIS NEEDS TO BE CHANGED (I guess) -->
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>
angular iis asp.net-core webdeploy asp-net-core-spa-services
1个回答
0
投票

根据您的描述,我发现前端文件夹不会复制到PubTmp \ Out文件夹。这意味着forentend spa应用程序不会复制到发布文件夹。

我建议您可以尝试创建一个新目标,将forentend dist文件夹复制到publish out文件夹。

更多细节,您可以参考以下代码:

      <Target Name="PublishRunWebpack" AfterTargets="CopyFileToOutput">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
      <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
      <DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>
  <Target  Name="CopyFileToOutput"  AfterTargets="ComputeFilesToPublish">
    <ItemGroup>
      <_CopyItems Include="obj\Release\netcoreapp2.2\PubTmp\Frontend\**\*.*" />
    </ItemGroup>
    <Copy
    SourceFiles="@(_CopyItems)"
    DestinationFolder="obj\Release\netcoreapp2.2\PubTmp\Out\Frontend\dist"
    />
  </Target>
© www.soinside.com 2019 - 2024. All rights reserved.