CSharpCompilation IResolveReference.GetReferenceResolvedCompilation(CodeGenConfig2 config) { string path = Path.GetDirectoryName(config.Project); string projFilePath = config.Project; string name = Path.GetFileNameWithoutExtension(projFilePath); CSharpCompilationOptions compilationOptions = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary); compilationOptions = compilationOptions.WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default); CSharpCompilation compilation = CSharpCompilation.Create(name); compilation = compilation.WithOptions(compilationOptions); return(compilation); }
CSharpCompilation IResolveReference.GetReferenceResolvedCompilation(CodeGenConfig2 config) { return(mProject.GetCompilationAsync().Result as CSharpCompilation); }
static void Main(string[] args) { if (args.Length == 1) { var workspace = MSBuildWorkspace.Create(new Dictionary <string, string> { { "CheckForSystemRuntimeDependency", "true" } }); workspace.LoadMetadataForReferencedProjects = true; workspace.SkipUnrecognizedProjects = true; var solution = workspace.OpenSolutionAsync(args[0]).Result; foreach (var project in solution.Projects) { var compilation = project.GetCompilationAsync().Result as CSharpCompilation; if (compilation.GetTypeByMetadataName("System.Exception") != null) { Console.WriteLine("Get System.Exception success " + project.Name); } else { Console.WriteLine("Get System.Exception failed " + project.Name); } } Console.ReadKey(); return; } try { CodeGenConfig2 config = CodeGenConfig2.Load("CodeGenConfig2.xml"); if (config.ProxyClassItems.Count != 0) { Console.WriteLine("正在生成代码"); using (CodeGenerator codeGen = new CodeGenerator(config)) { codeGen.GenCode(); } } //if (File.Exists(config.Cs2LuaReferenceFilePath)) //{ // Console.WriteLine("正在检查外部引用是否都加上[LuaCallCSharp]"); // using (ReferenceChecker refChecker = new ReferenceChecker(config)) // { // refChecker.PerformCheck(); // } //} } catch (CodeGenException ex) { Console.WriteLine(ex.Message); } Console.WriteLine("按任意键结束"); Console.ReadKey(); }