public override IProject Load(ISolution solution, string filename)
        {
            TypeScriptProject result = new TypeScriptProject();

            result.Location = filename;

            //TODO: Load TS language service from here

            result.Solution = solution;
            result.LoadFiles();

            return(result);
        }
        public static async Task <TypeScriptProject> Create(ISolution solution, string directory)
        {
            return(await Task.Run(() =>
            {
                TypeScriptProject result = new TypeScriptProject();

                var projectName = new DirectoryInfo(directory).Name;

                //Create new project with default name and extension
                var projectFileLocation = Path.Combine(directory, projectName + $".{result.Extension}");

                result.Solution = solution;
                result.Location = projectFileLocation;

                //Create Main.TS file
                var indexFileLocation = Path.Combine(directory, "main.ts");
                if (!System.IO.File.Exists(indexFileLocation))
                {
                    System.IO.File.WriteAllText(indexFileLocation, @"
class Program {
    static main() {
        console.log(""Hello, World!"");
    }
}

Program.main();
");
                }
                //Create TypeScript project file
                var tsProjectFileLocation = Path.Combine(directory, "tsconfig.json");
                if (!System.IO.File.Exists(tsProjectFileLocation))
                {
                    System.IO.File.WriteAllText(tsProjectFileLocation, @"
{
    ""compilerOptions"": {
        ""target"": ""es5"",
        ""module"": ""commonjs"",
        ""sourceMap"": true
    }
}
");
                }
                result.Save();

                result.LoadFiles();

                return result;
            }));
        }