Skip to content

API Host ScriptSources

Liu.Yandong.Hanks edited this page Aug 21, 2026 · 3 revisions

ScriptSources

Built-in script-source factories

Back to .NET Host API Reference

Note

Built-in resolvers normalize roots and full paths to use '/' separators internally. Entry paths resolve from the resolver root. Import/include dependencies resolve from the importing source full path. Composite reads are routed by ScriptSourceReference.BaseDirectory and BuildAsync() enumeration is de-duplicated by normalized FullPath.

Overview

ScriptSources provides factories for the most common resolvers: file system, memory, and ordered composition. A resolver only resolves paths, reads source text, and enumerates sources; the compiler builds the module graph.

Methods

FileSystem

Creates a file-system resolver rooted at a directory.

FileSystemScriptSourceResolver FileSystem(string root, Encoding encoding = null)

Parameters

Name Type Required Description
root string Yes Script root directory.
encoding Encoding No Optional text encoding.

Returns

FileSystemScriptSourceResolver.

var resolver = ScriptSources.FileSystem("./scripts");

Memory

Creates an in-memory virtual source resolver rooted at the supplied source namespace.

MemorySourceResolver Memory(string root = "mem://")

Parameters

Name Type Required Description
root string No Optional virtual root; defaults to mem://.

Returns

MemorySourceResolver.

var resolver = ScriptSources.Memory("mem://app/")
    .Add("main.as", "@module(MAIN); export func run() { return 42; }");

Composite

Creates an ordered resolver composition. The first resolver that resolves a target wins.

CompositeScriptSourceResolver Composite(params IScriptSourceResolver[] resolvers)

Parameters

Name Type Required Description
resolvers IScriptSourceResolver[] No Resolvers in priority order; earlier entries win.

Returns

CompositeScriptSourceResolver.

var resolver = ScriptSources.Composite(
    ScriptSources.Memory("./scripts").Add("generated.as", "@module(GEN);"),
    ScriptSources.FileSystem("./scripts"));

a memory overlay can override a file source only when the resolved target lies under the earlier memory root.

Clone this wiki locally