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

为dotnet new模板添加排除测试项目的符号开关

实现dotnet new模板排除测试项目文件夹的方法

1. 完善template.json中的符号配置

确保notests符号的定义支持开关别名、默认值,让用户可以通过--notests或-notest触发:

{
  "symbols": {
    "notests": {
      "type": "parameter",
      "datatype": "bool",
      "defaultValue": false,
      "description": "排除单元测试项目",
      "aliases": [
        {
          "name": "notest",
          "description": "排除单元测试项目的短别名"
        }
      ]
    }
  }
}

2. 配置文件夹的条件生成规则

在template.json的files节点中,针对IniConsole.Test文件夹添加条件判断,仅当notests为false时才生成该文件夹:

{
  "files": [
    {
      "path": "IniConsole",
      "condition": "true" // 始终生成控制台项目
    },
    {
      "path": "IniConsole.Test",
      "condition": "!notests" // 仅当未指定--notests时生成测试文件夹
    },
    {
      "path": "IniConsole.sln",
      "condition": "true" // 始终生成解决方案文件
    }
  ]
}

或者用更简洁的通配符排除写法,当notests为true时自动排除测试文件夹及所有内容:

{
  "exclude": [
    "**/IniConsole.Test/**/*",
    "**/IniConsole.Test"
  ],
  "excludeCondition": "notests"
}

3. 处理解决方案文件的条件项目节点

在IniConsole.sln中用条件注释包裹测试项目相关节点,确保指定--notests时sln中不包含测试项目:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IniConsole", "IniConsole\IniConsole.csproj", "{YOUR-CONSOLE-GUID}"
EndProject
#if !notests
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IniConsole.Test", "IniConsole.Test\IniConsole.Test.csproj", "{YOUR-TEST-GUID}"
EndProject
#endif
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    // 其他全局配置...
#if !notests
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {YOUR-TEST-GUID}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {YOUR-TEST-GUID}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {YOUR-TEST-GUID}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {YOUR-TEST-GUID}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
#endif
EndGlobal

4. 本地验证模板

打包前先本地测试:

  • 将模板文件夹放到%USERPROFILE%\.templateengine\packages(Windows)或~/.templateengine/packages(Linux/macOS)
  • 运行dotnet new <你的模板名> --notests,检查生成目录是否无IniConsole.Test文件夹,sln中也无测试项目
  • 不带--notests运行,确认两个项目正常生成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:23:18