WINUI——移除不需要的语言文件夹

前两年的WINUI项目,项目采用的是非打包的方式进行发布,但发布后发现文件夹中含有除了中文和英文以外的其它语言的文件夹。如下:

 产生了10 来个语言文件夹,这些语言文件夹导致整个项目文件看上去比较混乱。

 

于是一直在想有什么方法可以解决一下这个问题,当下采用的方法是:在生成后,将不需要的语言文件夹进行移除。当然最好的办法是,生成时就不生成这些文件夹,但按AI所提供的方法没有一个成功的,此待后续再试。

 

生成后移除不需要的语言文件夹的操作如下:

1. 编辑项目文件,如下:

 

2.在项目文件中添加下述代码:

  <Target Name="RemoveUnwantedLanguages" AfterTargets="Build">
    <ItemGroup>
      <UnwantedLanguages Include="cs;de;es;fr;it;ja;ko;pl;ru;tr;zh-Hant;pt-BR" />
    </ItemGroup>
    <RemoveDir Directories="@(UnwantedLanguages->'$(OutputPath)%(Identity)')" />
  </Target>

 

保存后再生成即可完全生成完毕时,自动将不需要的语言文件夹删除。

 

以下为在Release模式下,在build时删除不需要的文件:

  <!--build时删除文件-->
  <Target Name="CleanReleaseFolders" AfterTargets="Build">
    <!-- 仅在 Release 模式下执行 -->
    <PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <ReleaseMode>true</ReleaseMode>
    </PropertyGroup>
    <!-- 匹配 Logs 、 DataBase和Data 文件夹下的所有文件 -->
    <ItemGroup Condition="'$(ReleaseMode)' == 'true'">
      <FilesToDelete Include="$(OutputPath)Logs\**\*" />
      <FilesToDelete Include="$(OutputPath)DataBase\**\*" />
      <FilesToDelete Include="$(OutputPath)Data\Series\**\*" />
    </ItemGroup>

    <Delete Files="@(FilesToDelete)" Condition="'$(ReleaseMode)' == 'true'" />
  </Target>

 

 

下述代码实现的是copy 一个文件夹下当天创建的文件到需要的文件夹下:

<UsingTask TaskName="FilterFilesByDate" TaskFactory="RoslynCodeTaskFactory" 
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
    <ParameterGroup>
      <Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
      <Today ParameterType="System.String" Required="true" />
      <FilteredFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
    </ParameterGroup>
    <Task>
      <Using Namespace="System.IO"/>
      <Code Type="Fragment" Language="cs">
        <![CDATA[
        FilteredFiles = Files
          .Where(file => File.GetCreationTime(file.ItemSpec).ToString("yyyy-MM-dd") == Today)
          .ToArray();
        ]]>
      </Code>
    </Task>
  </UsingTask>

  <Target Name="CopyTodayFiles" AfterTargets="Build">
    <PropertyGroup>
      <SourceDir>F:\SegmentDll\LIP\new_LIP_dll\pad\</SourceDir>
      <TargetDir>$(OutputPath)dll\Segment3\</TargetDir>
      <Today>$([System.DateTime]::Now.ToString("yyyy-MM-dd"))</Today>
    </PropertyGroup>

    <ItemGroup>
      <AllFiles Include="$(SourceDir)*.*"/>
    </ItemGroup>

    <FilterFilesByDate Files="@(AllFiles)" Today="$(Today)">
      <Output TaskParameter="FilteredFiles" ItemName="FilesToCopy"/>
    </FilterFilesByDate>

    <MakeDir Directories="$(TargetDir)"/>
    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(TargetDir)" SkipUnchangedFiles="true"/>
  </Target>

 

posted @ 2025-06-06 12:36  盛沧海  阅读(36)  评论(0)    收藏  举报