Skip to content

Commit 2ae4c10

Browse files
Доработка загрузки библиотек при компиляции
1 parent f90a29b commit 2ae4c10

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/oscript/BuildLibraryBehavior.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,23 @@ public override int Execute()
3737

3838
try
3939
{
40+
// Создаём скрипт-заглушку который загружает библиотеку
41+
var loaderScript = $"#Использовать \"{_libraryPath.Replace("\\", "\\\\")}\"";
42+
4043
var builder = ConsoleHostBuilder.Create(_libraryPath);
4144
var hostedScript = ConsoleHostBuilder.Build(builder);
4245
hostedScript.Initialize();
4346

44-
var libraryBuilder = new LibraryBuilder(hostedScript.Engine, hostedScript.GetCompilerService());
45-
var package = libraryBuilder.Build(_libraryPath, hostedScript.Engine.NewProcess());
47+
var process = hostedScript.Engine.NewProcess();
48+
var compiler = hostedScript.GetCompilerService();
49+
50+
// Компилируем скрипт-заглушку — это загрузит библиотеку в контекст
51+
var loaderSource = hostedScript.Engine.Loader.FromString(loaderScript);
52+
compiler.Compile(loaderSource, process);
53+
54+
// Теперь все модули библиотеки в контексте, можно компилировать
55+
var libraryBuilder = new LibraryBuilder(hostedScript.Engine, compiler);
56+
var package = libraryBuilder.Build(_libraryPath, process);
4657

4758
var outputPath = string.IsNullOrEmpty(_outputPath)
4859
? _libraryPath + ".oslib"

0 commit comments

Comments
 (0)