AgentSkillsCN

dotnet-enable-testing-platform

在 global.json 中启用 Microsoft 测试平台运行器。适用于当用户希望启用或迁移至全新的 .NET 测试平台时使用。

SKILL.md
--- frontmatter
name: dotnet-enable-testing-platform
description: Enables the Microsoft Testing Platform runner in global.json. Use when the user wants to enable or migrate to the new .NET testing platform.
license: MIT
metadata:
  author: Im5tu
  version: "1.0"
  repositoryUrl: https://github.com/im5tu/dotnet-skills
allowed-tools: Bash(dotnet:*) Read Glob AskUserQuestion

Enable the Microsoft Testing Platform runner for a .NET solution by configuring global.json.

The Microsoft Testing Platform is a modern, extensible test runner that provides improved performance, better diagnostics, and native support for parallel test execution.

Steps

  1. Find the solution file (*.sln) in the current directory

    • If no .sln found, warn and stop
  2. Check for existing global.json in the solution root directory

    • Read contents if file exists
  3. Create or update global.json:

    • If file does not exist, create it:
      json
      {
        "test": {
          "runner": "Microsoft.Testing.Platform"
        }
      }
      
    • If file exists, merge the test section while preserving all other content:
      • Parse existing JSON
      • Add or update the test.runner property
      • Preserve sdk, msbuild-sdks, and any other existing sections
  4. Verify JSON validity:

    bash
    dotnet build
    dotnet test
    
  5. If build fails, report the error and ask user how to proceed

  6. Report results:

    • Confirm global.json was created or updated
    • Show the final global.json content
    • Confirm build status
    • Confirm tests run successfully

Example global.json Configurations

Minimal (new file):

json
{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Merged (existing file with SDK pinning):

json
{
  "sdk": {
    "version": "8.0.100",
    "rollForward": "latestMinor"
  },
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Error Handling

  • If no .sln found: warn and stop
  • If global.json exists but is invalid JSON: report error and ask user
  • If build fails after update: show errors and ask user how to proceed