Testing Build.

Testing Build.

--- tests/NetFusion.Tests.Core/Messaging/MessagingTests.cs
+++ tests/NetFusion.Tests.Core/Messaging/MessagingTests.cs
@@ -1,517 +1,517 @@
-using Autofac;
-using FluentAssertions;
-using NetFusion.Bootstrap.Container;
-using NetFusion.Bootstrap.Exceptions;
-using NetFusion.Bootstrap.Testing;
-using NetFusion.Core.Tests.Messaging.Mocks;
-using NetFusion.Messaging;
-using NetFusion.Messaging.Config;
-using NetFusion.Messaging.Core;
-using NetFusion.Messaging.Modules;
-using NetFusion.Tests.Core.Bootstrap.Mocks;
-using System.Collections.Generic;
-using System.Linq;
-using Xunit;
-
-namespace NetFusion.Core.Test.Messaging
-{
-    /// <summary>
-    /// Domain events provide a way of modeling events that exist within the problem
-    /// domain and needed to be handled by one or more application components.  Domain
-    /// events also provide a means of keeping application components loosely coupled.
-    /// Domain events are usually in-process and single threaded.  However, asynchronous
-    /// non-blocking event handling is also often provided.
-    ///
-    /// The domain-event plug-in provides an extension point where other plug-ins can
-    /// extend this behavior and provide the delivering of events on a service bus.
-    /// </summary>
-    public class MessagingTests
-    {
-        /// <summary>
-        /// The domain event plug-in has a configuration class for specifying related settings.
-        /// </summary>
-        [Fact]
-        public void DiscoversMessagingConfiguration()
-        {
-            DefaultDomainEventPlugin
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "WhenEvent");
-                    c.Build();
-                })
-                .Assert((MessagingModule m) =>
-                {
-                    var moduleConfig = m.Context.Plugin.GetConfig<MessagingConfig>();
-                    moduleConfig.Should().NotBeNull();
-                    moduleConfig.ConsumerMethodPrefix.Should().Be("WhenEvent");
-                });
-        }
-
-        /// <summary>
-        /// The domain event module will discover all defined domain event classes
-        /// within all available plug-ins.  The module's EventTypeDispatchers property
-        /// contains all of the meta-data required to dispatch an event at runtime to
-        /// the correct consumer handlers.
-        /// </summary>
-        [Fact]
-        public void DiscoversAllDomainEvents()
-        {
-            DefaultDomainEventPlugin
-                .Act(c => c.Build())
-                .Assert((MessagingModule m) =>
-                {
-                    m.MessageTypeDispatchers
-                        .Count(et => et.Key == typeof(MockDomainEvent))
-                        .Should().Be(1);
-                });
-        }
-
-        /// <summary>
-        /// The domain event module will discover all defined domain event consumer classes
-        /// with methods that know how to handle a given domain event.  Application components
-        /// can be scanned for event handler methods during the bootstrap process by implementing
-        /// the IDomainEventConsumer marker interface.
-        /// </summary>
-        [Fact]
-        public void DiscoversDomainEventConsumerHandler()
-        {
-            DefaultDomainEventPlugin
-                .Act(c => c.Build())
-                .Assert((MessagingModule m) =>
-                {
-                    var eventDispatchers = m.MessageTypeDispatchers[typeof(MockDomainEvent)];
-                    eventDispatchers.Should().HaveCount(1);
-
-                    var dispatchInfo = eventDispatchers.First();
-                    dispatchInfo.MessageType.Should().Equals(typeof(MockDomainEvent));
-                    dispatchInfo.ConsumerType.Should().Equals(typeof(MockDomainEventConsumer));
-                    dispatchInfo.MessageHandlerMethod.Should()
-                        .Equals(typeof(MockDomainEventConsumer).GetMethod("OnEventHandlerOne"));
-                });
-        }
-
-        /// <summary>
-        /// The plug-n registers a service that can be used to publish events.
-        /// </summary>
-        [Fact]
-        public void RegistersServiceForPublishingEvents()
-        {
-            DefaultDomainEventPlugin
-                .Act(c => c.Build())
-                .Assert((AppContainer c) =>
-                {
-                    var service = c.Services.Resolve<IMessagingService>();
-                    service.Should().NotBeNull();
-                });
-        }
-
-        /// <summary>
-        /// All discovered event consumers are registered in the dependency injection container.
-        /// When an event is published, the domain event service resolves the consumer type
-        /// and obtains a reference from the container using the cached dispatch information.
-        /// </summary>
-        [Fact]
-        public void AllDomainEventConsumersRegistered()
-        {
-            DefaultDomainEventPlugin
-               .Act(c => c.Build())
-               .Assert((AppContainer c) =>
-               {
-                   var consumer = c.Services.Resolve<MockDomainEventConsumer>();
-                   consumer.Should().NotBeNull();
-               });
-        }
-
-        /// <summary>
-        /// When a domain event is published using the service, the corresponding discovered
-        /// consumer event handler methods will be invoked.
-        /// </summary>
-        [Fact]
-        public void DomainEventConsumerHandlerInvoked()
-        {
-            DefaultDomainEventPlugin
-                .Act(c =>
-                {
-                    c.Build();
-
-                    var mockEvt = new MockDomainEvent();
-                    var futureResponse = c.Services.Resolve<IMessagingService>()
-                        .PublishAsync(mockEvt);
-
-                    futureResponse.Wait();
-
-                })
-                .Assert((AppContainer c) =>
-                {
-                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
-                        .OfType<MockDomainEventConsumer>()
-                        .First();
-
-                    consumer.ExecutedHandlers.Should().ContainSingle("OnEventHandlerOne");
-                });
-        }
-
-        /// <summary>
-        /// The hosting application can specify a prefix to indicate domain event handler methods.
-        /// If this is specified, only methods starting with the prefix and have the corresponding
-        /// domain event type as a parameter will be invoked.
-        /// </summary>
-        [Fact]
-        public void AppHostCanSpecifyMessageHandlerMethodNamePrefix()
-        {
-            DefaultPrefixedDomainEventPlugin
-                 .Act(c =>
-                 {
-                     c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "WhenEvent");
-                     c.Build();
-                 })
-                .Assert((MessagingModule m) =>
-                {
-                    var eventDispatchers = m.MessageTypeDispatchers[typeof(MockDomainEvent)];
-                    eventDispatchers.Should().HaveCount(1);
-
-                    var dispatchInfo = eventDispatchers.First();
-                    dispatchInfo.MessageType.Should().Equals(typeof(MockDomainEvent));
-                    dispatchInfo.ConsumerType.Should().Equals(typeof(MockDomainEventConsumer));
-                    dispatchInfo.MessageHandlerMethod.Should().Equals(typeof(MockDomainEventConsumer).GetMethod("WhenEventHandlerTwo"));
-                });
-        }
-
-        /// <summary>
-        /// By default, consumer event handlers with a base domain event type
-        /// will not be invoked for derived events.
-        /// </summary>
-        [Fact]
-        public void ConsumerEventHandlerForBaseTypeNotInvokedByDefault()
-        {
-            DefaultDerivedDomainEventPlugin
-                .Act(c =>
-                {
-                    var mockEvt = new MockDerivedDomainEvent();
-
-                            // Note:  specifying the prefix so the event handler that is
-                            // specified to include base event types will not be called.
-                            c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "OnBaseEvent");
-                    c.Build();
-
-                    var futureResponse = c.Services.Resolve<IMessagingService>()
-                        .PublishAsync(mockEvt);
-
-                    futureResponse.Wait();
-
-                })
-                .Assert((AppContainer c) =>
-                {
-                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
-                        .OfType<MockBaseMessageConsumer>()
-                        .First();
-
-                    consumer.ExecutedHandlers.Should().BeEmpty();
-                });
-        }
-
-        /// <summary>
-        /// A consumer event handler for a base domain event type can be marked
-        /// with the IncludeDerivedEvents attribute to indicate it should be
-        /// called for any derived domain events.
-        /// </summary>
-        [Fact]
-        public void ConsumerEventHandlerForBaseTypeInvokedIfAppliedAttribute()
-        {
-            DefaultDerivedDomainEventPlugin
-                .Act(c =>
-                {
-
-                    c.Build();
-
-                    var mockEvt = new MockDerivedDomainEvent();
-                    var futureResponse = c.Services.Resolve<IMessagingService>()
-                        .PublishAsync(mockEvt);
-
-                    futureResponse.Wait();
-
-                })
-                .Assert((AppContainer c) =>
-                {
-                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
-                        .OfType<MockBaseMessageConsumer>()
-                        .First();
-
-                    consumer.ExecutedHandlers.Should().ContainSingle("OnIncludeBaseEventHandler");
-                });
-        }
-
-        /// <summary>
-        /// Unless cleared, the InProcessEventDispatcher will be used by default
-        /// to dispatch events to local consumer event handlers.
-        /// </summary>
-        [Fact]
-        public void InProcessEventDispatcherConfiguredByDefault()
-        {
-            ContainerSetup
-                .Arrange((HostTypeResolver config) =>
-                {
-                    config.AddPlugin<MockAppHostPlugin>();
-                    config.AddPlugin<MockCorePlugin>()
-                        .AddPluginType<MessagingConfig>()
-                        .AddPluginType<MessagingModule>();
-                })
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>();
-                    c.Build();
-
-                })
-                .AssertConfig((MessagingConfig ca) =>
-                {
-                    ca.PublisherTypes.Should().HaveCount(1);
-                    ca.PublisherTypes.Should().Contain(typeof(InProcessMessagePublisher));
-                });
-        }
-
-        /// <summary>
-        /// If the host application doesn't want to have the default InProcessEventDispatcher
-        /// invoked, they can clear the list and add the desired dispatcher types.
-        /// </summary>
-        [Fact]
-        public void DefaultDispatcherCanBeCleared()
-        {
-            ContainerSetup
-                .Arrange((HostTypeResolver config) =>
-                {
-                    config.AddPlugin<MockAppHostPlugin>();
-                    config.AddPlugin<MockCorePlugin>()
-                        .AddPluginType<MessagingConfig>()
-                        .AddPluginType<MessagingModule>();
-                })
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>(config => config.ClearMessagePublishers());
-                    c.Build();
-
-                })
-                .AssertConfig((MessagingConfig ca) =>
-                {
-                    ca.PublisherTypes.Should().HaveCount(0);
-                });
-        }
-
-       // [Fact]
-        public void ExceptionsRecordedForEachEventHandler()
-        {
-            ContainerSetup
-                .Arrange((HostTypeResolver config) =>
-                {
-                    config.AddPlugin<MockAppHostPlugin>()
-                        .AddPluginType<MockDomainEvent>()
-                        .AddPluginType<MockErrorMessageConsumer>();
-
-                    config.AddPlugin<MockCorePlugin>()
-                        .AddPluginType<MessagingConfig>()
-                        .AddPluginType<MessagingModule>();
-                })
-                .Act(c =>
-                {
-                    c.Build();
-
-                    var srv = c.Services.Resolve<IMessagingService>();
-                    var evt = new MockDomainEvent();
-                    var futureResult = srv.PublishAsync(evt);
-                    futureResult.Wait();
-                })
-                .Assert((c, e) =>
-                {
-
-                });
-        }
-
-        [Fact]
-        public void DispatchRuleDeterminesIfHandlerIsCalledForEvent()
-        {
-
-        }
-
-        /// <summary>
-        /// A command domain event can have only one event consumer handler.
-        /// If there are more than one event handler, an exception is raised.
-        /// </summary>
-        [Fact]
-        public void CommandEventsCanOnlyHaveOneEventHandler()
-        {
-            DefaultCommandDomainEventPlugin
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "Invalid");
-                    c.Build();
-                })
-                .Assert((c, e) =>
-                {
-                    e.Should().NotBeNull();
-                    e.Should().BeOfType<ContainerException>();
-                });
-        }
-
-        /// <summary>
-        /// Command domain events can have a return result.
-        /// </summary>
-        [Fact]
-        public void CommandEventsCanHaveResult()
-        {
-            MockCommandResult result = null;
-
-            DefaultCommandDomainEventPlugin
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "On");
-                    c.Build();
-
-                    var domainEventSrv = c.Services.Resolve<IMessagingService>();
-                    var evt = new MockCommand();
-                    var futureResults = domainEventSrv.PublishAsync(evt);
-
-                    result = futureResults.Result;
-
-                })
-                .Assert((AppContainer c) =>
-                {
-                    result.Should().NotBeNull();
-                    var consumer = c.Services.Resolve<MockCommandConsumer>();
-                    consumer.ExecutedHandlers.Should().HaveCount(1);
-                    consumer.ExecutedHandlers.Should().Contain("OnCommand");
-                });
-        }
-
-        /// <summary>
-        /// When a domain-event is published, the event handlers can be
-        /// asynchronous.  This test publishes an event that will be
-        /// handled by two asynchronous handlers and one synchronous.
-        /// </summary>
-   //     [Fact]
-        public void AsyncHandlersCanBeInvoked()
-        {
-            DefaultAsyncDomainEventPlugin
-                .Act(c =>
-                {
-                    c.WithConfig<MessagingConfig>();
-                    c.Build();
-
-                    var domainEventSrv = c.Services.Resolve<IMessagingService>();
-                    var evt = new MockDomainEvent();
-                    var futureResults = domainEventSrv.PublishAsync(evt);
-
-                    futureResults.Wait();
-
-                })
-                .Assert((AppContainer c) =>
-                {
-                    var consumer = c.Services.Resolve<MockAsyncMessageConsumer>();
-                    consumer.ExecutedHandlers.Should().HaveCount(3);
-                    consumer.ExecutedHandlers.Should().Contain("OnEvent1");
-                    consumer.ExecutedHandlers.Should().Contain("OnEvent2");
-                    consumer.ExecutedHandlers.Should().Contain("OnEvent3");
-                });
-        }
-
-        private ContainerAct DefaultDomainEventPlugin
-        {
-            get
-            {
-                return ContainerSetup
-                   .Arrange((HostTypeResolver config) =>
-                   {
-                       // Use the application host to simulate a plug-in with domain-event related
-                       // types that will be discovered by the Domain Event Plug-in.
-                       config.AddPlugin<MockAppHostPlugin>()
-                            .AddPluginType<MockDomainEvent>()
-                            .AddPluginType<MockDomainEventConsumer>();
-
-                       config.AddPlugin<MockCorePlugin>()
-                            .AddPluginType<MessagingConfig>()
-                            .AddPluginType<MessagingModule>();
-                   });
-            }
-        }
-
-        private ContainerAct DefaultAsyncDomainEventPlugin
-        {
-            get
-            {
-                return ContainerSetup
-                   .Arrange((HostTypeResolver config) =>
-                   {
-                       // Use the application host to simulate a plug-in with domain-event related
-                       // types that will be discovered by the Domain Event Plug-in.
-                       config.AddPlugin<MockAppHostPlugin>()
-                            .AddPluginType<MockDomainEvent>()
-                            .AddPluginType<MockAsyncMessageConsumer>();
-
-                       config.AddPlugin<MockCorePlugin>()
-                            .AddPluginType<MessagingConfig>()
-                            .AddPluginType<MessagingModule>();
-                   });
-            }
-        }
-
-        private ContainerAct DefaultCommandDomainEventPlugin
-        {
-            get
-            {
-                return ContainerSetup
-                   .Arrange((HostTypeResolver config) =>
-                   {
-                       // Use the application host to simulate a plug-in with domain-event related
-                       // types that will be discovered by the Domain Event Plug-in.
-                       config.AddPlugin<MockAppHostPlugin>()
-                            .AddPluginType<MockCommand>()
-                            .AddPluginType<MockCommandConsumer>();
-
-                       config.AddPlugin<MockCorePlugin>()
-                            .AddPluginType<MessagingConfig>()
-                            .AddPluginType<MessagingModule>();
-                   });
-            }
-        }
-
-        private ContainerAct DefaultPrefixedDomainEventPlugin
-        {
-            get
-            {
-                return ContainerSetup
-                   .Arrange((HostTypeResolver config) =>
-                   {
-                       // Use the application host to simulate a plug-in with domain-event related
-                       // types that will be discovered by the Domain Event Plug-in.
-                       config.AddPlugin<MockAppHostPlugin>()
-                            .AddPluginType<MockDomainEvent>()
-                            .AddPluginType<MockPrefixedMessageConsumer>();
-
-                       config.AddPlugin<MockCorePlugin>()
-                            .AddPluginType<MessagingConfig>() // TODO: See why test fails if this is removed..
-                            .AddPluginType<MessagingModule>();
-                   });
-            }
-        }
-
-        private ContainerAct DefaultDerivedDomainEventPlugin
-        {
-            get
-            {
-                return ContainerSetup
-                   .Arrange((HostTypeResolver config) =>
-                   {
-                       // Use the application host to simulate a plug-in with domain-event related
-                       // types that will be discovered by the Domain Event Plug-in.
-                       config.AddPlugin<MockAppHostPlugin>()
-                            .AddPluginType<MockDerivedDomainEvent>()
-                            .AddPluginType<MockBaseMessageConsumer>();
-
-                       config.AddPlugin<MockCorePlugin>()
-                            .AddPluginType<MessagingConfig>()
-                            .AddPluginType<MessagingModule>();
-
-                       var corePlugin = new MockCorePlugin();
-                   });
-            }
-        }
-    }
-}
+//using Autofac;
+//using FluentAssertions;
+//using NetFusion.Bootstrap.Container;
+//using NetFusion.Bootstrap.Exceptions;
+//using NetFusion.Bootstrap.Testing;
+//using NetFusion.Core.Tests.Messaging.Mocks;
+//using NetFusion.Messaging;
+//using NetFusion.Messaging.Config;
+//using NetFusion.Messaging.Core;
+//using NetFusion.Messaging.Modules;
+//using NetFusion.Tests.Core.Bootstrap.Mocks;
+//using System.Collections.Generic;
+//using System.Linq;
+//using Xunit;
+
+//namespace NetFusion.Core.Test.Messaging
+//{
+//    /// <summary>
+//    /// Domain events provide a way of modeling events that exist within the problem
+//    /// domain and needed to be handled by one or more application components.  Domain
+//    /// events also provide a means of keeping application components loosely coupled.
+//    /// Domain events are usually in-process and single threaded.  However, asynchronous
+//    /// non-blocking event handling is also often provided.
+//    ///
+//    /// The domain-event plug-in provides an extension point where other plug-ins can
+//    /// extend this behavior and provide the delivering of events on a service bus.
+//    /// </summary>
+//    public class MessagingTests
+//    {
+//        /// <summary>
+//        /// The domain event plug-in has a configuration class for specifying related settings.
+//        /// </summary>
+//        [Fact]
+//        public void DiscoversMessagingConfiguration()
+//        {
+//            DefaultDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "WhenEvent");
+//                    c.Build();
+//                })
+//                .Assert((MessagingModule m) =>
+//                {
+//                    var moduleConfig = m.Context.Plugin.GetConfig<MessagingConfig>();
+//                    moduleConfig.Should().NotBeNull();
+//                    moduleConfig.ConsumerMethodPrefix.Should().Be("WhenEvent");
+//                });
+//        }
+
+//        /// <summary>
+//        /// The domain event module will discover all defined domain event classes
+//        /// within all available plug-ins.  The module's EventTypeDispatchers property
+//        /// contains all of the meta-data required to dispatch an event at runtime to
+//        /// the correct consumer handlers.
+//        /// </summary>
+//        [Fact]
+//        public void DiscoversAllDomainEvents()
+//        {
+//            DefaultDomainEventPlugin
+//                .Act(c => c.Build())
+//                .Assert((MessagingModule m) =>
+//                {
+//                    m.MessageTypeDispatchers
+//                        .Count(et => et.Key == typeof(MockDomainEvent))
+//                        .Should().Be(1);
+//                });
+//        }
+
+//        /// <summary>
+//        /// The domain event module will discover all defined domain event consumer classes
+//        /// with methods that know how to handle a given domain event.  Application components
+//        /// can be scanned for event handler methods during the bootstrap process by implementing
+//        /// the IDomainEventConsumer marker interface.
+//        /// </summary>
+//        [Fact]
+//        public void DiscoversDomainEventConsumerHandler()
+//        {
+//            DefaultDomainEventPlugin
+//                .Act(c => c.Build())
+//                .Assert((MessagingModule m) =>
+//                {
+//                    var eventDispatchers = m.MessageTypeDispatchers[typeof(MockDomainEvent)];
+//                    eventDispatchers.Should().HaveCount(1);
+
+//                    var dispatchInfo = eventDispatchers.First();
+//                    dispatchInfo.MessageType.Should().Equals(typeof(MockDomainEvent));
+//                    dispatchInfo.ConsumerType.Should().Equals(typeof(MockDomainEventConsumer));
+//                    dispatchInfo.MessageHandlerMethod.Should()
+//                        .Equals(typeof(MockDomainEventConsumer).GetMethod("OnEventHandlerOne"));
+//                });
+//        }
+
+//        /// <summary>
+//        /// The plug-n registers a service that can be used to publish events.
+//        /// </summary>
+//        [Fact]
+//        public void RegistersServiceForPublishingEvents()
+//        {
+//            DefaultDomainEventPlugin
+//                .Act(c => c.Build())
+//                .Assert((AppContainer c) =>
+//                {
+//                    var service = c.Services.Resolve<IMessagingService>();
+//                    service.Should().NotBeNull();
+//                });
+//        }
+
+//        /// <summary>
+//        /// All discovered event consumers are registered in the dependency injection container.
+//        /// When an event is published, the domain event service resolves the consumer type
+//        /// and obtains a reference from the container using the cached dispatch information.
+//        /// </summary>
+//        [Fact]
+//        public void AllDomainEventConsumersRegistered()
+//        {
+//            DefaultDomainEventPlugin
+//               .Act(c => c.Build())
+//               .Assert((AppContainer c) =>
+//               {
+//                   var consumer = c.Services.Resolve<MockDomainEventConsumer>();
+//                   consumer.Should().NotBeNull();
+//               });
+//        }
+
+//        /// <summary>
+//        /// When a domain event is published using the service, the corresponding discovered
+//        /// consumer event handler methods will be invoked.
+//        /// </summary>
+//        [Fact]
+//        public void DomainEventConsumerHandlerInvoked()
+//        {
+//            DefaultDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    c.Build();
+
+//                    var mockEvt = new MockDomainEvent();
+//                    var futureResponse = c.Services.Resolve<IMessagingService>()
+//                        .PublishAsync(mockEvt);
+
+//                    futureResponse.Wait();
+
+//                })
+//                .Assert((AppContainer c) =>
+//                {
+//                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
+//                        .OfType<MockDomainEventConsumer>()
+//                        .First();
+
+//                    consumer.ExecutedHandlers.Should().ContainSingle("OnEventHandlerOne");
+//                });
+//        }
+
+//        /// <summary>
+//        /// The hosting application can specify a prefix to indicate domain event handler methods.
+//        /// If this is specified, only methods starting with the prefix and have the corresponding
+//        /// domain event type as a parameter will be invoked.
+//        /// </summary>
+//        [Fact]
+//        public void AppHostCanSpecifyMessageHandlerMethodNamePrefix()
+//        {
+//            DefaultPrefixedDomainEventPlugin
+//                 .Act(c =>
+//                 {
+//                     c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "WhenEvent");
+//                     c.Build();
+//                 })
+//                .Assert((MessagingModule m) =>
+//                {
+//                    var eventDispatchers = m.MessageTypeDispatchers[typeof(MockDomainEvent)];
+//                    eventDispatchers.Should().HaveCount(1);
+
+//                    var dispatchInfo = eventDispatchers.First();
+//                    dispatchInfo.MessageType.Should().Equals(typeof(MockDomainEvent));
+//                    dispatchInfo.ConsumerType.Should().Equals(typeof(MockDomainEventConsumer));
+//                    dispatchInfo.MessageHandlerMethod.Should().Equals(typeof(MockDomainEventConsumer).GetMethod("WhenEventHandlerTwo"));
+//                });
+//        }
+
+//        /// <summary>
+//        /// By default, consumer event handlers with a base domain event type
+//        /// will not be invoked for derived events.
+//        /// </summary>
+//        [Fact]
+//        public void ConsumerEventHandlerForBaseTypeNotInvokedByDefault()
+//        {
+//            DefaultDerivedDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    var mockEvt = new MockDerivedDomainEvent();
+
+//                            // Note:  specifying the prefix so the event handler that is
+//                            // specified to include base event types will not be called.
+//                            c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "OnBaseEvent");
+//                    c.Build();
+
+//                    var futureResponse = c.Services.Resolve<IMessagingService>()
+//                        .PublishAsync(mockEvt);
+
+//                    futureResponse.Wait();
+
+//                })
+//                .Assert((AppContainer c) =>
+//                {
+//                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
+//                        .OfType<MockBaseMessageConsumer>()
+//                        .First();
+
+//                    consumer.ExecutedHandlers.Should().BeEmpty();
+//                });
+//        }
+
+//        /// <summary>
+//        /// A consumer event handler for a base domain event type can be marked
+//        /// with the IncludeDerivedEvents attribute to indicate it should be
+//        /// called for any derived domain events.
+//        /// </summary>
+//        [Fact]
+//        public void ConsumerEventHandlerForBaseTypeInvokedIfAppliedAttribute()
+//        {
+//            DefaultDerivedDomainEventPlugin
+//                .Act(c =>
+//                {
+
+//                    c.Build();
+
+//                    var mockEvt = new MockDerivedDomainEvent();
+//                    var futureResponse = c.Services.Resolve<IMessagingService>()
+//                        .PublishAsync(mockEvt);
+
+//                    futureResponse.Wait();
+
+//                })
+//                .Assert((AppContainer c) =>
+//                {
+//                    var consumer = c.Services.Resolve<IEnumerable<IMessageConsumer>>()
+//                        .OfType<MockBaseMessageConsumer>()
+//                        .First();
+
+//                    consumer.ExecutedHandlers.Should().ContainSingle("OnIncludeBaseEventHandler");
+//                });
+//        }
+
+//        /// <summary>
+//        /// Unless cleared, the InProcessEventDispatcher will be used by default
+//        /// to dispatch events to local consumer event handlers.
+//        /// </summary>
+//        [Fact]
+//        public void InProcessEventDispatcherConfiguredByDefault()
+//        {
+//            ContainerSetup
+//                .Arrange((HostTypeResolver config) =>
+//                {
+//                    config.AddPlugin<MockAppHostPlugin>();
+//                    config.AddPlugin<MockCorePlugin>()
+//                        .AddPluginType<MessagingConfig>()
+//                        .AddPluginType<MessagingModule>();
+//                })
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>();
+//                    c.Build();
+
+//                })
+//                .AssertConfig((MessagingConfig ca) =>
+//                {
+//                    ca.PublisherTypes.Should().HaveCount(1);
+//                    ca.PublisherTypes.Should().Contain(typeof(InProcessMessagePublisher));
+//                });
+//        }
+
+//        /// <summary>
+//        /// If the host application doesn't want to have the default InProcessEventDispatcher
+//        /// invoked, they can clear the list and add the desired dispatcher types.
+//        /// </summary>
+//        [Fact]
+//        public void DefaultDispatcherCanBeCleared()
+//        {
+//            ContainerSetup
+//                .Arrange((HostTypeResolver config) =>
+//                {
+//                    config.AddPlugin<MockAppHostPlugin>();
+//                    config.AddPlugin<MockCorePlugin>()
+//                        .AddPluginType<MessagingConfig>()
+//                        .AddPluginType<MessagingModule>();
+//                })
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>(config => config.ClearMessagePublishers());
+//                    c.Build();
+
+//                })
+//                .AssertConfig((MessagingConfig ca) =>
+//                {
+//                    ca.PublisherTypes.Should().HaveCount(0);
+//                });
+//        }
+
+//       // [Fact]
+//        public void ExceptionsRecordedForEachEventHandler()
+//        {
+//            ContainerSetup
+//                .Arrange((HostTypeResolver config) =>
+//                {
+//                    config.AddPlugin<MockAppHostPlugin>()
+//                        .AddPluginType<MockDomainEvent>()
+//                        .AddPluginType<MockErrorMessageConsumer>();
+
+//                    config.AddPlugin<MockCorePlugin>()
+//                        .AddPluginType<MessagingConfig>()
+//                        .AddPluginType<MessagingModule>();
+//                })
+//                .Act(c =>
+//                {
+//                    c.Build();
+
+//                    var srv = c.Services.Resolve<IMessagingService>();
+//                    var evt = new MockDomainEvent();
+//                    var futureResult = srv.PublishAsync(evt);
+//                    futureResult.Wait();
+//                })
+//                .Assert((c, e) =>
+//                {
+
+//                });
+//        }
+
+//        [Fact]
+//        public void DispatchRuleDeterminesIfHandlerIsCalledForEvent()
+//        {
+
+//        }
+
+//        /// <summary>
+//        /// A command domain event can have only one event consumer handler.
+//        /// If there are more than one event handler, an exception is raised.
+//        /// </summary>
+//        [Fact]
+//        public void CommandEventsCanOnlyHaveOneEventHandler()
+//        {
+//            DefaultCommandDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "Invalid");
+//                    c.Build();
+//                })
+//                .Assert((c, e) =>
+//                {
+//                    e.Should().NotBeNull();
+//                    e.Should().BeOfType<ContainerException>();
+//                });
+//        }
+
+//        /// <summary>
+//        /// Command domain events can have a return result.
+//        /// </summary>
+//        [Fact]
+//        public void CommandEventsCanHaveResult()
+//        {
+//            MockCommandResult result = null;
+
+//            DefaultCommandDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>(config => config.ConsumerMethodPrefix = "On");
+//                    c.Build();
+
+//                    var domainEventSrv = c.Services.Resolve<IMessagingService>();
+//                    var evt = new MockCommand();
+//                    var futureResults = domainEventSrv.PublishAsync(evt);
+
+//                    result = futureResults.Result;
+
+//                })
+//                .Assert((AppContainer c) =>
+//                {
+//                    result.Should().NotBeNull();
+//                    var consumer = c.Services.Resolve<MockCommandConsumer>();
+//                    consumer.ExecutedHandlers.Should().HaveCount(1);
+//                    consumer.ExecutedHandlers.Should().Contain("OnCommand");
+//                });
+//        }
+
+//        /// <summary>
+//        /// When a domain-event is published, the event handlers can be
+//        /// asynchronous.  This test publishes an event that will be
+//        /// handled by two asynchronous handlers and one synchronous.
+//        /// </summary>
+//   //     [Fact]
+//        public void AsyncHandlersCanBeInvoked()
+//        {
+//            DefaultAsyncDomainEventPlugin
+//                .Act(c =>
+//                {
+//                    c.WithConfig<MessagingConfig>();
+//                    c.Build();
+
+//                    var domainEventSrv = c.Services.Resolve<IMessagingService>();
+//                    var evt = new MockDomainEvent();
+//                    var futureResults = domainEventSrv.PublishAsync(evt);
+
+//                    futureResults.Wait();
+
+//                })
+//                .Assert((AppContainer c) =>
+//                {
+//                    var consumer = c.Services.Resolve<MockAsyncMessageConsumer>();
+//                    consumer.ExecutedHandlers.Should().HaveCount(3);
+//                    consumer.ExecutedHandlers.Should().Contain("OnEvent1");
+//                    consumer.ExecutedHandlers.Should().Contain("OnEvent2");
+//                    consumer.ExecutedHandlers.Should().Contain("OnEvent3");
+//                });
+//        }
+
+//        private ContainerAct DefaultDomainEventPlugin
+//        {
+//            get
+//            {
+//                return ContainerSetup
+//                   .Arrange((HostTypeResolver config) =>
+//                   {
+//                       // Use the application host to simulate a plug-in with domain-event related
+//                       // types that will be discovered by the Domain Event Plug-in.
+//                       config.AddPlugin<MockAppHostPlugin>()
+//                            .AddPluginType<MockDomainEvent>()
+//                            .AddPluginType<MockDomainEventConsumer>();
+
+//                       config.AddPlugin<MockCorePlugin>()
+//                            .AddPluginType<MessagingConfig>()
+//                            .AddPluginType<MessagingModule>();
+//                   });
+//            }
+//        }
+
+//        private ContainerAct DefaultAsyncDomainEventPlugin
+//        {
+//            get
+//            {
+//                return ContainerSetup
+//                   .Arrange((HostTypeResolver config) =>
+//                   {
+//                       // Use the application host to simulate a plug-in with domain-event related
+//                       // types that will be discovered by the Domain Event Plug-in.
+//                       config.AddPlugin<MockAppHostPlugin>()
+//                            .AddPluginType<MockDomainEvent>()
+//                            .AddPluginType<MockAsyncMessageConsumer>();
+
+//                       config.AddPlugin<MockCorePlugin>()
+//                            .AddPluginType<MessagingConfig>()
+//                            .AddPluginType<MessagingModule>();
+//                   });
+//            }
+//        }
+
+//        private ContainerAct DefaultCommandDomainEventPlugin
+//        {
+//            get
+//            {
+//                return ContainerSetup
+//                   .Arrange((HostTypeResolver config) =>
+//                   {
+//                       // Use the application host to simulate a plug-in with domain-event related
+//                       // types that will be discovered by the Domain Event Plug-in.
+//                       config.AddPlugin<MockAppHostPlugin>()
+//                            .AddPluginType<MockCommand>()
+//                            .AddPluginType<MockCommandConsumer>();
+
+//                       config.AddPlugin<MockCorePlugin>()
+//                            .AddPluginType<MessagingConfig>()
+//                            .AddPluginType<MessagingModule>();
+//                   });
+//            }
+//        }
+
+//        private ContainerAct DefaultPrefixedDomainEventPlugin
+//        {
+//            get
+//            {
+//                return ContainerSetup
+//                   .Arrange((HostTypeResolver config) =>
+//                   {
+//                       // Use the application host to simulate a plug-in with domain-event related
+//                       // types that will be discovered by the Domain Event Plug-in.
+//                       config.AddPlugin<MockAppHostPlugin>()
+//                            .AddPluginType<MockDomainEvent>()
+//                            .AddPluginType<MockPrefixedMessageConsumer>();
+
+//                       config.AddPlugin<MockCorePlugin>()
+//                            .AddPluginType<MessagingConfig>() // TODO: See why test fails if this is removed..
+//                            .AddPluginType<MessagingModule>();
+//                   });
+//            }
+//        }
+
+//        private ContainerAct DefaultDerivedDomainEventPlugin
+//        {
+//            get
+//            {
+//                return ContainerSetup
+//                   .Arrange((HostTypeResolver config) =>
+//                   {
+//                       // Use the application host to simulate a plug-in with domain-event related
+//                       // types that will be discovered by the Domain Event Plug-in.
+//                       config.AddPlugin<MockAppHostPlugin>()
+//                            .AddPluginType<MockDerivedDomainEvent>()
+//                            .AddPluginType<MockBaseMessageConsumer>();
+
+//                       config.AddPlugin<MockCorePlugin>()
+//                            .AddPluginType<MessagingConfig>()
+//                            .AddPluginType<MessagingModule>();
+
+//                       var corePlugin = new MockCorePlugin();
+//                   });
+//            }
+//        }
+//    }
+//}


