dotnet-exec
Intro
dotnet-exec
is a command-line tool for executing C# program without a project file, and you can have your custom entry point other than the Main
method
Slides:
- Makes C# more simple -- .NET Conf China 2022
- dotnet-exec simpler C# -- .NET Conf China 2023 Watch Party Shanghai
Github Action for executing without dotnet environment
Install/Update
dotnet tool
Latest stable version:
dotnet tool update -g dotnet-execute
Latest preview version:
dotnet tool update -g dotnet-execute --prerelease
Install failed? try the command below:
dotnet tool update -g dotnet-execute --prerelease --add-source https://api.nuget.org/v3/index.json --ignore-failed-sources
Container support
Execute with docker
docker run --rm weihanli/dotnet-exec:latest "1+1"
docker run --rm weihanli/dotnet-exec:latest "Guid.NewGuid()"
docker run --rm --pull=always weihanli/dotnet-exec:latest "ApplicationHelper.RuntimeInfo"
Execute with podman
podman run --rm weihanli/dotnet-exec:latest "1+1"
podman run --rm weihanli/dotnet-exec:latest "Guid.NewGuid()"
podman run --rm --pull=always weihanli/dotnet-exec:latest "ApplicationHelper.RuntimeInfo"
for the full image tag list, see https://hub.docker.com/r/weihanli/dotnet-exec/tags
Examples
Get started
Execute local file:
dotnet-exec HttpPathJsonSample.cs
Execute a local file with custom entry point:
dotnet-exec 'HttpPathJsonSample.cs' --entry MainTest
Execute remote file:
dotnet-exec https://github.com/WeihanLi/SamplesInPractice/blob/master/net7Sample/Net7Sample/ArgumentExceptionSample.cs
Execute raw code:
dotnet-exec 'Console.WriteLine(1+1);'
Execute the raw script:
dotnet-exec '1 + 1'
dotnet-exec 'Guid.NewGuid()'
References
Execute raw code with custom references:
NuGet package reference:
dotnet-exec 'CsvHelper.GetCsvText(new[]{1,2,3}).Dump();' -r "nuget: WeihanLi.Npoi,2.5.0" -u "WeihanLi.Npoi"
Local dll reference:
dotnet-exec 'CsvHelper.GetCsvText(new[]{1,2,3}).Dump();' -r "./out/WeihanLi.Npoi.dll" -u "WeihanLi.Npoi"
Local dll in a folder references:
dotnet-exec 'CsvHelper.GetCsvText(new[]{1,2,3}).Dump();' -r "folder: ./out" -u "WeihanLi.Npoi"
Local project reference:
dotnet-exec 'CsvHelper.GetCsvText(new[]{1,2,3}).Dump();' -r "project: ./WeihanLi.Npoi.csproj" -u "WeihanLi.Npoi"
Framework reference:
dotnet-exec 'WebApplication.Create().Run();' --reference 'framework:web'
Web framework reference in one option:
dotnet-exec 'WebApplication.Create().Run();' --web
Usings
Execute raw code with custom usings:
dotnet-exec 'WriteLine(1+1);' --using "static System.Console"
Execute script with custom reference:
dotnet-exec 'CsvHelper.GetCsvText(new[]{1,2,3}).Dump()' -r "nuget:WeihanLi.Npoi,2.5.0" -u WeihanLi.Npoi
More
Execute with additional dependencies
dotnet-exec 'typeof(LocalType).FullName.Dump();' --ad FileLocalType2.cs
dotnet-exec 'typeof(LocalType).FullName.Dump();' --addition FileLocalType2.cs
Execute with exacting references and usings from the project file
dotnet-exec 'typeof(LocalType).FullName.Dump();' --project ./Sample.csproj
Execute file with preview features:
dotnet-exec RawStringLiteral.cs --preview