dotnet-local-tools by aaronontheweb/dotnet-skills
npx skills add https://github.com/aaronontheweb/dotnet-skills --skill dotnet-local-tools在以下情况下使用此技能:
本地工具是按仓库安装和版本化的 .NET CLI 工具,而非全局安装。它们在 .config/dotnet-tools.json 中定义,并通过 dotnet tool restore 命令恢复。
| 方面 | 全局工具 | 本地工具 |
|---|---|---|
| 安装方式 | dotnet tool install -g | dotnet tool restore |
| 作用范围 | 整个计算机 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 每个仓库 |
| 版本控制 | 手动 | 在 .config/dotnet-tools.json 中 |
| CI/CD | 必须安装每个工具 | 单个恢复命令 |
| 冲突 | 可能存在版本冲突 | 每个项目隔离 |
# 创建 .config/dotnet-tools.json
dotnet new tool-manifest
这将创建:
.config/
└── dotnet-tools.json
# 本地安装一个工具
dotnet tool install docfx
# 安装特定版本
dotnet tool install docfx --version 2.78.3
# 从特定源安装
dotnet tool install MyTool --add-source https://mycompany.pkgs.visualstudio.com/_packaging/feed/nuget/v3/index.json
# 从清单恢复所有工具
dotnet tool restore
{
"version": 1,
"isRoot": true,
"tools": {
"docfx": {
"version": "2.78.3",
"commands": [
"docfx"
],
"rollForward": false
},
"dotnet-ef": {
"version": "9.0.0",
"commands": [
"dotnet-ef"
],
"rollForward": false
},
"incrementalist.cmd": {
"version": "1.2.0",
"commands": [
"incrementalist"
],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": [
"reportgenerator"
],
"rollForward": false
}
}
}
| 字段 | 描述 |
|---|---|
version | 清单架构版本(始终为 1) |
isRoot | 标记此清单为根清单(防止搜索父目录) |
tools | 工具配置字典 |
tools.<name>.version | 要安装的确切版本 |
tools.<name>.commands | 工具提供的 CLI 命令 |
tools.<name>.rollForward | 允许使用更新版本(通常为 false 以保证可重现性) |
# DocFX - API 文档生成器
dotnet tool install docfx
"docfx": {
"version": "2.78.3",
"commands": ["docfx"],
"rollForward": false
}
用法:
dotnet docfx docfx.json
dotnet docfx serve _site
# 用于迁移的 EF Core CLI
dotnet tool install dotnet-ef
"dotnet-ef": {
"version": "9.0.0",
"commands": ["dotnet-ef"],
"rollForward": false
}
用法:
dotnet ef migrations add InitialCreate
dotnet ef database update
# 用于覆盖率报告的 ReportGenerator
dotnet tool install dotnet-reportgenerator-globaltool
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": ["reportgenerator"],
"rollForward": false
}
用法:
dotnet reportgenerator -reports:coverage.cobertura.xml -targetdir:coveragereport -reporttypes:Html
# Incrementalist - 仅构建已更改的项目
dotnet tool install incrementalist.cmd
"incrementalist.cmd": {
"version": "1.2.0",
"commands": ["incrementalist"],
"rollForward": false
}
用法:
# 获取自 main 分支以来受更改影响的项目
incrementalist --branch main
# CSharpier - 固执己见的 C# 格式化工具
dotnet tool install csharpier
"csharpier": {
"version": "0.30.3",
"commands": ["dotnet-csharpier"],
"rollForward": false
}
用法:
dotnet csharpier .
dotnet csharpier --check . # CI 模式 - 如果需要更改则失败
# JB dotnet-inspect(需要许可证)
dotnet tool install jb
"jb": {
"version": "2024.3.4",
"commands": ["jb"],
"rollForward": false
}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- name: Restore tools
run: dotnet tool restore
- name: Build
run: dotnet build
- name: Test with coverage
run: dotnet test --collect:"XPlat Code Coverage"
- name: Generate coverage report
run: dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:coveragereport
- name: Build documentation
run: dotnet docfx docs/docfx.json
steps:
- task: UseDotNet@2
inputs:
useGlobalJson: true
- script: dotnet tool restore
displayName: 'Restore .NET tools'
- script: dotnet build -c Release
displayName: 'Build'
- script: dotnet test -c Release --collect:"XPlat Code Coverage"
displayName: 'Test'
- script: dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:$(Build.ArtifactStagingDirectory)/coverage
displayName: 'Generate coverage report'
# 更新到最新版本
dotnet tool update docfx
# 更新到特定版本
dotnet tool update docfx --version 2.79.0
# 列出本地工具
dotnet tool list
# 列出并检查过时工具
dotnet tool list --outdated
dotnet tool uninstall docfx
isRoot: true防止 MSBuild 在父目录中搜索工具清单:
{
"version": 1,
"isRoot": true,
...
}
使用 "rollForward": false 以保证可重现的构建:
"docfx": {
"version": "2.78.3",
"rollForward": false
}
在使用任何本地工具之前始终运行 dotnet tool restore:
- run: dotnet tool restore
- run: dotnet docfx docs/docfx.json
在 README 中添加注释或部分:
## 开发设置
1. 恢复工具:`dotnet tool restore`
2. 构建:`dotnet build`
3. 测试:`dotnet test`
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "weekly"
# 包含 .config/dotnet-tools.json 中的本地工具
确保从仓库根目录运行:
# 错误 - 从子目录运行
cd src/MyApp
dotnet docfx # 错误:找不到工具
# 正确 - 从解决方案根目录运行
cd ../..
dotnet docfx docs/docfx.json
如果看到版本冲突,请检查:
dotnet tool list -g.config/dotnet-tools.json# 清除 NuGet 工具缓存
dotnet nuget locals all --clear
# 重新恢复工具
dotnet tool restore
{
"version": 1,
"isRoot": true,
"tools": {
"docfx": {
"version": "2.78.3",
"commands": ["docfx"],
"rollForward": false
},
"dotnet-ef": {
"version": "9.0.0",
"commands": ["dotnet-ef"],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": ["reportgenerator"],
"rollForward": false
},
"csharpier": {
"version": "0.30.3",
"commands": ["dotnet-csharpier"],
"rollForward": false
},
"incrementalist.cmd": {
"version": "1.2.0",
"commands": ["incrementalist"],
"rollForward": false
}
}
}
开发工作流程:
# 初始设置
dotnet tool restore
# 提交前格式化代码
dotnet csharpier .
# 运行带覆盖率的测试
dotnet test --collect:"XPlat Code Coverage"
dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:coverage
# 构建文档
dotnet docfx docs/docfx.json
# 检查哪些项目已更改(适用于大型仓库)
incrementalist --branch main
每周安装次数
91
仓库
GitHub 星标数
488
首次出现
2026年1月29日
安全审计
安装于
claude-code65
codex62
opencode59
github-copilot58
gemini-cli55
kimi-cli53
Use this skill when:
Local tools are .NET CLI tools that are installed and versioned per-repository rather than globally. They're defined in .config/dotnet-tools.json and restored with dotnet tool restore.
| Aspect | Global Tools | Local Tools |
|---|---|---|
| Installation | dotnet tool install -g | dotnet tool restore |
| Scope | Machine-wide | Per-repository |
| Version control | Manual | In .config/dotnet-tools.json |
| CI/CD | Must install each tool | Single restore command |
| Conflicts | Can have version conflicts | Isolated per project |
# Create .config/dotnet-tools.json
dotnet new tool-manifest
This creates:
.config/
└── dotnet-tools.json
# Install a tool locally
dotnet tool install docfx
# Install specific version
dotnet tool install docfx --version 2.78.3
# Install from a specific source
dotnet tool install MyTool --add-source https://mycompany.pkgs.visualstudio.com/_packaging/feed/nuget/v3/index.json
# Restore all tools from manifest
dotnet tool restore
{
"version": 1,
"isRoot": true,
"tools": {
"docfx": {
"version": "2.78.3",
"commands": [
"docfx"
],
"rollForward": false
},
"dotnet-ef": {
"version": "9.0.0",
"commands": [
"dotnet-ef"
],
"rollForward": false
},
"incrementalist.cmd": {
"version": "1.2.0",
"commands": [
"incrementalist"
],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": [
"reportgenerator"
],
"rollForward": false
}
}
}
| Field | Description |
|---|---|
version | Manifest schema version (always 1) |
isRoot | Marks this as the root manifest (prevents searching parent directories) |
tools | Dictionary of tool configurations |
tools.<name>.version | Exact version to install |
tools.<name>.commands | CLI commands the tool provides |
tools.<name>.rollForward |
# DocFX - API documentation generator
dotnet tool install docfx
"docfx": {
"version": "2.78.3",
"commands": ["docfx"],
"rollForward": false
}
Usage:
dotnet docfx docfx.json
dotnet docfx serve _site
# EF Core CLI for migrations
dotnet tool install dotnet-ef
"dotnet-ef": {
"version": "9.0.0",
"commands": ["dotnet-ef"],
"rollForward": false
}
Usage:
dotnet ef migrations add InitialCreate
dotnet ef database update
# ReportGenerator for coverage reports
dotnet tool install dotnet-reportgenerator-globaltool
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": ["reportgenerator"],
"rollForward": false
}
Usage:
dotnet reportgenerator -reports:coverage.cobertura.xml -targetdir:coveragereport -reporttypes:Html
# Incrementalist - build only changed projects
dotnet tool install incrementalist.cmd
"incrementalist.cmd": {
"version": "1.2.0",
"commands": ["incrementalist"],
"rollForward": false
}
Usage:
# Get projects affected by changes since main branch
incrementalist --branch main
# CSharpier - opinionated C# formatter
dotnet tool install csharpier
"csharpier": {
"version": "0.30.3",
"commands": ["dotnet-csharpier"],
"rollForward": false
}
Usage:
dotnet csharpier .
dotnet csharpier --check . # CI mode - fails if changes needed
# JB dotnet-inspect (requires license)
dotnet tool install jb
"jb": {
"version": "2024.3.4",
"commands": ["jb"],
"rollForward": false
}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json
- name: Restore tools
run: dotnet tool restore
- name: Build
run: dotnet build
- name: Test with coverage
run: dotnet test --collect:"XPlat Code Coverage"
- name: Generate coverage report
run: dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:coveragereport
- name: Build documentation
run: dotnet docfx docs/docfx.json
steps:
- task: UseDotNet@2
inputs:
useGlobalJson: true
- script: dotnet tool restore
displayName: 'Restore .NET tools'
- script: dotnet build -c Release
displayName: 'Build'
- script: dotnet test -c Release --collect:"XPlat Code Coverage"
displayName: 'Test'
- script: dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:$(Build.ArtifactStagingDirectory)/coverage
displayName: 'Generate coverage report'
# Update to latest version
dotnet tool update docfx
# Update to specific version
dotnet tool update docfx --version 2.79.0
# List local tools
dotnet tool list
# List with outdated check
dotnet tool list --outdated
dotnet tool uninstall docfx
isRoot: truePrevents MSBuild from searching parent directories for tool manifests:
{
"version": 1,
"isRoot": true,
...
}
Use "rollForward": false for reproducible builds:
"docfx": {
"version": "2.78.3",
"rollForward": false
}
Always run dotnet tool restore before using any local tool:
- run: dotnet tool restore
- run: dotnet docfx docs/docfx.json
Add a comment or section in README:
## Development Setup
1. Restore tools: `dotnet tool restore`
2. Build: `dotnet build`
3. Test: `dotnet test`
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "weekly"
# Includes local tools in .config/dotnet-tools.json
Ensure you're running from the repository root:
# Wrong - running from subdirectory
cd src/MyApp
dotnet docfx # Error: tool not found
# Correct - run from solution root
cd ../..
dotnet docfx docs/docfx.json
If you see version conflicts, check for:
dotnet tool list -g.config/dotnet-tools.json in parent directories# Clear NuGet tool cache
dotnet nuget locals all --clear
# Re-restore tools
dotnet tool restore
{
"version": 1,
"isRoot": true,
"tools": {
"docfx": {
"version": "2.78.3",
"commands": ["docfx"],
"rollForward": false
},
"dotnet-ef": {
"version": "9.0.0",
"commands": ["dotnet-ef"],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.4.1",
"commands": ["reportgenerator"],
"rollForward": false
},
"csharpier": {
"version": "0.30.3",
"commands": ["dotnet-csharpier"],
"rollForward": false
},
"incrementalist.cmd": {
"version": "1.2.0",
"commands": ["incrementalist"],
"rollForward": false
}
}
}
Development workflow:
# Initial setup
dotnet tool restore
# Format code before commit
dotnet csharpier .
# Run tests with coverage
dotnet test --collect:"XPlat Code Coverage"
dotnet reportgenerator -reports:**/coverage.cobertura.xml -targetdir:coverage
# Build documentation
dotnet docfx docs/docfx.json
# Check which projects changed (for large repos)
incrementalist --branch main
Weekly Installs
91
Repository
GitHub Stars
488
First Seen
Jan 29, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code65
codex62
opencode59
github-copilot58
gemini-cli55
kimi-cli53
Lark Skill Maker 教程:基于飞书CLI创建AI技能,自动化工作流与API调用指南
32,800 周安装
图像转视频工具:使用AI模型将静态图片动画化,支持风景、人像、产品等场景
8,000 周安装
DevOps上线计划生成器 - 自动化生产环境变更部署与回滚方案
8,000 周安装
AI产品摄影指南:使用inference.sh CLI生成专业电商产品图片
8,100 周安装
AI新闻简报策划工具 - 使用inference.sh CLI自动化创建高质量行业简报
8,000 周安装
LinkedIn内容创作指南:AI驱动的高互动帖子撰写技巧与结构公式
8,100 周安装
AI Logo设计指南:使用inference.sh CLI快速生成专业Logo与提示词技巧
8,200 周安装
| Allow newer versions (usually false for reproducibility) |