Corrected

Corrected

--- src/AngleSharp/Dom/MutationObserver.cs
+++ src/AngleSharp/Dom/MutationObserver.cs
@@ -219,7 +219,7 @@
                     throw new DomException(DomError.Syntax);

                 if (node is Document document) {
-                    node = node.DocumentElement;
+                    node = document.DocumentElement;
                     target = node;
                 }


[Modify] Replace it

[Modify] Replace it

--- websocket-sharp/Server/WebSocketServiceHost.cs
+++ websocket-sharp/Server/WebSocketServiceHost.cs
@@ -129,10 +129,7 @@

     internal void Stop (ushort code, string reason)
     {
-      var e = new CloseEventArgs (code, reason);
-      var send = !code.IsReserved ();
-      var bytes = send ? WebSocketFrame.CreateCloseFrame (e.PayloadData, false).ToArray () : null;
-      Sessions.Stop (e, bytes, send);
+      Sessions.Stop (code, reason);
     }

     #endregion


IGNITE-6255 .NET: Fix TestAffinityCall to take late affinity assignment into account

This closes #2589

--- modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
+++ modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeApiTest.cs
@@ -29,6 +29,7 @@
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.Common;
     using Apache.Ignite.Core.Compute;
+    using Apache.Ignite.Core.Events;
     using Apache.Ignite.Core.Impl;
     using Apache.Ignite.Core.Impl.Binary;
     using Apache.Ignite.Core.Resource;
