コード例 #1
0
ファイル: MsBuildProject.cs プロジェクト: jmd/vstools
        bool SetCommandLines(
            QtMsBuildContainer qtMsBuild,
            IEnumerable <string> configurations,
            IEnumerable <XElement> customBuilds,
            string itemType)
        {
            var query = from customBuild in customBuilds
                        let itemName = customBuild.Attribute("Include").Value
                                       from configName in configurations
                                       from command in customBuild.Elements(ns + "Command")
                                       let commandLine = command.Value
                                                         where command.Attribute("Condition").Value
                                                         == string.Format(
                "'$(Configuration)|$(Platform)'=='{0}'",
                configName)
                                                         select new { customBuild, itemName, configName, commandLine };

            foreach (var row in query)
            {
                XElement item;
                row.customBuild.Add(item =
                                        new XElement(ns + itemType,
                                                     new XAttribute("Include", row.itemName),
                                                     new XAttribute("ConfigName", row.configName)));
                if (!qtMsBuild.SetCommandLine(itemType, item, row.commandLine))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #2
0
        bool SetCommandLines(
            QtMsBuildContainer qtMsBuild,
            IEnumerable <XElement> configurations,
            IEnumerable <XElement> customBuilds,
            string itemType,
            string workingDir)
        {
            var query = from customBuild in customBuilds
                        let itemName = customBuild.Attribute("Include").Value
                                       from config in configurations
                                       from command in customBuild.Elements(ns + "Command")
                                       let commandLine = command.Value
                                                         where command.Attribute("Condition").Value
                                                         == string.Format(
                "'$(Configuration)|$(Platform)'=='{0}'",
                (string)config.Attribute("Include"))
                                                         select new { customBuild, itemName, config, commandLine };

            using (var evaluator = new MSBuildEvaluator(this[Files.Project])) {
                foreach (var row in query)
                {
                    XElement item;
                    row.customBuild.Add(item =
                                            new XElement(ns + itemType,
                                                         new XAttribute("Include", row.itemName),
                                                         new XAttribute("ConfigName", (string)row.config.Attribute("Include"))));
                    var configName   = (string)row.config.Element(ns + "Configuration");
                    var platformName = (string)row.config.Element(ns + "Platform");
                    var commandLine  = row.commandLine
                                       .Replace(Path.GetFileName(row.itemName), "%(Filename)%(Extension)",
                                                StringComparison.InvariantCultureIgnoreCase)
                                       .Replace(configName, "$(Configuration)",
                                                StringComparison.InvariantCultureIgnoreCase)
                                       .Replace(platformName, "$(Platform)",
                                                StringComparison.InvariantCultureIgnoreCase);

                    evaluator.Properties.Clear();
                    foreach (var configProp in row.config.Elements())
                    {
                        evaluator.Properties.Add(configProp.Name.LocalName, (string)configProp);
                    }

                    if (!qtMsBuild.SetCommandLine(itemType, item, commandLine, evaluator))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }