ClrPlus.Scripting.MsBuild.Packaging.ProjectPlus.GenerateConfigurationPropertyInitializers C# (CSharp) Method

GenerateConfigurationPropertyInitializers() private method

private GenerateConfigurationPropertyInitializers ( Microsoft.Build.Construction.ProjectTargetElement initTarget ) : void
initTarget Microsoft.Build.Construction.ProjectTargetElement
return void
        private void GenerateConfigurationPropertyInitializers(ProjectTargetElement initTarget)
        {
            var pivots = Pivots;
            ProjectPropertyGroupElement pg = null;

            foreach(var pivot in pivots.Values) {
                // dynamic cfg = configurationsView.GetProperty(pivot);
                IEnumerable<string> choices = pivot.Choices.Keys;

                if(!pivot.IsBuiltIn) {
                    // add init steps for this.
                    var finalPropName = "{0}-{1}".format(pivot.Name, SafeName);

                    foreach(var choice in choices.Distinct()) {
                        var choicePropName = "{0}-{1}".format(pivot.Name, choice);

                        var tsk = initTarget.AddTask(SafeName + "_Contains");
                        tsk.SetParameter("Text", choicePropName);
                        tsk.SetParameter("Library", SafeName);
                        tsk.SetParameter("Value", choice);
                        tsk.Condition = @"'$({0})'==''".format(finalPropName);
                        tsk.AddOutputProperty("Result", finalPropName);
                    }
                    pg = pg ?? Xml.AddPropertyGroup();
                    pg.Label = "Default initializers for properties";
                    pg.AddProperty(finalPropName, choices.FirstOrDefault()).Condition = @"'$({0})' == ''".format(finalPropName);
                }
            }
        }