Операция не поддерживается в Roslyn (API сценариев) при публикации AOT.C#

Место общения программистов C#
Ответить
Anonymous
 Операция не поддерживается в Roslyn (API сценариев) при публикации AOT.

Сообщение Anonymous »

Цель – создать простое тестовое приложение, которое позволяет загружать скрипт, получать доступ к предопределенному статическому классу и выводить значение из этого класса на консоль.
Используемая версия:
4.10.0-3.final
Шаги по воспроизведению:
Я создал новое консольное приложение .NET 8 (опубликуйте AOT профиль) с базовой настройкой проекта:

Код: Выделить всё



Exe
net8.0
enable
enable
true
true







В проект добавлен дополнительный класс в пространстве имен RoslynTest.Test:

Код: Выделить всё

public static class Foo
{
public static string Name { get; set; } = "Bar";
}
затем простая основная задача:

Код: Выделить всё

using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;

namespace RoslynTest
{
internal class Program
{
static async Task Main(string[] args)
{

try
{
var codeToEval =
@"
int test = 0;
var count = test + 15;
count++;
Console.WriteLine(count);

Console.WriteLine(Foo.Name);

";

var options = ScriptOptions.Default;

options = options
.WithImports("System", "RoslynTest.Test")
.AddReferences("RoslynTest");

var result = await CSharpScript.EvaluateAsync(codeToEval, options);

}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

Console.ReadLine();

}
}
}
При работе в режиме отладки он работает так, как ожидалось, поэтому вывод: Ожидаемое поведение: Фактическое поведение:
При публикации с использованием AOT с параметрами:

Код: Выделить всё

Configuration: Release
Deployment mode: Self-contained
Target runtime: win-x64
и при запуске приложения выдается исключение:

Код: Выделить всё

Operation is not supported on this platform.
Диагностика:
С помощью выходных данных я определил, в чем проблема:

Код: Выделить всё

CSharpScript.EvaluateAsync(codeToEval, options);
Есть ли обходной путь или рекомендации?

Подробнее здесь: https://stackoverflow.com/questions/785 ... lished-aot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»