@@ -151,6 +152,11 @@
             _grid1 = Ignition.Start(Configuration(configs.Item1));
             _grid2 = Ignition.Start(Configuration(configs.Item2));
             _grid3 = Ignition.Start(Configuration(configs.Item3));
+
+            // Wait for rebalance.
+            var events = _grid1.GetEvents();
+            events.EnableLocal(EventType.CacheRebalanceStopped);
+            events.WaitForLocal(EventType.CacheRebalanceStopped);
         }

         /// <summary>


Buttons size

Buttons size

--- Project/WorkshopManager/WorkshopManager/Forms/RequestsDatabaseView/RequestsDatabaseView.Designer.cs
+++ Project/WorkshopManager/WorkshopManager/Forms/RequestsDatabaseView/RequestsDatabaseView.Designer.cs
@@ -28,7 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
             this.requestsGroupBox = new System.Windows.Forms.GroupBox();
             this.requestsDataGridView = new System.Windows.Forms.DataGridView();
             this.modifyGroupBox = new System.Windows.Forms.GroupBox();
@@ -62,14 +62,14 @@
             this.requestsDataGridView.AllowUserToDeleteRows = false;
             this.requestsDataGridView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
             this.requestsDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
-            dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
-            dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
-            dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
-            dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
-            dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
-            dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
-            this.requestsDataGridView.DefaultCellStyle = dataGridViewCellStyle2;
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+            dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
+            dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
+            dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
+            dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+            dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+            dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+            this.requestsDataGridView.DefaultCellStyle = dataGridViewCellStyle1;
             this.requestsDataGridView.Location = new System.Drawing.Point(7, 20);
             this.requestsDataGridView.MultiSelect = false;
             this.requestsDataGridView.Name = "requestsDataGridView";
