Example #1
0
        private string CompileOrClean(string filePath)
        {
            BuildGraph buildGraph = new BuildGraph();
            var cscp = new CSharpCompileParams();
            cscp.BuildFileDir = Path.Combine(m_currentDir, m_outputDir);
            cscp.Sources.Add(filePath);
            cscp.OutputFilePath =
                Path.Combine(cscp.BuildFileDir, Path.GetFileName(filePath)) + ".dll";
            cscp.TargetFormat = CSharpTargetFormats.Library;
            cscp.FrameworkVersion = CSharpFrameworkVersion.V3_5;
            cscp.CompileDir = m_currentDir;
            cscp.Debug = true;
            cscp.Platform = CSharpPlatforms.AnyCpu;
            foreach (Assembly assembly in UsingAssemblies) {
                if (assembly != null) {
                    cscp.AssemblyReferences.Add(assembly.Location);
                }
            }
            var csc = new CSharpCompile(buildGraph, cscp);

            BuildOptions options = new BuildOptions();
            options.FileDecider = new FileSizeDateDecider();
            options.RemoveEmptyDirectories = true;

            var targets = new [] { cscp.OutputFilePath };
            BuildAction buildAction = m_wipe ? BuildAction.Clean : BuildAction.Build;
            BuildResults results = buildGraph.Execute(
                buildAction,
                options,
                targets,
                true);

            if (!results.Success) {
                throw new InvalidOperationException();
            }

            return cscp.OutputFilePath;
        }
Example #2
0
        static void TestCscCompile()
        {
            var cscp = new CSharpCompileParams();
            cscp.CompileDir = @"K:\work\code\C#\foo";
            string sourceFile = @"K:\work\code\C#\foo\Blah.cs";
            cscp.Sources.Add(sourceFile);
            cscp.OutputFilePath = QRPath.ChangeExtension(sourceFile, ".exe");
            cscp.FrameworkVersion = "v3.5";
            cscp.Platform = CSharpPlatforms.AnyCpu;
            cscp.Debug = true;

            var buildGraph = new BuildGraph();

            var csc = new CSharpCompile(buildGraph, cscp);
            csc.Execute();

            csc.UpdateExplicitIO();
            csc.UpdateImplicitInputs();

            string depsCache = DependencyCache.CreateDepsCacheString(csc, new FileSizeDateDecider());
            File.WriteAllText(csc.BuildFileBaseName + "__qr__.deps", depsCache);
        }