{
  "$schema": "http://json.schemastore.org/template",
  "identity": "BenchmarkDotNet.BenchmarkProjectTemplate.VB",
  "name": "Benchmark Project",
  "shortName": "benchmark",
  "groupIdentity": "BenchmarkDotNet",
  "classifications": [
    "Benchmark",
    "Library"
  ],
  "precedence": "3000",
  "tags": {
    "language": "VB",
    "type": "project"
  },
  "description": "A project template for creating benchmarks.",
  "author": ".NET Foundation and contributors",
  "generatorVersions": "[1.0.0.0-*)",

  "sourceName": "_BenchmarkProjectName_",
  "preferNameDirectory": true,
  "defaultName": "BenchmarkSuite",
  "symbols": {
    "benchmarkName": {
      "type": "parameter",
      "datatype": "string",
      "description": "The name of the benchmark class.",
      "defaultValue": "Benchmarks",
      "FileRename": "_BenchmarkName_",
      "replaces": "$(BenchmarkName)"
    },
    "framework": {
      "type": "parameter",
      "description": "The target framework for the project.",
      "datatype": "choice",
      "choices": [
        {
          "choice": "net8.0",
          "description": ".NET 8"
        },
        {
          "choice": "net7.0",
          "description": ".NET 7"
        },
        {
          "choice": "net6.0",
          "description": ".NET 6"
        },
        {
          "choice": "netstandard2.1",
          "description": ".NET Standard 2.1"
        },
        {
          "choice": "netstandard2.0",
          "description": ".NET Standard 2.0"
        },
        {
          "choice": "net481",
          "description": ".NET Framework 4.8.1"
        },
        {
          "choice": "net48",
          "description": ".NET Framework 4.8"
        },
        {
          "choice": "net472",
          "description": ".NET Framework 4.7.2"
        },
        {
          "choice": "net471",
          "description": ".NET Framework 4.7.1"
        },
        {
          "choice": "net47",
          "description": ".NET Framework 4.7"
        },
        {
          "choice": "net462",
          "description": ".NET Framework 4.6.2"
        }
      ],
      "defaultValue": ""
    },
    "frameworkDefault": {
      "type": "generated",
      "generator": "switch",
      "description": "generate a default framework value based on consoleApp",
      "parameters": {
        "evaluator": "C++",
        "datatype": "string",
        "cases": [
          {
            "condition": "(consoleApp == true)",
            "value": "net8.0"
          },
          {
            "condition": "(consoleApp == false)",
            "value": "netstandard2.0"
          }
        ]
      }
    },
    "frameworkValue": {
      "type": "generated",
      "generator": "coalesce",
      "parameters": {
        "sourceVariableName": "framework",
        "fallbackVariableName": "frameworkDefault"
      },
      "replaces": "$(Framework)"
    },
    "config": {
      "type": "parameter",
      "datatype": "bool",
      "description": "Adds a benchmark config class.",
      "defaultValue": "false"
    },
    "skipRestore": {
      "type": "parameter",
      "datatype": "bool",
      "description": "If specified, skips the automatic restore of the project on create.",
      "defaultValue": "false"
    },
    "consoleApp": {
      "type": "parameter",
      "datatype": "bool",
      "description": "If specified, the project is set up as console app.",
      "defaultValue": "true"
    },
    "version": {
      "type": "parameter",
      "datatype": "string",
      "description": "Version of BenchmarkDotNet that will be referenced.",
      "defaultValue": "0.14.1",
      "replaces": "$(BenchmarkDotNetVersion)"
    }
  },
  "sources": [
    {
      "source": "./",
      "target": "./",
      "exclude": [
        ".template.config/**"
      ],
      "modifiers": [
        {
          "condition": "(!config)",
          "exclude": [
            "BenchmarkConfig.vb"
          ]
        },
        {
          "condition": "(!consoleApp)",
          "exclude": [
            "Program.vb"
          ]
        }
      ]
    }
  ],
  "primaryOutputs": [
    {
      "path": "_BenchmarkProjectName_.vbproj"
    }
  ],
  "postActions": [
    {
      "condition": "(!skipRestore)",
      "description": "Restore NuGet packages required by this project.",
      "manualInstructions": [
        {
          "text": "Run 'dotnet restore'"
        }
      ],
      "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
      "continueOnError": true
    }
  ]
}