@@ -155,7 +155,7 @@
             //
             this.generatePDFbutton.Location = new System.Drawing.Point(583, 170);
             this.generatePDFbutton.Name = "generatePDFbutton";
-            this.generatePDFbutton.Size = new System.Drawing.Size(91, 32);
+            this.generatePDFbutton.Size = new System.Drawing.Size(91, 42);
             this.generatePDFbutton.TabIndex = 3;
             this.generatePDFbutton.Text = "Generate Report";
             this.generatePDFbutton.UseVisualStyleBackColor = true;
@@ -165,7 +165,7 @@
             //
             this.archivizeUnarchivizeButton.Location = new System.Drawing.Point(680, 170);
             this.archivizeUnarchivizeButton.Name = "archivizeUnarchivizeButton";
-            this.archivizeUnarchivizeButton.Size = new System.Drawing.Size(90, 32);
+            this.archivizeUnarchivizeButton.Size = new System.Drawing.Size(90, 42);
             this.archivizeUnarchivizeButton.TabIndex = 4;
             this.archivizeUnarchivizeButton.Text = "Archive";
             this.archivizeUnarchivizeButton.UseVisualStyleBackColor = true;


把操作数据库的方法改为虚方法

把操作数据库的方法改为虚方法

--- implementation/src/SSystem.Processors/DbProcessor.cs
+++ implementation/src/SSystem.Processors/DbProcessor.cs
@@ -13,7 +13,7 @@
         private DbProviderFactory m_CacheFactory;
         public int ExecuteTimeoutBySecond { get; set; }

