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); }
public override void Dispose() { file.Dispose(); }