Agent Skills
› nixopus/nixopus
› dotnet-deploy
dotnet-deploy
GitHub提供.NET应用构建与部署指南,涵盖版本检测、Dockerfile模板及优化策略。
Trigger Scenarios
检测到.csproj文件
需要构建或发布.NET项目
Install
npx skills add nixopus/nixopus --skill dotnet-deploy -g -y
SKILL.md
Frontmatter
{
"name": "dotnet-deploy",
"metadata": {
"version": "1.0"
},
"description": "Build and deploy .NET applications — ASP.NET Core, version detection, self-contained builds, and Dockerfile patterns. Use when deploying a .NET or C# project, or when a .csproj file is detected."
}
.NET Deployment
Detection
Project is .NET if a *.csproj file exists in the root.
Versions
*.csproj→TargetFramework(e.g.net8.0)global.json→sdk.version- Defaults to 8.0
Build
Build Process
- Restore:
dotnet restore - Publish:
dotnet publish --no-restore -c Release -o out - Output:
./out/<project_name>.dllor./out/<project_name>.exe
Start Command
./out/<project_name>ordotnet ./out/<project_name>.dll- Project name from
*.csprojfilename (e.g.MyApp.csproj→MyApp)
Port Binding
ASPNETCORE_URLS=http://0.0.0.0:${PORT:-3000}
Ensures the app listens on all interfaces.
Runtime Packages
| Package | Purpose |
|---|---|
libicu-dev |
Internationalization support |
Framework Detection
| Signal | Framework |
|---|---|
Microsoft.AspNetCore.App |
ASP.NET Core |
Microsoft.NET.Sdk.Web |
Web SDK |
Microsoft.NET.Sdk.Worker |
Worker service |
Microsoft.NET.Sdk |
Console / class library |
Install Stage Optimization
Copy project files first for layer caching:
*.csproj,*.slnglobal.json,nuget.config,Directory.Build.props,Directory.Packages.props- Then
src/
Caching
RUN --mount=type=cache,target=/root/.nuget/packages \
dotnet restore
Base Images
| Stage | Image |
|---|---|
| Build | mcr.microsoft.com/dotnet/sdk:8.0 or mcr.microsoft.com/dotnet/sdk:8.0-alpine |
| Runtime | mcr.microsoft.com/dotnet/aspnet:8.0 or mcr.microsoft.com/dotnet/runtime:8.0 |
Use ASP.NET runtime for web apps; runtime for console/worker.
Dockerfile Patterns
ASP.NET Core
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . .
RUN dotnet publish --no-restore -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/out .
ENV ASPNETCORE_URLS=http://0.0.0.0:3000
EXPOSE 3000
ENTRYPOINT ["dotnet", "MyApp.dll"]
Multi-project (sln)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY *.sln ./
COPY src/ ./src/
RUN dotnet restore
RUN dotnet publish src/MyApp/MyApp.csproj --no-restore -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/out .
ENV ASPNETCORE_URLS=http://0.0.0.0:3000
EXPOSE 3000
ENTRYPOINT ["dotnet", "MyApp.dll"]
Self-contained (single binary)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . .
RUN dotnet publish --no-restore -c Release -o out -r linux-x64 --self-contained true -p:PublishSingleFile=true
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0
WORKDIR /app
COPY --from=build /app/out .
ENV ASPNETCORE_URLS=http://0.0.0.0:3000
EXPOSE 3000
ENTRYPOINT ["./MyApp"]
Version History
- cf05d97 Current 2026-08-20 14:51


