Ejemplo n.º 1
0
        public void ProcessEvents(List <SoftwareFactoryEvent> events)
        {
            foreach (var @event in events)
            {
                switch (@event.EventIdentifier)
                {
                case SoftwareFactoryEvents.AddProjectItemEvent:
                    var x = new AddProjectItemEvent(Project, @event.GetValue("RelativeFileName"), @event.TryGetValue("ItemType"));
                    if (@event.TryGetValue("Depends On") != null)
                    {
                        x.DependentUpon(@event.TryGetValue("Depends On"));
                    }
                    if (@event.TryGetValue("IntentGenType") != null)
                    {
                        x.Generated(@event.TryGetValue("IntentGenType"));
                    }
                    Process(x);
                    break;

                case SoftwareFactoryEvents.RemoveProjectItemEvent:
                    var r = new RemoveProjectItemEvent(Project, @event.GetValue("RelativeFileName"));
                    Process(r);
                    break;

                case SoftwareFactoryEvents.AddTargetEvent:
                    Process(new AddTargetEvent(Project, @event.GetValue("Name"), @event.GetValue("Condition"), @event.GetValue("Xml")));
                    break;

                case SoftwareFactoryEvents.AddTaskEvent:
                    Process(new AddTaskEvent(Project, @event.GetValue("TaskName"), @event.GetValue("AssemblyFile")));
                    break;

                case SoftwareFactoryEvents.ChangeProjectItemTypeEvent:
                    Process(new ChangeProjectItemTypeEvent(Project, @event.GetValue("RelativeFileName"), @event.GetValue("ItemType")));
                    break;

                default:
                    Logging.Log.Warning($"VSProject Sync not handling {@event.EventIdentifier}");
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        private void Process(AddProjectItemEvent @event)
        {
            var projectItem = GetProjectItem(@event.RelativeFileName);

            if (projectItem == null)
            {
                var item = new XElement(XName.Get(@event.ItemType, _namespace.NamespaceName));
                item.Add(new XAttribute("Include", @event.RelativeFileName));
                foreach (var metaData in @event.MetaData)
                {
                    var child = new XElement(XName.Get(metaData.Key, _namespace.NamespaceName));
                    child.Value = metaData.Value;
                    item.Add(child);
                }
                _codeItems.Add(item);
            }
            else
            {
                if (projectItem.Name.LocalName != @event.ItemType)
                {
                    projectItem.Name = XName.Get(@event.ItemType, projectItem.Name.NamespaceName);
                }
                var children = projectItem.Elements().ToList();
                projectItem.RemoveNodes();
                foreach (var metaData in @event.MetaData)
                {
                    var child = new XElement(XName.Get(metaData.Key, _namespace.NamespaceName));
                    child.Value = metaData.Value;
                    projectItem.Add(child);
                }
                foreach (var userAddedMetaData in children.Where(x => @event.MetaData.All(y => XName.Get(y.Key, _namespace.NamespaceName) != x.Name)))
                {
                    var child = new XElement(userAddedMetaData.Name);
                    child.Value = userAddedMetaData.Value;
                    projectItem.Add(child);
                }
            }
        }