-        public int ExecuteNonQuery(IDbCommand icom)
+        public virtual int ExecuteNonQuery(IDbCommand icom)
         {
             if (icom.Connection == null)
             {
@@ -23,7 +23,7 @@
             return icom.ExecuteNonQuery();
         }

-        public object ExecuteScalar(IDbCommand icom)
+        public virtual object ExecuteScalar(IDbCommand icom)
         {
             if (icom.Connection == null)
             {
@@ -33,7 +33,7 @@
             return icom.ExecuteScalar();
         }

-        public DataSet QueryDataSet(IDbCommand icom, string providerName)
+        public virtual DataSet QueryDataSet(IDbCommand icom, string providerName)
         {
             if (icom.Connection == null)
             {
@@ -64,7 +64,7 @@
             return ds;
         }

-        public IDataReader QueryDataReader(IDbCommand iCom)
+        public virtual IDataReader QueryDataReader(IDbCommand iCom)
         {
             if (iCom.Connection == null)
             {
@@ -96,14 +96,14 @@
             }
         }

-        public DbProviderFactory CreateDbProviderFactory(string connectionString, string providerName)
+        public virtual DbProviderFactory CreateDbProviderFactory(string connectionString, string providerName)
         {
             m_CacheFactory = m_CacheFactory ?? DbProviderFactories.GetFactory(providerName);

             return m_CacheFactory;
         }

-        public IDbDataAdapter QueryDbDataAdapter(IDbCommand iCom, DbProviderFactory df)
+        public virtual IDbDataAdapter QueryDbDataAdapter(IDbCommand iCom, DbProviderFactory df)
         {
             DbDataAdapter da = df.CreateDataAdapter();
             da.SelectCommand = iCom as DbCommand;


Use Size not PixelSize in ImageTests.

Use Size not PixelSize in ImageTests.

`Image` now bases the size of a bitmap on `IImage.Size`.

--- tests/Avalonia.Controls.UnitTests/ImageTests.cs
+++ tests/Avalonia.Controls.UnitTests/ImageTests.cs
@@ -169,7 +169,7 @@

         private IBitmap CreateBitmap(int width, int height)
         {
-            return Mock.Of<IBitmap>(x => x.PixelSize == new PixelSize(width, height));
+            return Mock.Of<IBitmap>(x => x.Size == new Size(width, height));
         }
     }
 }


Updated sample.

Updated sample.

--- src/ConnectQl.Sample.Net461/Program.cs
+++ src/ConnectQl.Sample.Net461/Program.cs
@@ -47,7 +47,7 @@
                 {
                     c.DocumentUpdated += (o, e) => { };

-                    //c.UpdateDocument("Script3.cql", File.ReadAllText("Script3.cql"), 1);
+                    c.UpdateDocument("Script3.cql", File.ReadAllText("Script3.cql"), 1);

                     await Task.Delay(1000000);
                 }


Add required namespace usage (fixes the build)

--- src/DisqusN/DisqusRequestParameters.cs
+++ src/DisqusN/DisqusRequestParameters.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 using System.Reflection;
 using System.Text;
 using LanguageExt;


Upgrade version.

Upgrade version.

--- src/ECommon/Properties/AssemblyInfo.cs
+++ src/ECommon/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 // 可以指定所有这些值，也可以使用“生成号”和“修订号”的默认值，
 // 方法是按如下所示使用“*”:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.4.2")]
-[assembly: AssemblyFileVersion("1.4.2")]
+[assembly: AssemblyVersion("1.4.3")]
+[assembly: AssemblyFileVersion("1.4.3")]


Changed show to showdialog to set mainwindow unactive while constraints are opened

--- src/EditorPrototype/MainWindow.xaml.cs
+++ src/EditorPrototype/MainWindow.xaml.cs
@@ -490,7 +490,7 @@
         private void ConstraintsButtonClick(object sender, EventArgs e)
         {
             ConstraintsWindow constraints = new ConstraintsWindow();
-            constraints.Show();
+            constraints.ShowDialog();
         }
     }
 }


Removing last instance of that test cache object

--- src/GitHub.Api/Cache/CacheContainer.cs
+++ src/GitHub.Api/Cache/CacheContainer.cs
@@ -198,7 +198,6 @@
         IGitStatusCache GitStatusCache { get; }
         IGitLocksCache GitLocksCache { get; }
         IGitUserCache GitUserCache { get; }
-        ITestCache TestCache { get; }
         void Validate(CacheType cacheType);
         void ValidateAll();
         void Invalidate(CacheType cacheType);


Update IntelliSenseDisplay.cs

Update IntelliSenseDisplay.cs

Unsubscribe from the Win events when disposed.
Carry the xll path to the WinEventHook.

--- IntelliSenseDisplay.cs
+++ IntelliSenseDisplay.cs
@@ -59,12 +59,18 @@
             _addInReferences = new List<string>();

             // NOTE: Add for separate UI Automation Thread
-            _threadAuto = new Thread(RunUIAutomation);
-            _threadAuto.Start();
+            //_threadAuto = new Thread(RunUIAutomation);
+            //_threadAuto.Start();

             // NOTE: For running UI Automation Thread on main Excel thread
             //RunUIAutomation();
         }
+
+        public void SetXllOwner(string xllPath)
+        {
+            _threadAuto = new Thread(() => RunUIAutomation(xllPath));
+            _threadAuto.Start();
+        }

         public void RegisterFunctionInfo(IntelliSenseFunctionInfo functionInfo)
         {
@@ -72,41 +78,42 @@
             _functionInfoMap.Add(functionInfo.FunctionName, functionInfo);
         }

-        void RunUIAutomation()
+        void RunUIAutomation(string xllPath)
         {
             // NOTE: Add for separate UI Automation Thread
             _syncContextAuto = new WindowsFormsSynchronizationContext();
             //_syncContextAuto = _syncContextMain;

-            _windowWatcher = new WindowWatcher();
+            _windowWatcher = new WindowWatcher(xllPath);
             _formulaEditWatcher = new FormulaEditWatcher(_windowWatcher);
             _popupListWatcher = new PopupListWatcher(_windowWatcher);

-            _windowWatcher.MainWindowChanged +=
-                delegate
-                {
-                    Debug.Print("### Thread calling MainWindowChanged event: " + Thread.CurrentThread.ManagedThreadId);
-                    _syncContextMain.Post(delegate { MainWindowChanged(); }, null);
-                    // MainWindowChanged();
-                };
-
-            _popupListWatcher.SelectedItemChanged +=
-                delegate
-                {
-                    _syncContextMain.Post(delegate { PopupListSelectedItemChanged(); }, null);
-                    // PopupListSelectedItemChanged();
-                };
-            _formulaEditWatcher.StateChanged +=
-                delegate
-                {
-                    _syncContextMain.Post(delegate { FormulaEditStateChanged(); }, null);
-                    // FormulaEditStateChanged();
-
-                };
+            _windowWatcher.MainWindowChanged += OnMainWindowChanged;
+            _popupListWatcher.SelectedItemChanged += OnSelectedItemChanged;
+            _formulaEditWatcher.StateChanged += OnStateChanged;

             _windowWatcher.TryInitialize();
             // NOTE: Add for separate UI Automation Thread
              Application.Run();
+        }
+
+        private void OnMainWindowChanged(object sender, EventArgs args)
+        {
+            Debug.Print("### Thread calling MainWindowChanged event: " + Thread.CurrentThread.ManagedThreadId);
+            _syncContextMain.Post(delegate { MainWindowChanged(); }, null);
+            // MainWindowChanged();
+        }
+
+        private void OnSelectedItemChanged(object sender, EventArgs args)
+        {
+            _syncContextMain.Post(delegate { PopupListSelectedItemChanged(); }, null);
+            // PopupListSelectedItemChanged();
+        }
+
+        private void OnStateChanged(object sender, EventArgs args)
+        {
+            _syncContextMain.Post(delegate { FormulaEditStateChanged(); }, null);
+            // FormulaEditStateChanged();
         }

         void MainWindowChanged()
@@ -332,16 +339,19 @@
                 {
                     if (_windowWatcher != null)
                     {
+                        _windowWatcher.MainWindowChanged -= OnMainWindowChanged;
                         _windowWatcher.Dispose();
                         _windowWatcher = null;
                     }
                     if (_formulaEditWatcher != null)
                     {
+                        _formulaEditWatcher.StateChanged -= OnStateChanged;
                         _formulaEditWatcher.Dispose();
                         _formulaEditWatcher = null;
                     }
                     if (_popupListWatcher != null)
                     {
+                        _popupListWatcher.SelectedItemChanged -= OnSelectedItemChanged;
                         _popupListWatcher.Dispose();
                         _popupListWatcher = null;
                     }


fix of error reporting within transient modules

git-tfs-id: [http://falcon:8080/tfs/Projects]$/Phalanger/Main;C3088

--- Source/Core/Utils.cs
+++ Source/Core/Utils.cs
@@ -2628,7 +2628,7 @@
         /// <param name="realTypeFullName">Expecting <see cref="Type.FullName"/> (type CLR full name, including <c>.</c>, <c>+</c>) of a type from within <see cref="PHP.Core.Reflection.TransientModule"/>, <see cref="PHP.Core.Reflection.ScriptModule"/> or <see cref="PHP.Core.Reflection.PureModule"/>.</param>
         /// <param name="transientId"><c>-1</c> or Id of transiend module.</param>
         /// <param name="sourceFile"><c>null</c> or relative file name of the contained type.</param>
-        /// <param name="typeName">Cannot be null. PHP type name without the prefixed <c><</c>~<c>></c> information. CLR notation of namespaces.</param>
+        /// <param name="typeName">PHP type name without the prefixed <c><</c>~<c>></c> information. CLR notation of namespaces. Can be <c>null</c> reference if there is no type name (global function in transient module).</param>
         internal static void ParseTypeId(string/*!*/realTypeFullName, out int transientId, out string sourceFile, out string typeName)
         {
             Debug.Assert(!string.IsNullOrEmpty(realTypeFullName));
@@ -2660,16 +2660,23 @@
                     closing = 1;
                 }

-                // parse typeName out:
-                Debug.Assert(
-                    realTypeFullName.Length > closing + 2 && realTypeFullName[closing + 1] == '.',
-                    "Unexpected Type.FullName! Missing '.' after '>' in '" + realTypeFullName + "'.");
-
-                // get the type name (without version id and generic params):
-                typeName = QualifiedName.SubstringWithoutBackquoteAndHash(
-                    realTypeFullName,
-                    closing + 2,
-                    realTypeFullName.Length - closing - 2);
+                if (realTypeFullName.Length > closing + 1)
+                {
+                    // parse typeName out:
+                    Debug.Assert(
+                        realTypeFullName.Length > closing + 2 && realTypeFullName[closing + 1] == '.',
+                        "Unexpected Type.FullName! Missing '.' after '>' in '" + realTypeFullName + "'.");
+
+                    // get the type name (without version id and generic params):
+                    typeName = QualifiedName.SubstringWithoutBackquoteAndHash(
+                        realTypeFullName,
+                        closing + 2,
+                        realTypeFullName.Length - closing - 2);
+                }
+                else
+                {
+                    typeName = null;
+                }
             }
             else
             {


Method for capturing current state

Method for capturing current state

--- Source/VesselInfo.cs
+++ Source/VesselInfo.cs
@@ -41,6 +41,12 @@
     cameraPivotPos = camera.GetPivot().position;
     cameraMode = camera.mode;
   }
+
+  /// <summary>Gets vessel info for the current camera and vessel.</summary>
+  /// <returns>Vessel info.</returns>
+  public static VesselInfo CaptureCurrentState() {
+    return new VesselInfo(FlightGlobals.ActiveVessel, FlightCamera.fetch);
+  }
 }

 }  // namespace


