[Mono-list] Security exception using 2.10 Evaluator with .Net

Bruce McKenzie bjmckenzie at gmail.com
Tue Mar 8 22:07:43 EST 2011


I recently saw the announcement of mono 2.10 which included the Mono C#
Compiler Service which seemed very relevant to a project under development.
We are using Visual Studio and .Net 4.0 (and eventually will want to use
this with Silverlight)

I downloaded and installed mono 2.10 (a great experience - thank you) and
then created a simple Windows console app in Visual Studio 2010. I added
Mono.CSharp to the references and the main program contains just a single
line


using Mono.CSharp;

namespace TestMono
{
    class Program
    {
        static void Main(string[] args)
        {
            var result = Evaluator.Evaluate("34 + 56;");
        }
    }
}

This compiled without a problem but when executed it raises an exception
when the line is executed. 

The exception is a TypeInitializationException and appears to occur when the
Mono.CSharp.dll assembly is loaded The inner exception complains about the
security of the type Location in the dll

{"Method 'Mono.CSharp.Location.ToString()' is security transparent, but is a
member of a 
 security critical type.":"Mono.CSharp.Location.ToString()"}


The full details of the exception are:

System.TypeInitializationException was unhandled
  Message=The type initializer for 'Mono.CSharp.Evaluator' threw an
exception.
  Source=Mono.CSharp
  TypeName=Mono.CSharp.Evaluator
  StackTrace:
       at Mono.CSharp.Evaluator.Evaluate(String input)
       at TestMono.Program.Main(String[] args) in
c:\users\cnwbm1\documents\visual studio
2010\Projects\TestMono\TestMono\Program.cs:line 9
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,
String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence
assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  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: 


Can anyone shed any light on why this exception occurs?
Is it valid to mix mono and .Net 4.0 dlls in the manner I am attempting?

Thanks in advance
Bruce

--
View this message in context: http://mono.1490590.n4.nabble.com/Security-exception-using-2-10-Evaluator-with-Net-tp3342676p3342676.html
Sent from the Mono - General mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20110308/b1bb3f0e/attachment.html 


More information about the Mono-list mailing list