У меня сложилось впечатление, что компилятор Mono можно использовать в Microsoft.NET
edit: обновленная запись в блоге здесь , которую я изначально пропустил, что объясняет некоторые из них (согласуется с ответами Джастина)
Я создал простой класс, чтобы попытаться использовать его
[TestFixture]
class Class1
{
[Test]
public void EXPR()
{
Evaluator.Run("using System;");
int sum = (int)Evaluator.Evaluate("1+2");
}
}
И проект в Visual Studio 2010, который ссылается на C: \ Program Files (x86) \ Mono-2.10.1 \ lib \ mono \ 4.0 \ Mono.CSharp.dll.
Однако при попытке выполнить эту задачу я получаю следующее исключение, которое выдается при вызове Evaluator.Run:
System.TypeInitializationException was unhandled by user code
Message=The type initializer for 'Mono.CSharp.Evaluator' threw an exception.
Source=Mono.CSharp
TypeName=Mono.CSharp.Evaluator
StackTrace:
at Mono.CSharp.Evaluator.Run(String statement)
at Experiments.Class1.EXPR() in W:\Experiments\Class1.cs:line 16
InnerException: System.TypeLoadException
Message=Method 'Mono.CSharp.Location.ToString()' is security transparent, but is a member of a security critical type.
Source=Mono.CSharp
TypeName=Mono.CSharp.Location.ToString()
StackTrace:
at Mono.CSharp.Evaluator..cctor()
InnerException:
Google подтверждает, что еще один человек задал этот вопрос, но не получил ответа.Я пытался начать читать статью о прозрачном коде безопасности , но очень быстро запутался.Может ли кто-нибудь предложить быстрый обходной путь, чтобы я мог использовать это?И, возможно, суммируйте последствия для безопасности, если таковые имеются, для меня (в контексте моей ситуации - в будущем я надеюсь упаковать его с толстым клиентским приложением, которое будет использоваться как внутри, так и конечными пользователями)