Roslyn VB.Net Укажите версию компилятора - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь скомпилировать программу VB, используя приведенный ниже код, для кода требуется VB 15.5, и даже когда я указываю LanguageVersion.Latest или LanguageVersion.VisualBasic15_5, я все еще получаю ошибку ERR_ExpectedNamedArgument - ожидается именованный аргумент.Пожалуйста, используйте языковую версию 15.5 или выше, чтобы использовать непоследовательные именованные аргументы.Некоторый код был удален, чтобы упростить пример.

    Public Function CompileVisualBasicString(StringToBeCompiler As String,  SeverityToReport As DiagnosticSeverity, ByRef ResultOfConversion As ConversionResult) As EmitResult
    If StringToBeCompiler.IsEmptyNullOrWhitespace Then
        ResultOfConversion.FilteredListOfFailures = New List(Of Diagnostic)
        ResultOfConversion.Success = True
        Return Nothing
    End If
    Dim syntaxTree As SyntaxTree = VisualBasicSyntaxTree.ParseText(StringToBeCompiler)
    Dim assemblyName As String = Path.GetRandomFileName()

    Dim PreprocessorSymbols As New Dictionary(Of String, Object) From {
        {"NETSTANDARD2_0", Nothing}
    }

    Dim ParseOptions As VisualBasicParseOptions = New VisualBasicParseOptions(
            languageVersion:=LanguageVersion.Latest,
            documentationMode:=DocumentationMode.Diagnose,
            kind:=SourceCodeKind.Regular,
            preprocessorSymbols:=PreprocessorSymbols)

    Dim CompilationOptions As VisualBasicCompilationOptions = New VisualBasicCompilationOptions(
                                                                        outputKind:=OutputKind.DynamicallyLinkedLibrary,
                                                                        optionExplicit:=False,
                                                                        optionInfer:=True,
                                                                        optionStrict:=OptionStrict.Off,
                                                                        parseOptions:=ParseOptions
                                                                        )
    Dim compilation As VisualBasicCompilation = VisualBasicCompilation.Create(
                                                                assemblyName:=assemblyName,
                                                                syntaxTrees:={syntaxTree},
                                                                references:=References,
                                                                options:=CompilationOptions
                                                                              )

    Dim CompileResult As EmitResult
    Using ms As MemoryStream = New MemoryStream()
        CompileResult = compilation.Emit(ms)
    End Using
    Return CompileResult
End Function

1 Ответ

0 голосов
/ 26 июня 2018

Спасибо, Джордж, вы решили проблему, необходимую для включения VisualBasicParseOption в Parse в дополнение к компиляции.

...