Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 24.06.13 14:05
Оценка:
Столкнулся с проблемой при использовании Lambda в CodeDom для vb.net (C# не проверял).
Imports System.CodeDom.Compiler

Module Module1

    Sub Main()

        'ok
        Dim f = Function(x) x

        'динамическая компиляция кода выше
        Dim comp As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")
        Dim res As CompilerResults = comp.CompileAssemblyFromSource(New CompilerParameters, "Dim f = Function(x) x")

        'выдает "Ожидалось выражение"
        For Each err As CompilerError In res.Errors
            MsgBox(err.ErrorText)
        Next

    End Sub

End Module
Re: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 24.06.13 14:09
Оценка:
.net 3.5
Re: Ошибка динамической компиляции Lambda выражения
От: hardcase Пират http://nemerle.org
Дата: 24.06.13 14:11
Оценка:
Здравствуйте, ST1, Вы писали:

Одну функцию скомпилировать нелзя. Нужный полный исходник с модулем и методами.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 24.06.13 14:19
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, ST1, Вы писали:


H>Одну функцию скомпилировать нелзя. Нужный полный исходник с модулем и методами.

Я привел синтетический пример. В реальном же коде компилирую классы-наследники, в одной из функции которых без Lambda не обойтись.
Re[3]: Ошибка динамической компиляции Lambda выражения
От: hardcase Пират http://nemerle.org
Дата: 24.06.13 14:43
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Я привел синтетический пример. В реальном же коде компилирую классы-наследники, в одной из функции которых без Lambda не обойтись.


Похоже что используется компилятор из .NET 2.0. Попробуй создать экземпляр VBCodeProvider явно.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 24.06.13 14:44
Оценка:
Хм, с модулем и Main процедурой та же история:
Imports System.CodeDom.Compiler
Imports System.Text

Module Module1

    Sub Main()

        'ok
        Dim f = Function(x) x

        'динамическая компиляция кода выша
        Dim comp As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")

        Dim code As New StringBuilder
        code.AppendLine("Module Module1")
        code.AppendLine("    Sub Main()")
        code.AppendLine("        Dim f = Function(x) x")
        code.AppendLine("    End Sub")
        code.AppendLine("End Module")

        Dim res As CompilerResults = comp.CompileAssemblyFromSource(New CompilerParameters, code.ToString)

        'выдает "Ожидалось выражение"
        For Each err As CompilerError In res.Errors
            MsgBox(err.ErrorText)
        Next

    End Sub

End Module
Re[4]: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 24.06.13 14:48
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, ST1, Вы писали:


ST1>>Я привел синтетический пример. В реальном же коде компилирую классы-наследники, в одной из функции которых без Lambda не обойтись.


H>Похоже что используется компилятор из .NET 2.0. Попробуй создать экземпляр VBCodeProvider явно.

Изменений нет
Re[5]: Ошибка динамической компиляции Lambda выражения
От: hardcase Пират http://nemerle.org
Дата: 24.06.13 17:34
Оценка: 3 (1)
Здравствуйте, ST1, Вы писали:

ST1>Здравствуйте, hardcase, Вы писали:


H>>Здравствуйте, ST1, Вы писали:


ST1>>>Я привел синтетический пример. В реальном же коде компилирую классы-наследники, в одной из функции которых без Lambda не обойтись.


H>>Похоже что используется компилятор из .NET 2.0. Попробуй создать экземпляр VBCodeProvider явно.

ST1>Изменений нет

Посмотрите пример по ссылке: http://msdn.microsoft.com/en-us/library/bb470844.aspx
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 25.06.13 03:26
Оценка:
Здравствуйте, hardcase, Вы писали:
H>Посмотрите пример по ссылке: http://msdn.microsoft.com/en-us/library/bb470844.aspx
Отлично, таки да!
Re[7]: Ошибка динамической компиляции Lambda выражения
От: ST1 Россия  
Дата: 25.06.13 06:33
Оценка: :)
Понадобилось указывать тип делегата
System.Func(Of Double, Double)


Опять траблы
Imports System.CodeDom.Compiler
Imports System.Text

Module Module1

    Sub Main()

        'ok
        Dim f As System.Func(Of Double, Double) = Function(x) x

        'динамическая компиляция кода выше
        Dim op As New Dictionary(Of String, String)
        op.Add("CompilerVersion", "v3.5")

        Dim comp As New VBCodeProvider(op)

        Dim code As New StringBuilder
        code.AppendLine("Module Module1")
        code.AppendLine("    Sub Main()")
        code.AppendLine("        Dim f As System.Func(Of Double, Double) = Function(x) x")
        code.AppendLine("    End Sub")
        code.AppendLine("End Module")

        Dim res As CompilerResults = comp.CompileAssemblyFromSource(New CompilerParameters, code.ToString)

        'выдает: Тип "Func" не определен
        For Each err As CompilerError In res.Errors
            MsgBox(err.ErrorText)
        Next

    End Sub

End Module
Re[8]: Ошибка динамической компиляции Lambda выражения
От: hardcase Пират http://nemerle.org
Дата: 25.06.13 13:03
Оценка: 2 (1)
Здравствуйте, ST1, Вы писали:

ST1>Понадобилось указывать тип делегата

ST1>
ST1>System.Func(Of Double, Double)
ST1>


Нужена ссылка на System.Core.dll.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.