发布时从第 3 方 Blazor 库中选择 wwwroot/_content/ 个文件

Pick wwwroot/_content/ files from 3rd party Blazor library when publishing

我有一个 ASP.NET 核心 5 项目,它引用了一些第 3 方 Blazor 库。

当我发布项目时,它在 $publishDir/wwwroot/_content/LiraryName/ 文件夹中包含大量静态资产文件,这会减慢部署速度。我不需要全部。

是否可以配置发布时应跳过哪些文件?

有一个更简单的方法:

只需使用这些:

  <ItemGroup>
    
    <Content Update="wwwroot\_content\LiraryName\*.*">   
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </Content>

  </ItemGroup>

使用前,请先删除publish文件夹。

================

更新 1

方案一

1)在nuget包引用节点中添加GeneratePathProperty="true"生成msbuild属性PkgBlazored_Toast访问nuget的内容包装如下:

<ItemGroup>
    <PackageReference Include="Blazored.Toast" Version="3.1.2" GeneratePathProperty="true" />
</ItemGroup>

2) 添加:

 <Target Name="RemoveTheFiles"  AfterTargets="ComputeFilesToPublish">-->
  <ItemGroup> 
    <ResolvedFileToPublish Remove="$(PkgBlazored_Toast)\staticwebassets\*.*"></ResolvedFileToPublish>
  </ItemGroup>
  </Target>

,首先,删除之前的发布文件夹,然后运行发布。

方案二

1)使用Delete任务:

<Target Name="RemoveTheFiles" AfterTargets="AfterPublish">
    <PropertyGroup>
      <Folder>$(PublishUrl)wwwroot\_content</Folder>
    </PropertyGroup>
    <RemoveDir Directories="$(Folder)"></RemoveDir>
 </Target>

我有我的 NPM 文件夹 --> NpmJS 在 wwwroot 里面 像这样编辑 csproj 文件: 很有魅力。

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
  <Exec Command="npm install" WorkingDirectory="wwwroot\NpmJS" />
  <Exec Command="npm run build" WorkingDirectory="wwwroot\NpmJS" />
</Target>