dotnet-script 开源项目教程
dotnet-scriptRun C# scripts from the .NET CLI.项目地址:https://gitcode.com/gh_mirrors/do/dotnet-script
1. 项目的目录结构及介绍
dotnet-script 项目的目录结构如下:
dotnet-script/
├── .github/
├── .vscode/
├── assets/
├── build/
├── docs/
├── samples/
├── src/
│ ├── Dotnet.Script.Core/
│ ├── Dotnet.Script.DependencyModel/
│ ├── Dotnet.Script.DependencyModel.NuGet/
│ ├── Dotnet.Script.DependencyModel.Project/
│ ├── Dotnet.Script.DependencyModel.Runtime/
│ ├── Dotnet.Script.Emitter/
│ ├── Dotnet.Script.Execution/
│ ├── Dotnet.Script.NuGetMetadataResolver/
│ ├── Dotnet.Script.Package/
│ ├── Dotnet.Script.Tests/
│ ├── Dotnet.Script.Tests.EndToEnd/
│ ├── Dotnet.Script.Tests.Integration/
│ ├── Dotnet.Script.Tests.Unit/
│ ├── Dotnet.Script.Tool/
│ ├── Dotnet.Script.Web/
│ ├── Dotnet.Script.Worker/
├── .gitignore
├── .travis.yml
├── build.cake
├── build.ps1
├── build.sh
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── script.cake
├── script.ps1
├── script.sh
├── version.json
主要目录介绍:
- .github/: 包含 GitHub 相关的配置文件。
- .vscode/: 包含 Visual Studio Code 的配置文件。
- assets/: 包含项目所需的资源文件。
- build/: 包含构建脚本和相关文件。
- docs/: 包含项目文档。
- samples/: 包含示例代码。
- src/: 包含项目的源代码,分为多个子项目,每个子项目负责不同的功能模块。
2. 项目的启动文件介绍
dotnet-script 项目的启动文件位于 src/Dotnet.Script.Tool/Program.cs
。这个文件是整个工具的入口点,负责初始化和启动 dotnet-script 工具。
using System;
using System.Threading.Tasks;
using Dotnet.Script.Core;
using Dotnet.Script.DependencyModel.Context;
using Dotnet.Script.DependencyModel.Logging;
using Dotnet.Script.DependencyModel.Runtime;
using Dotnet.Script.Execution;
using Microsoft.Extensions.CommandLineUtils;
namespace Dotnet.Script.Tool
{
public class Program
{
public static async Task<int> Main(string[] args)
{
var app = new CommandLineApplication
{
Name = "dotnet-script",
Description = "Executes C# scripts."
};
app.HelpOption("-?|-h|--help");
var file = app.Argument("[script]", "The path to the script file.");
var debug = app.Option("-d|--debug", "Enable debug mode.", CommandOptionType.NoValue);
var configuration = app.Option("-c|--configuration", "The configuration to use for the script.", CommandOptionType.SingleValue);
var noCache = app.Option("--no-cache", "Disable caching of NuGet packages.", CommandOptionType.NoValue);
var logLevelOption = app.Option("--loglevel", "The log level to use.", CommandOptionType.SingleValue);
app.OnExecute(async () =>
{
var logLevel = LogLevel.Error;
if (logLevelOption.HasValue())
{
logLevel = (LogLevel)Enum.Parse(typeof(LogLevel), logLevelOption.Value(), true);
}
var logger = new ScriptLogger(logLevel);
var runtimeDependencyResolver = new RuntimeDependencyResolver(logger);
var scriptExecutor = new ScriptExecutor(logger, runtimeDependencyResolver);
var scriptContext = new ScriptContext
{
File = file.Value,
Debug = debug.HasValue(),
Configuration = configuration.Value(),
NoCache = noCache.HasValue()
};
return await scriptExecutor.Execute(scriptContext);
});
return await app.Execute(args);
}
}
}
3. 项目的配置文件介绍
dotnet-script
dotnet-scriptRun C# scripts from the .NET CLI.项目地址:https://gitcode.com/gh_mirrors/do/dotnet-script