Esempio n. 1
0
        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);
 }
Esempio n. 3
0
        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();
        }