项目模板打包

执行脚本installPackage.ps1将打包并在本地安装项目模板。

关于打包的行为,在模板项目Pack.csproj中有明确的定义,排除了一些不必要的文件和目录,以下详细说明模板项目打包相关的内容。

项目配置

模板项目在src/Template目录下,包含了一个Pack.csproj文件,主要用来配置打包的内容,如:

<PropertyGroup>
        <!-- 定义通用排除模式 -->
        <CommonExcludes>**\bin\**;**\obj\**;**\.vs\**</CommonExcludes>
        <NodeExcludes>**\node_modules\**;**\.angular\**;**\*.lock</NodeExcludes>
        <SpecialExcludes>templates\ApiStandard\src\Definition\EntityFramework\DBProvider\ModuleContextBase.cs</SpecialExcludes>
        <EntityExcludes>templates\ApiStandard\src\Definition\Entity\*\*</EntityExcludes>
    </PropertyGroup>
    <ItemGroup>
        <!-- 定义排除模式数组 -->
        <ExcludePatterns Include="$(CommonExcludes)" />
        <ExcludePatterns Include="$(NodeExcludes)" />
        <ExcludePatterns Include="$(SpecialExcludes)" />
        <ExcludePatterns Include="$(EntityExcludes)" />
        <ExcludePatterns Include="templates\**\src\Modules\**" />
        <ExcludePatterns Include="templates\**\.tmp\**" />
    </ItemGroup>
    <ItemGroup>
        <Content Include="templates\ApiStandard\**\*" Exclude="@(ExcludePatterns)" />
        <Content Include="templates\ApiStandard\src\Modules\CommonMod\**"
            Exclude="**\bin\**;**\obj\**" />
        <Content Include="templates\ApiStandard\src\Modules\SystemMod\**"
            Exclude="**\bin\**;**\obj\**" />
        <Content Include="templates\ApiStandard\src\Definition\Entity\SystemMod\**"/>
        <Compile Remove="**\*" />
    </ItemGroup>

主要是排除了bin/obj/node_modules/.angluar等不必要的目录和文件,对于模块内容,只保留了CommonModSystemMod模块,作为解决方案默认的代码内容。

项目模块说明

模板项目包含了多个模块,通常一个模块项目包括:

  • Models
  • Managers
  • Worker
  • Controllers
  • ModuleExtensions.cs

这些模块同时依赖:

  • 实体
  • EFCore DbContext

模板打包处理

默认模板只保留CommonMod和SystemMod相关的内容,其他不包含,这要求:

  • 移除其他模块
  • 移除其他模块对应的实体
  • 移除ModuleDbContext

模块内容打包处理

模块已经被从模板中移除了,但需要将模块内容单独打包成template.zip,以支持后续可以选择要集成的模块。 要打包的内容:

  • 实体类
  • 模块目录

打包脚本为PackModules.ps1,执行后会生成template.zip文件,作为工具的资源文件。

前端打包处理

  • Angular前端项目默认被打包进项目模板。
  • 使用dotnet模板选项来确定是否需要。