2016-06-07 2 views
2

Я создаю редактор сценариев для своего приложения, и я хотел бы иметь возможность запускать как скрипты C#, так и VB.NET с помощью Roslyn. Я получил эту работу с C#, используя класс CSharpScript в сборке/пространстве имен Microsoft.CodeAnalysis.CSharp.Scripting, однако нет эквивалента класса VisualBasicScript, который я могу найти, а также сборки Microsoft.CodeAnalysis.VisualBasic.Scripting. Я просмотрел веб-страницы и не могу найти ничего полезного в работе скриптов VB.NET, и все образцы на сайте Glyub Roslyn являются C# -специфическими. Я что-то упускаю, или поддержка скриптов VB.NET просто не существует, как это делается для сценариев на C#?Может ли Roslyn использоваться для скриптов VB.NET?

+0

Я не дошел до того, что создал собственный редактор скриптов (учитывая, что Actipro делает то, что соответствует моим потребностям), но я знаю (после обсуждения и выхода на их веб-сайт), что хотя .net framework (и, наконец, языки) были открыты, фактический движок Roslyn/компилятор был не таким, как на данный момент, их редактор синтаксиса не поддерживает новейшие синтаксические нюансы языков .net. Мне жаль, что это прямо не отвечает вам, поскольку я не знаю точно, но я сильно подозреваю, что ответ в настоящее время окажется неважным. –

+0

Я использую сторонний инструмент (Infragistics xamSyntaxEditor) для фактического выделения текста/подсветки синтаксиса и просто создаю пользовательский интерфейс для загрузки/сохранения сценариев, а также запускать их и отображать их результаты. – StuartMorgan

ответ

1

Visual Basic Scripting is not currently available, предположительно потому, что it's not finished.

Но its source is is the Roslyn repo, так что вы можете попробовать его самостоятельно.

Когда я делаю, что код, как следующие работы для меня:

Dim result = VisualBasicScript.RunAsync("Dim result = 1+1").Result 

For Each variable In result.Variables 
    Console.WriteLine($"{variable.Name}: {variable.Value}") 
Next 

Но этот код не работает для меня (это не удается при составлении сценария):

Console.WriteLine(VisualBasicScript.EvaluateAsync("1+1").Result) 

Я m не уверен, происходит ли это из-за того, что он еще не закончен, или это намеренно отличается от сценариев C#.

+0

Спасибо за отличный ответ и ссылки. Не совсем то, на что я надеялся, но хорошо знать, что это, по крайней мере, в работах. – StuartMorgan

Смежные вопросы