Esempio n. 1
0
        protected override BuildResult Build(IProgressMonitor monitor, SolutionEntityItem item, ConfigurationSelector configuration)
        {
            MoonlightProject           proj = item as MoonlightProject;
            DotNetProjectConfiguration conf = null;

            if (proj != null)
            {
                conf = proj.GetConfiguration(configuration) as DotNetProjectConfiguration;
            }
            if (conf == null)
            {
                return(base.Build(monitor, item, configuration));
            }

            BuildResult result = base.Build(monitor, item, configuration);

            if (result.ErrorCount > 0 || monitor.IsCancelRequested)
            {
                return(result);
            }

            if (proj.GenerateSilverlightManifest)
            {
                if (result.Append(GenerateManifest(monitor, proj, conf, configuration)).Failed || monitor.IsCancelRequested)
                {
                    return(result);
                }
            }

            if (proj.XapOutputs)
            {
                if (result.Append(Zip(monitor, proj, conf, configuration)).Failed || monitor.IsCancelRequested)
                {
                    return(result);
                }
            }

            if (proj.XapOutputs && proj.CreateTestPage)
            {
                result.Append(CreateTestPage(monitor, proj, conf));
            }

            return(result);
        }
Esempio n. 2
0
        protected override bool GetNeedsBuilding(SolutionEntityItem item, ConfigurationSelector configuration)
        {
            MoonlightProject           proj = item as MoonlightProject;
            DotNetProjectConfiguration conf = null;

            if (proj != null)
            {
                conf = proj.GetConfiguration(configuration) as DotNetProjectConfiguration;
            }
            if (conf == null)
            {
                return(base.GetNeedsBuilding(item, configuration));
            }

            if (base.GetNeedsBuilding(item, configuration))
            {
                return(true);
            }

            var objDir = GetObjDir(proj, conf);

            DateTime xapLastMod = DateTime.MaxValue;

            if (proj.XapOutputs)
            {
                var xapName = GetXapName(proj, conf);
                if (!File.Exists(xapName))
                {
                    return(true);
                }
                xapLastMod = File.GetLastWriteTime(xapName);
            }

            var manifest = conf.OutputDirectory.Combine("AppManifest.xaml");

            if (proj.GenerateSilverlightManifest)
            {
                if (!File.Exists(manifest))
                {
                    return(true);
                }
                if (!String.IsNullOrEmpty(proj.SilverlightManifestTemplate))
                {
                    string template = proj.GetAbsoluteChildPath(proj.SilverlightManifestTemplate);
                    if (File.Exists(template) && File.GetLastWriteTime(template) > File.GetLastWriteTime(manifest))
                    {
                        return(true);
                    }
                }
            }

            if (proj.CreateTestPage)
            {
                string testPageFile = GetTestPageFileName(proj, conf);
                if (!File.Exists(testPageFile))
                {
                    return(true);
                }
            }

            string   appName    = proj.Name;
            var      resFile    = objDir.Combine(appName + ".g.resources");
            DateTime resLastMod = DateTime.MinValue;

            if (File.Exists(resFile))
            {
                resLastMod = File.GetLastWriteTime(resFile);
            }

            foreach (ProjectFile pf in proj.Files)
            {
                if ((pf.BuildAction == BuildAction.Page || pf.BuildAction == BuildAction.ApplicationDefinition || pf.BuildAction == BuildAction.Resource) &&
                    File.GetLastWriteTime(pf.FilePath) > resLastMod)
                {
                    return(true);
                }
                if (pf.FilePath.Extension == ".xaml" && pf.Generator == "MSBuild:MarkupCompilePass1")
                {
                    var outFile = objDir.Combine(proj.LanguageBinding.GetFileName(pf.FilePath.FileName + ".g"));
                    if (!File.Exists(outFile) || File.GetLastWriteTime(outFile) < File.GetLastWriteTime(pf.FilePath))
                    {
                        return(true);
                    }
                }
                if (pf.BuildAction == BuildAction.Content && File.GetLastWriteTime(pf.FilePath) > xapLastMod)
                {
                    return(true);
                }
            }
            return(false);
        }
Esempio n. 3
0
        protected override void Clean(IProgressMonitor monitor, SolutionEntityItem item, ConfigurationSelector configuration)
        {
            MoonlightProject           proj = item as MoonlightProject;
            DotNetProjectConfiguration conf = null;

            if (proj != null)
            {
                conf = proj.GetConfiguration(configuration) as DotNetProjectConfiguration;
            }

            base.Clean(monitor, item, configuration);

            if (conf == null)
            {
                return;
            }

            var objDir = GetObjDir(proj, conf);

            if (!Directory.Exists(objDir))
            {
                return;
            }

            foreach (ProjectFile pf in proj.Files)
            {
                if (pf.FilePath.Extension == ".xaml" && pf.Generator == "MSBuild:MarkupCompilePass1")
                {
                    var outFile = objDir.Combine(proj.LanguageBinding.GetFileName(pf.FilePath.FileName + ".g"));
                    if (File.Exists(outFile))
                    {
                        File.Delete(outFile);
                    }
                }
            }

            if (proj.GenerateSilverlightManifest)
            {
                var manifest = conf.OutputDirectory.Combine("AppManifest.xaml");
                if (File.Exists(manifest))
                {
                    File.Delete(manifest);
                }
            }

            if (proj.CreateTestPage)
            {
                string testPageFile = GetTestPageFileName(proj, conf);
                if (File.Exists(testPageFile))
                {
                    File.Delete(testPageFile);
                }
            }

            var resFile = objDir.Combine(proj.Name + ".g.resources");

            if (File.Exists(resFile))
            {
                File.Delete(resFile);
            }

            if (proj.XapOutputs)
            {
                var xapName = GetXapName(proj, conf);
                if (File.Exists(xapName))
                {
                    File.Delete(xapName);
                }
            }
        }