You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为自定义dotnet new模板的aks参数添加正则格式校验?

解决方案:通过自定义模板脚本实现参数格式校验

Dotnet new模板的原生template.json参数定义确实没有内置的正则校验功能,但你可以通过**自定义C#脚本(.csx)**来实现aks参数的lower-kebab-case格式强制校验,当输入不符合规则时直接终止模板创建并抛出清晰的错误提示。

下面是具体的实现步骤:


1. 创建参数校验脚本

在你的模板项目的.template.config文件夹下,新建一个名为ValidateParameters.csx的C#脚本,内容如下:

using System;
using System.Text.RegularExpressions;

// 从模板上下文获取传入的aks参数值
var aksParamValue = Context.Parameters["aks"];

// 定义lower-kebab-case的正则规则:仅允许小写字母、数字,用连字符分隔,不能以连字符开头/结尾
var validKebabCasePattern = new Regex(@"^[a-z0-9]+(-[a-z0-9]+)*$");

if (!validKebabCasePattern.IsMatch(aksParamValue))
{
    throw new InvalidOperationException(
        $"错误:参数 'aks' 必须符合lower-kebab-case格式(示例:my-awesome-api-123)。当前输入值:{aksParamValue}"
    );
}

2. 修改template.json引入脚本

打开.template.config/template.json,添加preActions配置,让模板在生成文件之前执行这个校验脚本:

{
  // 保留你原有的模板配置(如name, shortName等)
  "preActions": [
    {
      "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
      "args": {
        "scriptPath": ".template.config/ValidateParameters.csx"
      },
      "continueOnError": false
    }
  ],
  "parameters": {
    "aks": {
      "type": "parameter",
      "datatype": "string",
      "replaces": "blipapitemplate",
      "isRequired": true,
      "fileRename": "blipapitemplate"
    }
    // 其他参数配置...
  }
}
  • actionId是dotnet模板内置的执行CSX脚本的固定ID,无需修改
  • continueOnError: false确保校验失败时直接终止模板创建,不会生成不符合要求的文件

3. 测试效果

当用户输入不符合lower-kebab-case格式的值时(比如MyApi、my_api、My-Api),模板会立即抛出错误并终止:

Error: 错误:参数 'aks' 必须符合lower-kebab-case格式(示例:my-awesome-api-123)。当前输入值:MyApi

只有输入符合规则的值(比如my-api、user-service-v2)时,模板才会正常生成项目。


这个方案是官方支持的模板扩展方式,你可以根据需要扩展脚本逻辑,实现更复杂的参数校验规则。

内容的提问来源于stack exchange,提问作者Lucas Mundim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:32:51