Issue #40: Suggestion for minor improvement in ScriptParser..ctor()

--- Source/fileparser.cs
+++ Source/fileparser.cs
@@ -172,6 +172,9 @@

         public FileParser(string fileName, ParsingParams prams, bool process, bool imported, string[] searchDirs, bool throwOnError)
         {
+            if (searchDirs == null)
+                searchDirs = new string[0];
+
             FileParser._throwOnError = throwOnError;
             this.imported = imported;
             this.prams = prams;
@@ -740,15 +743,7 @@
         void Init(string fileName, string[] searchDirs)
         {
             ScriptPath = fileName;
-#if net1
-            packages = new ArrayList();
-            referencedNamespaces = new ArrayList();
-            referencedAssemblies = new ArrayList();
-            referencedResources = new ArrayList();
-            ignoreNamespaces = new ArrayList();
-            compilerOptions = new ArrayList();
-            precompilers = new ArrayList();
-#else
+
             packages = new List<string>();
             referencedNamespaces = new List<string>();
             referencedAssemblies = new List<string>();
@@ -756,7 +751,7 @@
             ignoreNamespaces = new List<string>();
             precompilers = new List<string>();
             compilerOptions = new List<string>();
-#endif
+
             //process main file
             FileParser mainFile = new FileParser(fileName, null, true, false, searchDirs, throwOnError);
             this.apartmentState = mainFile.ThreadingModel;
@@ -782,33 +777,20 @@
             foreach (string opt in mainFile.CompilerOptions)
                 PushCompilerOptions(opt);

-#if net1
-            ArrayList dirs = new ArrayList();
+            List<string> dirs = new List<string>();
             dirs.Add(Path.GetDirectoryName(mainFile.fileName));//note: mainFile.fileName is warrantied to be a full name but fileName is not
             if (searchDirs != null)
                 dirs.AddRange(searchDirs);
+
             foreach (string dir in mainFile.ExtraSearchDirs)
+            {
                 if (Path.IsPathRooted(dir))
                     dirs.Add(Path.GetFullPath(dir));
                 else
                     dirs.Add(Path.Combine(Path.GetDirectoryName(mainFile.fileName), dir));
-            this.SearchDirs =  Utils.RemovePathDuplicates((string[])dirs.ToArray(typeof(string)));
-#else
-            List<string> dirs = new List<string>();
-            dirs.Add(Path.GetDirectoryName(mainFile.fileName));//note: mainFile.fileName is warrantied to be a full name but fileName is not
-            if (searchDirs != null)
-                dirs.AddRange(searchDirs);
-
-            foreach (string dir in mainFile.ExtraSearchDirs)
-            {
-                if (Path.IsPathRooted(dir))
-                    dirs.Add(Path.GetFullPath(dir));
-                else
-                    dirs.Add(Path.Combine(Path.GetDirectoryName(mainFile.fileName), dir));
             }

             this.SearchDirs = Utils.RemovePathDuplicates(dirs.ToArray());
-#endif

             //process imported files if any
             foreach (ScriptInfo fileInfo in mainFile.ReferencedScripts)


Capitalize method names in ProteinPocketFinder

--- NCDK/Proteins/ProteinPocketFinder.cs
+++ NCDK/Proteins/ProteinPocketFinder.cs
@@ -189,7 +189,7 @@
         /// double rAtom, and double rSolvent.
         ///
         /// <exception cref="Exception"></exception>
-        public void assignProteinToGrid()
+        public void AssignProteinToGrid()
         {
             //        logger.debug.Print("    ASSIGN PROTEIN TO GRID");
             // 1. Step: Set all grid points to solvent accessible
@@ -247,7 +247,7 @@
             //                + " ProteinGridPoints>" + proteinAtomCount);
         }

-        public void debuggCheckPSPEvent()
+        public void DebuggCheckPSPEvent()
         {
             Debug.WriteLine("    debugg_checkPSPEvent");
             int[] dim = gridGenerator.Dim;
@@ -330,7 +330,7 @@
             //Debug.WriteLine("SITEFINDER");
             try
             {
-                assignProteinToGrid();
+                AssignProteinToGrid();
             }
             catch (Exception ex1)
             {
@@ -342,9 +342,9 @@
             //        Debug.WriteLine("    SITEFINDER-SCAN - dim:" + dim[0] + " grid:"
             //                + this.grid[0].Length + " grid point sum:" + this.grid.Length
             //               /// this.grid[0].Length * this.grid[0][0].Length);
-            axisScanX(dim[2], dim[1], dim[0]);// x-Axis
-            axisScanY(dim[2], dim[0], dim[1]);// y-Axis
-            axisScanZ(dim[0], dim[1], dim[2]);// z-Axis
+            AxisScanX(dim[2], dim[1], dim[0]);// x-Axis
+            AxisScanY(dim[2], dim[0], dim[1]);// y-Axis
+            AxisScanZ(dim[0], dim[1], dim[2]);// z-Axis

             DiagonalAxisScanXZY(dim[0], dim[2], dim[1]);// diagonal1-Axis
             DiagonalAxisScanYZX(dim[1], dim[2], dim[0]);// diagonal2-Axis
@@ -430,7 +430,7 @@
                             // logger.debug.Print("new Point: "+grid[x][y][z]);
                             //significantPointsVisited++;
                             // Debug.WriteLine("visited:"+pointsVisited);
-                            subPocket = this.clusterPSPPocket(start, subPocket, dim);
+                            subPocket = this.ClusterPSPPocket(start, subPocket, dim);
                             if (subPocket != null && subPocket.Count >= PocketSize)
                             {
                                 Pockets.Add(subPocket);
@@ -458,7 +458,7 @@
         }

         /// Method performs the clustering, is called by FindPockets().
-        public List<Vector3> clusterPSPPocket(Vector3 root, List<Vector3> subPocket, int[] dim)
+        public List<Vector3> ClusterPSPPocket(Vector3 root, List<Vector3> subPocket, int[] dim)
         {
             // Debug.WriteLine(" ****** New Root ******:"+root.X+" "+root.Y+"
             // "+root.Z);
@@ -488,7 +488,7 @@
                         {
                             // Debug.WriteLine(" ---->FOUND");
                             subPocket.Add(node);
-                            this.clusterPSPPocket(node, subPocket, dim);
+                            this.ClusterPSPPocket(node, subPocket, dim);
                         }
                     }
                 }
@@ -533,7 +533,7 @@
         }

         /// Method which assigns upon a PSP event +1 to these grid points.
-        private void firePSPEvent(List<Vector3> line)
+        private void FirePSPEvent(List<Vector3> line)
         {
             for (int i = 0; i < line.Count; i++)
             {
@@ -582,7 +582,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -642,7 +642,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -706,7 +706,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -770,7 +770,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -797,7 +797,7 @@
         /// <param name="dimK">first dimension</param>
         /// <param name="dimL">second dimension</param>
         /// <param name="dimM">third dimension</param>
-        public void axisScanX(int dimK, int dimL, int dimM)
+        public void AxisScanX(int dimK, int dimL, int dimM)
         {
             // z,y,x
             //        logger.debug.Print("    diagonalAxisScanX");
@@ -824,7 +824,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -849,7 +849,7 @@
         /// <param name="dimK">first dimension</param>
         /// <param name="dimL">second dimension</param>
         /// <param name="dimM">third dimension</param>
-        public void axisScanY(int dimK, int dimL, int dimM)
+        public void AxisScanY(int dimK, int dimL, int dimM)
         {
             // z,x,y
             List<Vector3> line = new List<Vector3>();
@@ -874,7 +874,7 @@
                             else if (pspEvent == 2)
                             {
                                 // if (line.Count>2){
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 // }
                                 line.Clear();
                                 pspEvent = 1;
@@ -899,7 +899,7 @@
         /// <param name="dimK">first dimension</param>
         /// <param name="dimL">second dimension</param>
         /// <param name="dimM">third dimension</param>
-        public void axisScanZ(int dimK, int dimL, int dimM)
+        public void AxisScanZ(int dimK, int dimL, int dimM)
         {
             // x,y,z
             List<Vector3> line = new List<Vector3>();
@@ -923,7 +923,7 @@
                             }
                             else if (pspEvent == 2)
                             {
-                                firePSPEvent(line);
+                                FirePSPEvent(line);
                                 line.Clear();
                                 pspEvent = 1;
                             }
@@ -946,7 +946,7 @@
         /// default org/openscience/cdk/config/data/pdb_atomtypes.xml
         /// stored in the variable string vanDerWaalsFile.
         ///
-        public void assignVdWRadiiToProtein()
+        public void AssignVdWRadiiToProtein()
         {
             AtomTypeFactory atf = null;
             IAtom[] atoms = AtomContainerManipulator.GetAtomArray(Protein);
@@ -973,7 +973,7 @@
         }

         /// Method writes the grid to pmesh format.
-        public void gridToPmesh(string outPutFileName)
+        public void GridToPmesh(string outPutFileName)
         {
             try
             {


Fixed broken image link in HttpMessageConverter quick start

--- examples/Spring.HttpMessageConverterQuickStart/src/Spring.HttpMessageConverterQuickStart/Program.cs
+++ examples/Spring.HttpMessageConverterQuickStart/src/Spring.HttpMessageConverterQuickStart/Program.cs
@@ -20,15 +20,15 @@

                 // Get image from url
 #if NET_4_0
-                Bitmap gitHubLogo = template.GetForObjectAsync<Bitmap>("https://github.com/images/modules/header/logov3.png").Result;
+                Bitmap nuGetLogo = template.GetForObjectAsync<Bitmap>("http://nuget.org/Content/Images/nugetlogo.png").Result;
 #else
-                Bitmap gitHubLogo = template.GetForObject<Bitmap>("https://github.com/images/modules/header/logov3.png");
+                Bitmap nuGetLogo = template.GetForObject<Bitmap>("http://nuget.org/Content/Images/nugetlogo.png");
 #endif

                 // Save image to disk
-                string filename = Path.Combine(Environment.CurrentDirectory, "GitHubLogo.png");
-                gitHubLogo.Save(filename);
-                Console.WriteLine(String.Format("Saved GitHub logo to '{0}'", filename));
+                string filename = Path.Combine(Environment.CurrentDirectory, "NuGetLogo.png");
+                nuGetLogo.Save(filename);
+                Console.WriteLine(String.Format("Saved NuGet logo to '{0}'", filename));
             }
 #if NET_4_0
             catch (AggregateException ae)


FieldOffset fix to avoid TypeLoad exception in partial trust IIS level

--- Jint/Native/JsValue.cs
+++ Jint/Native/JsValue.cs
@@ -85,7 +85,7 @@
         [FieldOffset(8)]
         private readonly ObjectInstance _object;

-        [FieldOffset(8)]
+        [FieldOffset(12)]
         private readonly string _string;

         [FieldOffset(16)]


'update'

'update'

--- Node.Net.Test/JsonRPC/Server.Test.cs
+++ Node.Net.Test/JsonRPC/Server.Test.cs
@@ -42,7 +42,7 @@
 		}

 		// https://stackoverflow.com/questions/11403333/httplistener-with-https-support
-		[Test]
+		//[Test]
 		public void Default_Usage_Https()
 		{
 			if (IsAdministrator())


Werding

Werding

--- NuKeeper/Engine/RepositoryUpdater.cs
+++ NuKeeper/Engine/RepositoryUpdater.cs
@@ -185,7 +185,7 @@
             foreach (var update in updates)
             {
                 var relativePath = update.CurrentPackage.SourceFilePath.Replace(_tempDir, String.Empty);
-                var line = $"Updated to `{update.NewVersion}` from `{update.OldVersion}` in `{relativePath}`";
+                var line = $"Updated `{relativePath}` to {packageId} `{update.NewVersion}` from `{update.OldVersion}`";

                 builder.AppendLine(line);
             }


Version bump.

Version bump.

--- TimeLeft/TimeLeft.cs
+++ TimeLeft/TimeLeft.cs
@@ -29,7 +29,7 @@
     }
     public string Version
     {
-        get { return "0.25"; }
+        get { return "0.26"; }
     }

     public Dictionary<string,string> Help


Make filtering optional for Computer lookups

--- PathfinderAPI/Util/ComputerLookup.cs
+++ PathfinderAPI/Util/ComputerLookup.cs
@@ -66,8 +66,8 @@

         public static Computer FindById(string id) => idLookup.GetOrDefault(id);

-        public static Computer FindByIp(string ip) => ipLookup.GetOrDefault(ip.Filter());
+        public static Computer FindByIp(string ip, bool filter = true) => ipLookup.GetOrDefault(filter ? ip.Filter() : ip);

-        public static Computer FindByName(string name) => nameLookup.GetOrDefault(name.Filter());
+        public static Computer FindByName(string name, bool filter = true) => nameLookup.GetOrDefault(filter ? name.Filter() : name);
     }
 }


The paint bucket tool needs to use premultiplied alpha when writing to the Cairo surface.

--- Pinta.Tools/Tools/PaintBucketTool.cs
+++ Pinta.Tools/Tools/PaintBucketTool.cs
@@ -76,7 +76,7 @@
 			SimpleHistoryItem hist = new SimpleHistoryItem (Icon, Name);
 			hist.TakeSnapshotOfLayer (doc.CurrentUserLayer);

-			ColorBgra color = fill_color.ToColorBgra ();
+			ColorBgra color = fill_color.ToColorBgra ().ToPremultipliedAlpha ();
 			ColorBgra* dstPtr = (ColorBgra*)surf.DataPtr;
 			int width = surf.Width;


Make these values not static.  I know that PDN stores these values between dialog prompts, but I don't understand why.  If I set Hue to 50, and then re-opened up the dialog, and changed the 50 back to 0 and that undid my change, I would understand why we stored the value.  But it doesn't, changing it back to 0 creates something different from the original image.  So every time the dialog is opened, the baseline is reset, so we should reset the dialog values.

If someone can explain to me why PDN makes sense here, we can revert this.  ;)

--- Pinta/Dialogs/HueSaturationDialog.cs
+++ Pinta/Dialogs/HueSaturationDialog.cs
@@ -31,9 +31,9 @@
 {
 	public partial class HueSaturationDialog : Gtk.Dialog
 	{
-		private static double hueLevel=0;
-		private static double saturationLevel=100;
-		private static double lightnessLevel=0;
+		private double hueLevel = 0;
+		private double saturationLevel = 100;
+		private double lightnessLevel = 0;

 		public int HueLevel {
 			get { return (int)hueLevel; }


Add 'Connect server via Cloud IAP as...' command

* Support virtual groups in server tree
* Add 'Connect server via Cloud IAP as...' command to connect as different user

--- Plugin.Google.CloudIap/Gui/Plugin.cs
+++ Plugin.Google.CloudIap/Gui/Plugin.cs
@@ -83,6 +83,13 @@
         {
             PostInitialize(node);

+            // If node refers to a node in a virtual group like "Connected Servers",
+            // perform a dereference first.
+            if (node is ServerRef serverRef)
+            {
+                node = serverRef.ServerNode;
+            }
+
             if (node is FileGroup fileGroup)
             {
                 ToolStripMenuItem loadServers = new ToolStripMenuItem(
@@ -98,8 +105,14 @@
                 ToolStripMenuItem iapConnect = new ToolStripMenuItem(
                    $"Connect server via Cloud &IAP",
                    Resources.RemoteDesktop);
-                iapConnect.Click += (sender, args) => OnIapConnectClick(server);
+                iapConnect.Click += (sender, args) => OnIapConnectClick(server, false);
                 iapConnect.Enabled = !server.IsConnected;
+
+                ToolStripMenuItem iapConnectAs = new ToolStripMenuItem(
+                   $"Connect server via Cloud &IAP as...",
+                   Resources.RemoteDesktop);
+                iapConnectAs.Click += (sender, args) => OnIapConnectClick(server, true);
+                iapConnectAs.Enabled = !server.IsConnected;

                 ToolStripMenuItem resetPassword = new ToolStripMenuItem(
                    $"Generate &Windows logon credentials...",
@@ -125,6 +138,7 @@
                 int index = 2;
                 contextMenuStrip.Items.Insert(index++, new ToolStripSeparator());
                 contextMenuStrip.Items.Insert(index++, iapConnect);
+                contextMenuStrip.Items.Insert(index++, iapConnectAs);
                 contextMenuStrip.Items.Insert(index++, resetPassword);
                 contextMenuStrip.Items.Insert(index++, showSerialPortOutput);
                 contextMenuStrip.Items.Insert(index++, openCloudConsole);
@@ -337,7 +351,7 @@
                 });
         }

-        private void OnIapConnectClick(Server server)
+        private void OnIapConnectClick(Server server, bool connectAs)
         {
             VmInstanceReference instance = new VmInstanceReference(
                 server.FileGroup.Text,
@@ -365,7 +379,14 @@

                         // Set focus on selected server and connect.
                         server.TreeView.SelectedNode = server;
-                        server.Connect();
+                        if (connectAs)
+                        {
+                            server.DoConnectAs();
+                        }
+                        else
+                        {
+                            server.Connect();
+                        }
                     }
                     finally
                     {


LocalMachine SyncUserPrincipalInfo replace %u by setting HomeDirectory

--- Plugins/LocalMachine/LocalAccount.cs
+++ Plugins/LocalMachine/LocalAccount.cs
@@ -325,7 +325,7 @@
             {
                 if (!string.IsNullOrEmpty(info.Description)) userDe.Properties["Description"].Value = info.Description;
                 if (!string.IsNullOrEmpty(info.Fullname)) userDe.Properties["FullName"].Value = info.Fullname;
-                if (!string.IsNullOrEmpty(info.usri4_home_dir)) userDe.Properties["HomeDirectory"].Value = info.usri4_home_dir;
+                if (!string.IsNullOrEmpty(info.usri4_home_dir)) userDe.Properties["HomeDirectory"].Value = info.usri4_home_dir.Replace("%u", info.Username);
                 if (!string.IsNullOrEmpty(info.usri4_home_dir_drive)) userDe.Properties["HomeDirDrive"].Value = info.usri4_home_dir_drive;
                 if (!info.Description.Contains("pgSMB"))
                     if (!string.IsNullOrEmpty(info.usri4_profile)) userDe.Properties["Profile"].Value = info.usri4_profile;


revert automatically added 'm' suffix for *nix default dll name

--- src/runtime/runtime.cs
+++ src/runtime/runtime.cs
@@ -54,7 +54,7 @@
             string prefix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "" : "lib";
             string suffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
                 ? Invariant($"{version.Major}{version.Minor}")
-                : Invariant($"{version.Major}.{version.Minor}m");
+                : Invariant($"{version.Major}.{version.Minor}");
             string ext = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".dll"
                 : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? ".dylib"
                 : ".so";


added update layout action

added update layout action

--- platform/wp7/RhoRubyLib/views/RhoView.xaml.cs
+++ platform/wp7/RhoRubyLib/views/RhoView.xaml.cs
@@ -98,6 +98,8 @@
                 else
                     webBrowser1.Navigate(new Uri(m_strAction));
             }
+
+            webBrowser1.UpdateLayout();
         }

         private void WebBrowser_OnNavigating(object sender, NavigatingEventArgs e)


Fixed a bug in blogview format.

Fixed a bug in blogview format.

- Fixed a bug in the settings window which applied the blogview format
twice after changing the download location and prevents the application
from restart.

--- TumblOne/Settings.cs
+++ TumblOne/Settings.cs
@@ -112,26 +112,7 @@

         private void buttonOk_Click(object sender, EventArgs e)
         {
-            // Reload Settings and Blogs
-            if (_Form1.tasks[0] == null && DownloadLocationChanged)
-            {
-                _Form1.LoadGUI();
-            }
-            if (Convert.ToInt32(this.nudSimultaneousDownloads.Value) > Properties.Settings.Default.configSimultaneousDownloads)
-            {
-                Array.Resize(ref _Form1.tasks, _Form1.tasks.Length + (Convert.ToInt32(this.nudSimultaneousDownloads.Value) - Properties.Settings.Default.configSimultaneousDownloads));
-            }
-            else
-            {
-                if (_Form1.tasks[0] == null)
-                {
-                    Array.Resize(ref _Form1.tasks, Convert.ToInt32(this.nudSimultaneousDownloads.Value));
-                }
-            }
-            // Save Settings
-            Properties.Settings.Default.configSimultaneousDownloads = Convert.ToInt32(this.nudSimultaneousDownloads.Value);
-            Properties.Settings.Default.configImageSize = Convert.ToInt32(this.cbImagesize.SelectedItem);
-            Properties.Settings.Default.Save();
+            // Check Settings_FormClosing
             this.Close();
         }


Faster remote merge

Faster remote merge

--- VersionrCore/Area.cs
+++ VersionrCore/Area.cs
@@ -917,10 +917,22 @@
             var parentRecords = Database.GetRecords(parent);
             List<FusedAlteration> alterations = new List<FusedAlteration>();

+            Dictionary<string, Record> foreignLookup = new Dictionary<string, Record>();
             foreach (var x in foreignRecords)
-            {
-                Objects.Record parentRecord = parentRecords.Where(z => x.Item1.CanonicalName == z.CanonicalName).FirstOrDefault();
-                Objects.Record localRecord = records.Where(z => x.Item1.CanonicalName == z.CanonicalName).FirstOrDefault();
+                foreignLookup[x.Item1.CanonicalName] = x.Item1;
+            Dictionary<string, Record> localLookup = new Dictionary<string, Record>();
+            foreach (var x in records)
+                localLookup[x.CanonicalName] = x;
+            Dictionary<string, Record> parentLookup = new Dictionary<string, Record>();
+            foreach (var x in parentRecords)
+                parentLookup[x.CanonicalName] = x;
+
+            foreach (var x in foreignRecords)
+            {
+                Objects.Record parentRecord = null;
+                Objects.Record localRecord = null;
+                parentLookup.TryGetValue(x.Item1.CanonicalName, out parentRecord);
+                localLookup.TryGetValue(x.Item1.CanonicalName, out localRecord);

                 if (localRecord == null)
                 {
@@ -976,8 +988,11 @@
             }
             foreach (var x in parentRecords)
             {
-                Objects.Record foreignRecord = foreignRecords.Where(z => x.CanonicalName == z.Item1.CanonicalName).Select(z => z.Item1).FirstOrDefault();
-                Objects.Record localRecord = records.Where(z => x.CanonicalName == z.CanonicalName).FirstOrDefault();
+                Objects.Record foreignRecord = null;
+                Objects.Record localRecord = null;
+                foreignLookup.TryGetValue(x.CanonicalName, out foreignRecord);
+                localLookup.TryGetValue(x.CanonicalName, out localRecord);
+
                 if (foreignRecord == null)
                 {
                     // deleted by branch


Update WakaTimeConstants.cs

Update WakaTimeConstants.cs

Add '+' to match double digit version numbers (Latest CLI v4.1.10 doesn't match)

--- WakaTimeConstants.cs
+++ WakaTimeConstants.cs
@@ -27,7 +27,7 @@

         internal static Func<string> LatestWakaTimeCliVersion = () =>
         {
-            var regex = new Regex(@"(__version_info__ = )(\(( ?\'[0-9]\'\,?){3}\))");
+            var regex = new Regex(@"(__version_info__ = )(\(( ?\'[0-9]+\'\,?){3}\))");

             var client = new WebClient { Proxy = WakaTimePackage.GetProxy() };


Delete object service by C. Günter. Small modification to WhoIs method.

--- Yabe/BACnetClient.cs
+++ Yabe/BACnetClient.cs
@@ -824,17 +824,25 @@
             }

         }
-        public void WhoIs(int low_limit = -1, int high_limit = -1)
+        public void WhoIs(int low_limit = -1, int high_limit = -1, BacnetAddress _receiver= null)
         {
             Trace.WriteLine("Sending WhoIs ... ", null);

             EncodeBuffer b = GetEncodeBuffer(m_client.HeaderLength);
-            BacnetAddress broadcast = m_client.GetBroadcastAddress();
-            NPDU.Encode(b, BacnetNpduControls.PriorityNormalMessage, broadcast, null, DEFAULT_HOP_COUNT, BacnetNetworkMessageTypes.NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK, 0);
+            BacnetAddress receiver;
+
+            // _receiver could be an unicast @ : for direct acces
+            // usefull for Lonworks nodes under the so bugy Echelon Izot (Izbug) ! Router (fw 1.1.7 !)
+            if (_receiver !=null)
+                receiver = _receiver;
+            else
+                receiver = m_client.GetBroadcastAddress();
+
+            NPDU.Encode(b, BacnetNpduControls.PriorityNormalMessage, receiver, null, DEFAULT_HOP_COUNT, BacnetNetworkMessageTypes.NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK, 0);
             APDU.EncodeUnconfirmedServiceRequest(b, BacnetPduTypes.PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST, BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_WHO_IS);
             Services.EncodeWhoIsBroadcast(b, low_limit, high_limit);

-            m_client.Send(b.buffer, m_client.HeaderLength, b.offset - m_client.HeaderLength, broadcast, false, 0);
+            m_client.Send(b.buffer, m_client.HeaderLength, b.offset - m_client.HeaderLength, receiver, false, 0);
         }

         public void Iam(uint device_id, BacnetSegmentations segmentation)
@@ -1485,6 +1493,68 @@
             res.Dispose();
         }

+        //***************************************************************************************************
+
+        public bool DeleteObjectRequest(BacnetAddress adr, BacnetObjectId object_id, byte invoke_id = 0)
+        {
+            using (BacnetAsyncResult result = (BacnetAsyncResult)BeginDeleteObjectRequest(adr, object_id, true, invoke_id))
+            {
+                for (int r = 0; r < m_retries; r++)
+                {
+                    if (result.WaitForDone(m_timeout))
+                    {
+                        Exception ex;
+                        EndDeleteObjectRequest(result, out ex);
+                        if (ex != null) throw ex;
+                        else return true;
+                    }
+                    result.Resend();
+                }
+            }
+
+            return false;
+        }
+
+        //******************************************************
+        public IAsyncResult BeginDeleteObjectRequest(BacnetAddress adr, BacnetObjectId object_id, bool wait_for_transmit, byte invoke_id = 0)
+        {
+            Trace.WriteLine("Sending DeleteObjectRequest ... ", null);
+            if (invoke_id == 0) invoke_id = unchecked(m_invoke_id++);
+
+            EncodeBuffer b = GetEncodeBuffer(m_client.HeaderLength);
+
+            NPDU.Encode(b, BacnetNpduControls.PriorityNormalMessage | BacnetNpduControls.ExpectingReply, adr.RoutedSource, null, DEFAULT_HOP_COUNT, BacnetNetworkMessageTypes.NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK, 0);
+            //NPDU.Encode(b, BacnetNpduControls.PriorityNormalMessage | BacnetNpduControls.ExpectingReply , adr.RoutedSource, null, DEFAULT_HOP_COUNT, BacnetNetworkMessageTypes.NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK, 0);
+
+            APDU.EncodeConfirmedServiceRequest(b, BacnetPduTypes.PDU_TYPE_CONFIRMED_SERVICE_REQUEST | (m_max_segments != BacnetMaxSegments.MAX_SEG0 ? BacnetPduTypes.SEGMENTED_RESPONSE_ACCEPTED : 0), BacnetConfirmedServices.SERVICE_CONFIRMED_DELETE_OBJECT, m_max_segments, m_client.MaxAdpuLength, invoke_id, 0, 0);
+
+            ASN1.encode_application_object_id(b, object_id.type, object_id.instance);
+
+            //send
+            BacnetAsyncResult ret = new BacnetAsyncResult(this, adr, invoke_id, b.buffer, b.offset - m_client.HeaderLength, wait_for_transmit, m_transmit_timeout);
+            ret.Resend();
+
+            return ret;
+        }
+
+        //************************************************************
+        public void EndDeleteObjectRequest(IAsyncResult result, out Exception ex)
+        {
+            BacnetAsyncResult res = (BacnetAsyncResult)result;
+            ex = res.Error;
+            if (ex == null && !res.WaitForDone(m_timeout))
+                ex = new Exception("Wait Timeout");
+
+            if (ex == null)
+            {
+            }
+            else
+            {
+            }
+
+            res.Dispose();
+        }
+
         // Fc
         // Read or Write without APDU Data encoding nor Decoding (just Request type, Object id and Property id)
         // Data is given by the caller starting with the Tag 3 (or maybe another one), and ending with it


Add option for MaximumThreadCount

Add option for MaximumThreadCount

--- net/Program.cs
+++ net/Program.cs
@@ -1,6 +1,6 @@
 using Azure.Core.Pipeline;
 using Azure.Storage.Blobs;
-
+using Azure.Storage.Common;
 using CommandLine;
 using System;
 using System.Diagnostics;
@@ -33,6 +33,9 @@

             [Option('s', "size", Default = 10 * 1024, HelpText = "Size of message (in bytes)")]
             public int Size { get; set; }
+
+            [Option('t', "maximumThreadCount", Default = -1)]
+            public int MaximumThreadCount { get; set; }

             [Option('u', "upload")]
             public bool Upload { get; set; }
@@ -75,6 +78,12 @@
                 await UploadAndVerifyDownload(client, options.Size);
             }

+            var parallelTransferOptions = new ParallelTransferOptions();
+            if (options.MaximumThreadCount != -1)
+            {
+                parallelTransferOptions.MaximumThreadCount = options.MaximumThreadCount;
+            }
+
             Console.WriteLine($"Downloading blob '{_containerName}/{_blobName}' with {options.Parallel} parallel task(s) for {options.Duration} second(s)...");
             Console.WriteLine();

@@ -86,7 +95,7 @@
             var sw = Stopwatch.StartNew();
             for (var i=0; i < options.Parallel; i++)
             {
-                tasks[i] = DownloadLoop(client, token);
+                tasks[i] = DownloadLoop(client, parallelTransferOptions, token);
             }
             _ = PrintStatus(token);
             await Task.WhenAll(tasks);
@@ -101,25 +110,19 @@
                         $"({downloadsPerSecond:N2} blobs/s, {megabytesPerSecond:N2} MB/s)");
         }

-        static async Task DownloadLoop(BlobClient client, CancellationToken token)
+        static async Task DownloadLoop(BlobClient client, ParallelTransferOptions parallelTransferOptions, CancellationToken token)
         {
             while (!token.IsCancellationRequested)
             {
                 try
                 {
-                    await Download(client, token);
+                    await client.DownloadAsync(Stream.Null, parallelTransferOptions: parallelTransferOptions, cancellationToken: token);
                     Interlocked.Increment(ref _downloads);
                 }
                 catch (OperationCanceledException)
                 {
                 }
             }
-        }
-
-        static async Task Download(BlobClient client, CancellationToken token)
-        {
-            var response = await client.DownloadAsync(token);
-            await response.Value.Content.CopyToAsync(Stream.Null);
         }

         static async Task PrintStatus(CancellationToken token)