Exemple #1
0
        private CSharpCompilation Compile(string fileName)
        {
            var cache = Application.ResourceCache;
            CSharpCompilation compilation = null;

            Urho.IO.File file         = cache.GetFile(fileName);
            byte[]       sourceBuffer = null;
            if (file != null)
            {
                uint size = file.Size;
                sourceBuffer = new byte[size];
                file.Read(sourceBuffer, size);
            }
            file.Dispose();

            string sourceCode = System.Text.Encoding.UTF8.GetString(sourceBuffer);

            string componentName = fileName;
            int    fileExtPos    = fileName.LastIndexOf(".");

            if (fileExtPos >= 0)
            {
                componentName = fileName.Substring(0, fileExtPos);
            }


            compilation = CSharpCompilation.Create(componentName, new[] { CSharpSyntaxTree.ParseText(sourceCode) },
                                                   new[]
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Console).Assembly.Location),
                MetadataReference.CreateFromFile(SystemRuntime.Location),
                MetadataReference.CreateFromFile(MSCoreLib.Location),
                MetadataReference.CreateFromFile(UrhoDotNet.Location),
            },
                                                   new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            return(compilation);
        }
Exemple #2
0
 public override void Dispose()
 {
     file.Dispose();
 }