ClrPlus.Scripting.MsBuild.Packaging.ProjectPlus.LookupTarget C# (CSharp) Метод

LookupTarget() приватный Метод

private LookupTarget ( string name, string condition = null, bool scopeToProject = false ) : Microsoft.Build.Construction.ProjectTargetElement
name string
condition string
scopeToProject bool
Результат Microsoft.Build.Construction.ProjectTargetElement
        internal ProjectTargetElement LookupTarget(string name, string condition = null, bool scopeToProject = false)
        {
            var originalName = name;

            if(string.IsNullOrEmpty(condition)) {
                switch(name) {
                    case "AfterBuild":
                    case "BeforeBuild":
                    case "Build":
                    case "Rebuild":
                    case "_PrepareForBuild":
                    case "_PrepareForRebuild":
                    case "_PrepareForClean":
                    case "LibLinkOnly":
                    case "AfterBuildCompile":
                    case "AfterBuildGenerateSources":
                        // these are predefined tasks, we'll make our own local one, and ensure we're chained to upstream one.
                        var tgt = LookupTarget(SafeName + "_" + name, null, false);
                        tgt.AfterTargets = tgt.AfterTargets.AppendToSemicolonList(name);
                        return tgt;
                }
            }
            else {
                if(scopeToProject) {
                    name = SafeName + "_" + name;
                }
            }

            var label = Pivots.GetExpressionLabel(condition);
            name = name.Replace(".", "_");

            if(string.IsNullOrEmpty(condition)) {
                var result = Xml.Targets.FirstOrDefault(each => name == each.Name && string.IsNullOrEmpty(each.Condition));
                if(result != null) {
                    return result;
                }
                return Xml.AddTarget(name);
            }

            var modifiedname = "{0}_{1}".format(name, label).Replace(" ", "_").MakeSafeFileName();

            var conditionedResult = Xml.Targets.FirstOrDefault(each => modifiedname == each.Name);
            if(conditionedResult != null) {
                return conditionedResult;
            }

            // ensure a non-conditioned gets created that we can chain to.
            LookupTarget(originalName, null, false);

            var target = Xml.AddTarget(modifiedname);

            target.Label = label;
            target.Condition = Pivots.GetMSBuildCondition(Name, condition);
            target.AfterTargets = name;

            return target;
        }