【问题标题】:Pick wwwroot/_content/ files from 3rd party Blazor library when publishing发布时从 3rd 方 Blazor 库中选择 wwwroot/_content/ 文件
【发布时间】:2021-03-02 19:26:25
【问题描述】:

我有一个引用一些 3rd 方 Blazor 库的 ASP.NET core 5 项目。

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

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

【问题讨论】:

  • 您是否尝试使用构建后脚本删除文件?
  • 不,希望可以通过编辑csproj来阻止发布
  • 也许使用``` wwwroot/_content/LiraryName/;wwwroot/_content/LiraryName2/wwwroot/_content/LiraryName/file1.js在宿主项目的发布配置文件 XML (.pubxml) 中。能帮到你吗?

标签: visual-studio asp.net-core msbuild blazor .net-5


【解决方案1】:

有一个更简单的方法:

只需使用这些:

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

  </ItemGroup>

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

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

更新 1

解决方案一

1)GeneratePathProperty="true" 添加到nuget 包引用节点,生成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>

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

解决方案二

1)使用Delete任务:

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

【讨论】:

  • 不幸的是,这对我不起作用。我试过 Blazored.Toast 包参考和&lt;Content Update="wwwroot\_content\**\*.*"&gt;,但它已经发布了。是因为这些文件来自不同的程序集并且编辑我的 .csproj 确实会影响这些文件吗?
  • 感谢分享 nuget 包,这是关键。由于文件是由 nuget 包按照自己的规则导入的,并且文件不包含在解决方案资源管理器中,因此第一个建议(适用于解决方案资源管理器上的内容)不适用于它。我建议你使用另一种方式。见我的update 1
  • 更新 1,解决方案一不起作用(至少在 .NET 6 中)。 ResolvedFileToPublish 中不包含静态网络资产
【解决方案2】:

我有我的 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>

【讨论】:

  • 不要破坏自己的帖子。如果要删除它,请删除它。即使在删除后,一些用户(获得特权)也能看到它。
猜你喜欢
  • 2015-07-27
  • 2020-10-03
  • 2020-07-15
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
相关资源
最近更新 更多