Add partial methods to modify the requests and responses.

TBD: Should these be static? Would we ever need to call them
*without* having an instance?

--- apis/Google.Datastore.V1/Google.Datastore.V1/DatastoreClient.cs
+++ apis/Google.Datastore.V1/Google.Datastore.V1/DatastoreClient.cs
@@ -1220,14 +1220,17 @@
             string projectId,
             ReadOptions readOptions,
             IEnumerable<Key> keys,
-            CallSettings callSettings = null) => _callLookup.Async(
-                new LookupRequest
-                {
-                    ProjectId = projectId,
-                    ReadOptions = readOptions,
-                    Keys = { keys },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new LookupRequest
+            {
+                ProjectId = projectId,
+                ReadOptions = readOptions,
+                Keys = { keys },
+            };
+            ModifyLookupRequest(ref request, ref callSettings);
+            return _callLookup.Async(request, callSettings);
+        }

         /// <summary>
         /// Looks up entities by key.
@@ -1251,14 +1254,21 @@
             string projectId,
             ReadOptions readOptions,
             IEnumerable<Key> keys,
-            CallSettings callSettings = null) => _callLookup.Sync(
-                new LookupRequest
-                {
-                    ProjectId = projectId,
-                    ReadOptions = readOptions,
-                    Keys = { keys },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new LookupRequest
+            {
+                ProjectId = projectId,
+                ReadOptions = readOptions,
+                Keys = { keys },
+            };
+            ModifyLookupRequest(ref request, ref callSettings);
+            return _callLookup.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // a ModifyLookup request.
+        partial void ModifyLookupRequest(ref LookupRequest request, ref CallSettings settings);

         /// <summary>
         /// Queries for entities.
@@ -1289,15 +1299,18 @@
             PartitionId partitionId,
             ReadOptions readOptions,
             Query query,
-            CallSettings callSettings = null) => _callRunQuery.Async(
-                new RunQueryRequest
-                {
-                    ProjectId = projectId,
-                    PartitionId = partitionId,
-                    ReadOptions = readOptions,
-                    Query = query,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RunQueryRequest
+            {
+                ProjectId = projectId,
+                PartitionId = partitionId,
+                ReadOptions = readOptions,
+                Query = query,
+            };
+            ModifyRunQueryRequest(ref request, ref callSettings);
+            return _callRunQuery.Async(request, callSettings);
+        }

         /// <summary>
         /// Queries for entities.
@@ -1328,15 +1341,18 @@
             PartitionId partitionId,
             ReadOptions readOptions,
             Query query,
-            CallSettings callSettings = null) => _callRunQuery.Sync(
-                new RunQueryRequest
-                {
-                    ProjectId = projectId,
-                    PartitionId = partitionId,
-                    ReadOptions = readOptions,
-                    Query = query,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RunQueryRequest
+            {
+                ProjectId = projectId,
+                PartitionId = partitionId,
+                ReadOptions = readOptions,
+                Query = query,
+            };
+            ModifyRunQueryRequest(ref request, ref callSettings);
+            return _callRunQuery.Sync(request, callSettings);
+        }

         /// <summary>
         /// Queries for entities.
@@ -1367,15 +1383,18 @@
             PartitionId partitionId,
             ReadOptions readOptions,
             GqlQuery gqlQuery,
-            CallSettings callSettings = null) => _callRunQuery.Async(
-                new RunQueryRequest
-                {
-                    ProjectId = projectId,
-                    PartitionId = partitionId,
-                    ReadOptions = readOptions,
-                    GqlQuery = gqlQuery,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RunQueryRequest
+            {
+                ProjectId = projectId,
+                PartitionId = partitionId,
+                ReadOptions = readOptions,
+                GqlQuery = gqlQuery,
+            };
+            ModifyRunQueryRequest(ref request, ref callSettings);
+            return _callRunQuery.Async(request, callSettings);
+        }

         /// <summary>
         /// Queries for entities.
@@ -1406,15 +1425,22 @@
             PartitionId partitionId,
             ReadOptions readOptions,
             GqlQuery gqlQuery,
-            CallSettings callSettings = null) => _callRunQuery.Sync(
-                new RunQueryRequest
-                {
-                    ProjectId = projectId,
-                    PartitionId = partitionId,
-                    ReadOptions = readOptions,
-                    GqlQuery = gqlQuery,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RunQueryRequest
+            {
+                ProjectId = projectId,
+                PartitionId = partitionId,
+                ReadOptions = readOptions,
+                GqlQuery = gqlQuery,
+            };
+            ModifyRunQueryRequest(ref request, ref callSettings);
+            return _callRunQuery.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // a RunQuery request.
+        partial void ModifyRunQueryRequest(ref RunQueryRequest request, ref CallSettings settings);

         /// <summary>
         /// Begins a new transaction.
@@ -1430,12 +1456,15 @@
         /// </returns>
         public override Task<BeginTransactionResponse> BeginTransactionAsync(
             string projectId,
-            CallSettings callSettings = null) => _callBeginTransaction.Async(
-                new BeginTransactionRequest
-                {
-                    ProjectId = projectId,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new BeginTransactionRequest
+            {
+                ProjectId = projectId,
+            };
+            ModifyBeginTransactionRequest(ref request, ref callSettings);
+            return _callBeginTransaction.Async(request, callSettings);
+        }

         /// <summary>
         /// Begins a new transaction.
@@ -1451,12 +1480,19 @@
         /// </returns>
         public override BeginTransactionResponse BeginTransaction(
             string projectId,
-            CallSettings callSettings = null) => _callBeginTransaction.Sync(
-                new BeginTransactionRequest
-                {
-                    ProjectId = projectId,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new BeginTransactionRequest
+            {
+                ProjectId = projectId,
+            };
+            ModifyBeginTransactionRequest(ref request, ref callSettings);
+            return _callBeginTransaction.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // a BeginTransaction request.
+        partial void ModifyBeginTransactionRequest(ref BeginTransactionRequest request, ref CallSettings settings);

         /// <summary>
         /// Commits a transaction, optionally creating, deleting or modifying some
@@ -1499,15 +1535,18 @@
             Mode mode,
             ByteString transaction,
             IEnumerable<Mutation> mutations,
-            CallSettings callSettings = null) => _callCommit.Async(
-                new CommitRequest
-                {
-                    ProjectId = projectId,
-                    Mode = mode,
-                    Transaction = transaction,
-                    Mutations = { mutations },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new CommitRequest
+            {
+                ProjectId = projectId,
+                Mode = mode,
+                Transaction = transaction,
+                Mutations = { mutations },
+            };
+            ModifyCommitRequest(ref request, ref callSettings);
+            return _callCommit.Async(request, callSettings);
+        }

         /// <summary>
         /// Commits a transaction, optionally creating, deleting or modifying some
@@ -1550,15 +1589,18 @@
             Mode mode,
             ByteString transaction,
             IEnumerable<Mutation> mutations,
-            CallSettings callSettings = null) => _callCommit.Sync(
-                new CommitRequest
-                {
-                    ProjectId = projectId,
-                    Mode = mode,
-                    Transaction = transaction,
-                    Mutations = { mutations },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new CommitRequest
+            {
+                ProjectId = projectId,
+                Mode = mode,
+                Transaction = transaction,
+                Mutations = { mutations },
+            };
+            ModifyCommitRequest(ref request, ref callSettings);
+            return _callCommit.Sync(request, callSettings);
+        }

         /// <summary>
         /// Commits a transaction, optionally creating, deleting or modifying some
@@ -1595,14 +1637,17 @@
             string projectId,
             Mode mode,
             IEnumerable<Mutation> mutations,
-            CallSettings callSettings = null) => _callCommit.Async(
-                new CommitRequest
-                {
-                    ProjectId = projectId,
-                    Mode = mode,
-                    Mutations = { mutations },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new CommitRequest
+            {
+                ProjectId = projectId,
+                Mode = mode,
+                Mutations = { mutations },
+            };
+            ModifyCommitRequest(ref request, ref callSettings);
+            return _callCommit.Async(request, callSettings);
+        }

         /// <summary>
         /// Commits a transaction, optionally creating, deleting or modifying some
@@ -1639,14 +1684,21 @@
             string projectId,
             Mode mode,
             IEnumerable<Mutation> mutations,
-            CallSettings callSettings = null) => _callCommit.Sync(
-                new CommitRequest
-                {
-                    ProjectId = projectId,
-                    Mode = mode,
-                    Mutations = { mutations },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new CommitRequest
+            {
+                ProjectId = projectId,
+                Mode = mode,
+                Mutations = { mutations },
+            };
+            ModifyCommitRequest(ref request, ref callSettings);
+            return _callCommit.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // a Commit request.
+        partial void ModifyCommitRequest(ref CommitRequest request, ref CallSettings settings);

         /// <summary>
         /// Rolls back a transaction.
@@ -1667,13 +1719,16 @@
         public override Task<RollbackResponse> RollbackAsync(
             string projectId,
             ByteString transaction,
-            CallSettings callSettings = null) => _callRollback.Async(
-                new RollbackRequest
-                {
-                    ProjectId = projectId,
-                    Transaction = transaction,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RollbackRequest
+            {
+                ProjectId = projectId,
+                Transaction = transaction,
+            };
+            ModifyRollbackRequest(ref request, ref callSettings);
+            return _callRollback.Async(request, callSettings);
+        }

         /// <summary>
         /// Rolls back a transaction.
@@ -1694,13 +1749,20 @@
         public override RollbackResponse Rollback(
             string projectId,
             ByteString transaction,
-            CallSettings callSettings = null) => _callRollback.Sync(
-                new RollbackRequest
-                {
-                    ProjectId = projectId,
-                    Transaction = transaction,
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new RollbackRequest
+            {
+                ProjectId = projectId,
+                Transaction = transaction,
+            };
+            ModifyRollbackRequest(ref request, ref callSettings);
+            return _callRollback.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // a Rollback request.
+        partial void ModifyRollbackRequest(ref RollbackRequest request, ref CallSettings settings);

         /// <summary>
         /// Allocates IDs for the given keys, which is useful for referencing an entity
@@ -1722,13 +1784,16 @@
         public override Task<AllocateIdsResponse> AllocateIdsAsync(
             string projectId,
             IEnumerable<Key> keys,
-            CallSettings callSettings = null) => _callAllocateIds.Async(
-                new AllocateIdsRequest
-                {
-                    ProjectId = projectId,
-                    Keys = { keys },
-                },
-                callSettings);
+            CallSettings callSettings = null)
+        {
+            var request = new AllocateIdsRequest
+            {
+                ProjectId = projectId,
+                Keys = { keys },
+            };
+            ModifyAllocateIdsRequest(ref request, ref callSettings);
+            return _callAllocateIds.Async(request, callSettings);
+        }

         /// <summary>
         /// Allocates IDs for the given keys, which is useful for referencing an entity
@@ -1750,14 +1815,20 @@
         public override AllocateIdsResponse AllocateIds(
             string projectId,
             IEnumerable<Key> keys,
-            CallSettings callSettings = null) => _callAllocateIds.Sync(
-                new AllocateIdsRequest
-                {
-                    ProjectId = projectId,
-                    Keys = { keys },
-                },
-                callSettings);
-
+            CallSettings callSettings = null)
+        {
+            var request = new AllocateIdsRequest
+            {
+                ProjectId = projectId,
+                Keys = { keys },
+            };
+            ModifyAllocateIdsRequest(ref request, ref callSettings);
+            return _callAllocateIds.Sync(request, callSettings);
+        }
+
+        // Partial method to allow for fine-tuning of requests and settings when performing
+        // an AllocateIds request.
+        partial void ModifyAllocateIdsRequest(ref AllocateIdsRequest request, ref CallSettings settings);
     }

     // Partial classes to enable page-streaming


Continue to update state every 50 ms when no input is available at the console

--- C#/ConsoleApplication1/Program.cs
+++ C#/ConsoleApplication1/Program.cs
@@ -394,15 +394,18 @@
             VRCC.VRCC_Start();

+            Console.WriteLine();
+            Console.Write("> ");
             String input = "";
             while (true)
-            {
-                Console.WriteLine();
-                Console.Write("> ");
-                input = Console.ReadLine();
+            {   if (Console.KeyAvailable)
+                {   input = Console.ReadLine();
+                    execute(input);
+                    Console.WriteLine();
+                    Console.Write("> ");
+                }
                 VRCC.VRCC_Update();
-                Console.WriteLine();
-                execute(input);
+                System.Threading.Thread.Sleep(50);
             }
         }
     }


Scheduler.scheduleJobs should either associated triggers with job or warn if trigger not already bound to job

--- src/Quartz/Core/QuartzScheduler.cs
+++ src/Quartz/Core/QuartzScheduler.cs
@@ -834,6 +834,24 @@
         {
             ValidateState();

+            // make sure all triggers refer to their associated job
+            foreach (IJobDetail job in triggersAndJobs.Keys)
+            {
+                if (job == null) // there can be one of these (for adding a bulk set of triggers for pre-existing jobs)
+                {
+                    continue;
+                }
+                IList<ITrigger> triggers = triggersAndJobs[job];
+                if (triggers == null) // this is possible because the job may be durable, and not yet be having triggers
+                {
+                    continue;
+                }
+                foreach (ITrigger trigger in triggers)
+                {
+                    ((IOperableTrigger) trigger).JobKey = job.Key;
+                }
+            }
+
             resources.JobStore.StoreJobsAndTriggers(triggersAndJobs, replace);
             NotifySchedulerThread(null);
             foreach (IJobDetail job in triggersAndJobs.Keys)


Improved OS display name

Improved OS display name

--- Client/Core/Information/OSInfo.cs
+++ Client/Core/Information/OSInfo.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Management;
+using System.Text.RegularExpressions;

 namespace xClient.Core.Information
 {
@@ -43,8 +44,7 @@
                     }
                 }

-                if (name.StartsWith("Microsoft"))
-                    name = name.Substring(name.IndexOf(" ", StringComparison.Ordinal) + 1);
+                name = Regex.Replace(name, "^.*(?=Windows)", "").TrimEnd().TrimStart(); // Remove everything before first match "Windows" and trim end & start

                 _osName = name;
                 return _osName;


The cache expiration for 404 results is now configurable separate from normal pages using the region Page404

--- source/DD4T.Factories/PageFactory.cs
+++ source/DD4T.Factories/PageFactory.cs
@@ -30,6 +30,7 @@
         private IPage CacheValueNull;
         //private ICacheAgent _cacheAgent = null;
         public const string CacheRegion = "Page";
+        public const string CacheRegion404 = "Page404";
         public IPageProvider PageProvider { get; set; }
         public ILinkFactory LinkFactory { get; set; }
         public IComponentPresentationFactory ComponentPresentationFactory { get; set; }
@@ -110,7 +111,7 @@

                 if (string.IsNullOrEmpty(pageContentFromBroker))
                 {
-                    CacheAgent.Store(cacheKey, CacheRegion, CacheValueNull);
+                    CacheAgent.Store(cacheKey, CacheRegion404, CacheValueNull);
                 }
                 else
                 {


Fix bug in Server project doesn't return VersionDownloadCount and VersionRatingsCount attributes.

--- src/Server/DataServices/Package.cs
+++ src/Server/DataServices/Package.cs
@@ -38,6 +38,8 @@
             Published = derivedData.Created.UtcDateTime;
             DownloadCount = -1;
             Rating = -1;
+            VersionDownloadCount = -1;
+            VersionRatingsCount = -1;
         }

         public string Id {
@@ -85,7 +87,17 @@
             set;
         }

+        public int VersionDownloadCount {
+            get;
+            set;
+        }
+
         public int RatingsCount {
+            get;
+            set;
+        }
+
+        public int VersionRatingsCount {
             get;
             set;
         }


Refactor printing of zero_extend and sign_extend into a single helper method.

--- symbooglix/symbooglix/Expr/SMTLIBQueryPrinter.cs
+++ symbooglix/symbooglix/Expr/SMTLIBQueryPrinter.cs
@@ -565,9 +565,20 @@

             public Expr Visit_sign_extend(NAryExpr e)
             {
-                // ((_ sign_extend i) (_ BitVec m) (_ BitVec m+i))
-                // ((_ sign_extend i) x) means extend x to the (signed) equivalent bitvector
-                // of size m+i
+                return printSignExtend(e, "sign_extend");
+            }
+
+            public Expr Visit_zero_extend(NAryExpr e)
+            {
+                //  ((_ zero_extend i) (_ BitVec m) (_ BitVec m+i))
+                // ((_ zero_extend i) x) means extend x with zeroes to the (unsigned)
+                // equivalent bitvector of size m+i
+                return printSignExtend(e, "zero_extend");
+            }
+
+            private Expr printSignExtend(NAryExpr e, string extensionType)
+            {
+                Debug.Assert(extensionType == "zero_extend" || extensionType == "sign_extend");
                 Debug.Assert(e.Args.Count == 1);
                 Debug.Assert(e.Args[0].Type.IsBv, "Not a bitvector!");
                 Debug.Assert(e.Type.IsBv, "Out is not a bitvector!");
@@ -575,22 +586,7 @@
                 // Work out extension amount
                 int numberOfBitsToAdd = ( e.Type.BvBits - e.Args[0].Type.BvBits );
                 Debug.Assert(numberOfBitsToAdd >= 0, "Number of bits to add calculation is incorrect"); // FIXME: Throw exception instead
-                return printUnaryOperator("(_ sign_extend " + numberOfBitsToAdd + ")", e);
-            }
-
-            public Expr Visit_zero_extend(NAryExpr e)
-            {
-                //  ((_ zero_extend i) (_ BitVec m) (_ BitVec m+i))
-                // ((_ zero_extend i) x) means extend x with zeroes to the (unsigned)
-                // equivalent bitvector of size m+i
-                Debug.Assert(e.Args.Count == 1);
-                Debug.Assert(e.Args[0].Type.IsBv, "Not a bitvector!");
-                Debug.Assert(e.Type.IsBv, "Out is not a bitvector!");
-
-                // Work out extension amount
-                int numberOfBitsToAdd = ( e.Type.BvBits - e.Args[0].Type.BvBits );
-                Debug.Assert(numberOfBitsToAdd >= 0, "Number of bits to add calculation is incorrect"); // FIXME: Throw exception instead
-                return printUnaryOperator("(_ zero_extend " + numberOfBitsToAdd + ")", e);
+                return printUnaryOperator("(_ " + extensionType + " " + numberOfBitsToAdd + ")", e);
             }

             public Expr Visit_bvneg (NAryExpr e)


Removed Agent menu

Removed Agent menu

--- iSelectManager/Views/Home/Index.cshtml
+++ iSelectManager/Views/Home/Index.cshtml
@@ -30,13 +30,4 @@

set callbacks to campaigns and/or agents.

go »

-

-
Agents

-

-
logon agents

-
logoff agents

-
Move agents between campaigns

-

-
go »

-


More unused code in TimeZoneObservance

More unused code in TimeZoneObservance

--- ical.NET/Structs/TimeZoneObservance.cs
+++ ical.NET/Structs/TimeZoneObservance.cs
@@ -1,17 +1,11 @@
 using System;
 using Ical.Net.Interfaces.Components;
-using Ical.Net.Interfaces.DataTypes;

 namespace Ical.Net.Structs
 {
     [Serializable]
     public struct TimeZoneObservance
     {
-        public ITimeZoneInfo TimeZoneInfo { get; private set; }
-
-        public TimeZoneObservance(IPeriod period, ITimeZoneInfo tzi) : this()
-        {
-            TimeZoneInfo = tzi;
-        }
+        public ITimeZoneInfo TimeZoneInfo { get; }
     }
 }


Fix UseExpressionBodyForPropertiesAnalyzerTests

--- src/Analyzers/CSharp/Tests/UseExpressionBody/UseExpressionBodyForPropertiesAnalyzerTests.cs
+++ src/Analyzers/CSharp/Tests/UseExpressionBody/UseExpressionBodyForPropertiesAnalyzerTests.cs
@@ -9,6 +9,7 @@
 using Microsoft.CodeAnalysis.CSharp.UseExpressionBody;
 using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
 using Microsoft.CodeAnalysis.Test.Utilities;
+using Microsoft.CodeAnalysis.Testing;
 using Roslyn.Test.Utilities;
 using Xunit;

@@ -31,7 +32,8 @@
                 {
                     { CSharpCodeStyleOptions.PreferExpressionBodiedProperties, ExpressionBodyPreference.WhenPossible },
                     { CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, ExpressionBodyPreference.Never },
-                }
+                },
+                MarkupOptions = MarkupOptions.None,
             }.RunAsync();
         }

@@ -45,12 +47,202 @@
                 {
                     { CSharpCodeStyleOptions.PreferExpressionBodiedProperties, ExpressionBodyPreference.Never },
                     { CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, ExpressionBodyPreference.Never },
-                }
+                },
+                MarkupOptions = MarkupOptions.None,
             }.RunAsync();
         }

-        private static async Task TestWithUseBlockBodyExceptAccessor(string code, string fixedCode)
-        {
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseExpressionBody1()
+        {
+            var code = @"
+class C
+{
+    int Bar() { return 0; }
+
+    {|IDE0025:int Goo
+    {
+        get
+        {
+            return Bar();
+        }
+    }|}
+}";
+            var fixedCode = @"
+class C
+{
+    int Bar() { return 0; }
+
+    int Goo => Bar();
+}";
+            await TestWithUseExpressionBody(code, fixedCode);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestMissingWithSetter()
+        {
+            var code = @"
+class C
+{
+    int Bar() { return 0; }
+
+    int Goo
+    {
+        get
+        {
+            return Bar();
+        }
+
+        set
+        {
+        }
+    }
+}";
+            await TestWithUseExpressionBody(code, code);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestMissingWithAttribute()
+        {
+            var code = @"
+using System;
+
+class AAttribute : Attribute {}
+
+class C
+{
+    int Bar() { return 0; }
+
+    int Goo
+    {
+        [A]
+        get
+        {
+            return Bar();
+        }
+    }
+}";
+            await TestWithUseExpressionBody(code, code);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestMissingOnSetter1()
+        {
+            var code = @"
+class C
+{
+    void Bar() { }
+
+    int Goo
+    {
+        set
+        {
+            Bar();
+        }
+    }
+}";
+            await TestWithUseExpressionBody(code, code);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseExpressionBody3()
+        {
+            var code = @"
+using System;
+
+class C
+{
+    {|IDE0025:int Goo
+    {
+        get
+        {
+            throw new NotImplementedException();
+        }
+    }|}
+}";
+            var fixedCode = @"
+using System;
+
+class C
+{
+    int Goo => throw new NotImplementedException();
+}";
+            await TestWithUseExpressionBody(code, fixedCode);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseExpressionBody4()
+        {
+            var code = @"
+using System;
+
+class C
+{
+    {|IDE0025:int Goo
+    {
+        get
+        {
+            throw new NotImplementedException(); // comment
+        }
+    }|}
+}";
+            var fixedCode = @"
+using System;
+
+class C
+{
+    int Goo => throw new NotImplementedException(); // comment
+}";
+            await TestWithUseExpressionBody(code, fixedCode);
+        }
+
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseBlockBody1()
+        {
+            var code = @"
+class C
+{
+    int Bar() { return 0; }
+
+    {|IDE0025:int Goo => Bar();|}
+}";
+            var fixedCode = @"
+class C
+{
+    int Bar() { return 0; }
+
+    int Goo
+    {
+        get
+        {
+            return Bar();
+        }
+    }
+}";
+            await TestWithUseBlockBody(code, fixedCode);
+        }
+
+        [WorkItem(20363, "https://github.com/dotnet/roslyn/issues/20363")]
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseBlockBodyForAccessorEventWhenAccessorWantExpression1()
+        {
+            var code = @"
+class C
+{
+    int Bar() { return 0; }
+
+    {|IDE0025:int Goo => Bar();|}
+}";
+            var fixedCode = @"
+class C
+{
+    int Bar() { return 0; }
+
+    int Goo
+    {
+        get => Bar();
+    }
+}";
             await new VerifyCS.Test
             {
                 TestCode = code,
@@ -59,221 +251,65 @@
                 {
                     { CSharpCodeStyleOptions.PreferExpressionBodiedProperties, ExpressionBodyPreference.Never },
                     { CSharpCodeStyleOptions.PreferExpressionBodiedAccessors, ExpressionBodyPreference.WhenPossible },
-                }
+                },
+                MarkupOptions = MarkupOptions.None,
+                NumberOfFixAllIterations = 2,
+                NumberOfIncrementalIterations = 2,
             }.RunAsync();
         }

         [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseExpressionBody1()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            [|return|] Bar();
-        }
-    }
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo => Bar();
-}";
-            await TestWithUseExpressionBody(code, fixedCode);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestMissingWithSetter()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            return Bar();
-        }
-
-        set
-        {
-        }
-    }
-}";
-            await TestWithUseExpressionBody(code, code);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestMissingWithAttribute()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        [A]
-        get
-        {
-            return Bar();
-        }
-    }
-}";
-            await TestWithUseExpressionBody(code, code);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestMissingOnSetter1()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        set
-        {
-            Bar();
-        }
-    }
-}";
-            await TestWithUseExpressionBody(code, code);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseExpressionBody3()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            [|throw|] new NotImplementedException();
-        }
-    }
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo => throw new NotImplementedException();
-}";
-            await TestWithUseExpressionBody(code, fixedCode);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseExpressionBody4()
-        {
-            var code = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            [|throw|] new NotImplementedException(); // comment
-        }
-    }
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo => throw new NotImplementedException(); // comment
-}";
-            await TestWithUseExpressionBody(code, fixedCode);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseBlockBody1()
-        {
-            var code = @"
-class C
-{
-    int Goo [|=>|] Bar();
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            return Bar();
+        public async Task TestUseBlockBody3()
+        {
+            var code = @"
+using System;
+
+class C
+{
+    {|IDE0025:int Goo => throw new NotImplementedException();|}
+}";
+            var fixedCode = @"
+using System;
+
+class C
+{
+    int Goo
+    {
+        get
+        {
+            throw new NotImplementedException();
         }
     }
 }";
             await TestWithUseBlockBody(code, fixedCode);
         }

-        [WorkItem(20363, "https://github.com/dotnet/roslyn/issues/20363")]
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseBlockBodyForAccessorEventWhenAccessorWantExpression1()
-        {
-            var code = @"
-class C
-{
-    int Goo [|=>|] Bar();
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            return Bar();
-        }
-    }
-}";
-            await TestWithUseBlockBodyExceptAccessor(code, fixedCode);
-        }
-
-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseBlockBody3()
-        {
-            var code = @"
-class C
-{
-    int Goo [|=>|] throw new NotImplementedException();
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            throw new NotImplementedException();
+        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
+        public async Task TestUseBlockBody4()
+        {
+            var code = @"
+using System;
+
+class C
+{
+    {|IDE0025:int Goo => throw new NotImplementedException();|} // comment
+}";
+            var fixedCode = @"
+using System;
+
+class C
+{
+    int Goo
+    {
+        get
+        {
+            throw new NotImplementedException(); // comment
         }
     }
 }";
             await TestWithUseBlockBody(code, fixedCode);
         }

-        [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
-        public async Task TestUseBlockBody4()
-        {
-            var code = @"
-class C
-{
-    int Goo [|=>|] throw new NotImplementedException(); // comment
-}";
-            var fixedCode = @"
-class C
-{
-    int Goo
-    {
-        get
-        {
-            throw new NotImplementedException(); // comment
-        }
-    }
-}";
-            await TestWithUseBlockBody(code, fixedCode);
-        }
-
         [WorkItem(16386, "https://github.com/dotnet/roslyn/issues/16386")]
         [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
         public async Task TestUseExpressionBodyKeepTrailingTrivia()
@@ -282,7 +318,7 @@
 class C
 {
     private string _prop = ""HELLO THERE!"";
-    public string Prop { get { [|return|] _prop; } }
+    {|IDE0025:public string Prop { get { return _prop; } }|}

     public string OtherThing => ""Pickles"";
 }";
@@ -304,21 +340,27 @@
             var code = @"
 class C
 {
-    int Goo
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
+    {|IDE0025:int Goo
     {
         get
         {
 #if true
-            [|return|] Bar();
+            return Bar();
 #else
             return Baz();
 #endif
         }
-    }
-}";
-            var fixedCode = @"
-class C
-{
+    }|}
+}";
+            var fixedCode = @"
+class C
+{
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
     int Goo =>
 #if true
             Bar();
@@ -337,21 +379,27 @@
             var code = @"
 class C
 {
-    int Goo
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
+    {|IDE0025:int Goo
     {
         get
         {
 #if false
             return Bar();
 #else
-            [|return|] Baz();
+            return Baz();
 #endif
         }
-    }
-}";
-            var fixedCode = @"
-class C
-{
+    }|}
+}";
+            var fixedCode = @"
+class C
+{
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
     int Goo =>
 #if false
             return Bar();
@@ -370,6 +418,9 @@
             var code = @"
 class C
 {
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
     int Goo =>
 #if true
             Bar();
@@ -387,6 +438,9 @@
             var code = @"
 class C
 {
+    int Bar() { return 0; }
+    int Baz() { return 0; }
+
     int Goo =>
 #if false
             Bar();
@@ -401,12 +455,13 @@
         [Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseExpressionBody)]
         public async Task TestMoveTriviaFromExpressionToReturnStatement()
         {
-            var code = @"
-class C
-{
-    int Goo(int i) [|=>|]
+            // TODO: This test is unrelated to properties. It should be moved to UseExpressionBodyForMethodsAnalyzerTests.
+            var code = @"
+class C
+{
+    {|IDE0022:int Goo(int i) =>
         //comment
-        i * i;
+        i * i;|}
 }";
             var fixedCode = @"
 class C
@@ -428,7 +483,7 @@
 using System;
 class C
 {
-    int Goo [|=>|] throw new NotImplementedException();
+    {|IDE0025:int Goo => {|CS8059:throw new NotImplementedException()|};|}
 }";
             var fixedCode = @"
 using System;
@@ -453,8 +508,8 @@
 using System;
 class C
 {
-    int Goo [|=>|] throw new NotImplementedException();
-    int Bar [|=>|] throw new NotImplementedException();
+    {|IDE0025:int Goo => {|CS8059:throw new NotImplementedException()|};|}
+    {|IDE0025:int Bar => {|CS8059:throw new NotImplementedException()|};|}
 }";
             var fixedCode = @"
 using System;


Fix wasm debugging when running on HTTPS. Fixes #17338

--- src/Components/Blazor/Server/src/MonoDebugProxy/BlazorMonoDebugProxyAppBuilderExtensions.cs
+++ src/Components/Blazor/Server/src/MonoDebugProxy/BlazorMonoDebugProxyAppBuilderExtensions.cs
@@ -237,7 +237,8 @@
             var underlyingV8Endpoint = tabToDebug.WebSocketDebuggerUrl;
             var proxyEndpoint = $"{request.Host}{request.PathBase}/_framework/debug/ws-proxy?browser={WebUtility.UrlEncode(underlyingV8Endpoint)}";
             var devToolsUrlAbsolute = new Uri(debuggerHost + tabToDebug.DevtoolsFrontendUrl);
-            var devToolsUrlWithProxy = $"{devToolsUrlAbsolute.Scheme}://{devToolsUrlAbsolute.Authority}{devToolsUrlAbsolute.AbsolutePath}?ws={proxyEndpoint}";
+            var wsParamName = request.IsHttps ? "wss" : "ws";
+            var devToolsUrlWithProxy = $"{devToolsUrlAbsolute.Scheme}://{devToolsUrlAbsolute.Authority}{devToolsUrlAbsolute.AbsolutePath}?{wsParamName}={proxyEndpoint}";
             context.Response.Redirect(devToolsUrlWithProxy);
         }


Add TestNotInTrivia

Add TestNotInTrivia

--- src/EditorFeatures/CSharpTest/Completion/CompletionProviders/EnumCompletionProviderTests.cs
+++ src/EditorFeatures/CSharpTest/Completion/CompletionProviders/EnumCompletionProviderTests.cs
@@ -415,6 +415,34 @@

         [Fact]
         [Trait(Traits.Feature, Traits.Features.Completion)]
+        public async Task TestNotInTrivia()
+        {
+            var markup = @"
+class C
+{
+    public void M(DayOfWeek day)
+    {
+        switch (day)
+        {
+            case DayOfWeek.A:
+            case DayOfWeek.B// $$
+                :
+                    break;
+        }
+    }
+
+    enum DayOfWeek
+    {
+        A,
+        B
+    }
+}
+";
+            await VerifyNoItemsExistAsync(markup);
+        }
+
+        [Fact]
+        [Trait(Traits.Feature, Traits.Features.Completion)]
         public async Task TestCommitOnComma()
         {
             var markup = @"


Change to use Debug.Fail().

Change to use Debug.Fail().

--- src/Microsoft.NetCore.Analyzers/Core/Security/DoNotCallDangerousMethodsInDeserialization.cs
+++ src/Microsoft.NetCore.Analyzers/Core/Security/DoNotCallDangerousMethodsInDeserialization.cs
@@ -238,9 +238,15 @@
                         if (visited.Add(methodSymbol))
                         {
                             results.Add(methodSymbol, new HashSet<ISymbol>());
-                            Debug.Assert(callGraph.Keys.Contains(methodSymbol), methodSymbol.Name + "was not present in the dictionary.");
-
-                            foreach (var child in callGraph[methodSymbol].Keys)
+
+                            if (!callGraph.TryGetValue(methodSymbol, out var calledMethods))
+                            {
+                                Debug.Fail(methodSymbol.Name + " was not found in callGraph");
+
+                                return;
+                            }
+
+                            foreach (var child in calledMethods.Keys)
                             {
                                 if (dangerousMethodSymbols.Contains(child))
                                 {
@@ -248,8 +254,15 @@
                                 }

                                 FindCalledDangerousMethod(child, visited, results);
-                                Debug.Assert(results.Keys.Contains(child), child.Name + "was not present in the dictionary.");
-                                results[methodSymbol].UnionWith(results[child]);
+
+                                if (!results.TryGetValue(child, out var result))
+                                {
+                                    Debug.Fail(child.Name + " was not found in callGraph");
+
+                                    return;
+                                }
+
+                                results[methodSymbol].UnionWith(result);
                             }
                         }
                     }


677: struct EllipseBresenhamInterpolator

--- src/PixelFarm/PixelFarm.CpuBlit/03_Rasterization_Lines/2.3_EllipseBrensenhemInterpolator.cs
+++ src/PixelFarm/PixelFarm.CpuBlit/03_Rasterization_Lines/2.3_EllipseBrensenhemInterpolator.cs
@@ -16,7 +16,7 @@

 namespace PixelFarm.CpuBlit.Rasterization.Lines
 {
-    public class EllipseBresenhamInterpolator
+    struct EllipseBresenhamInterpolator
     {
         int m_rx2;
         int m_ry2;


UT failing due to new differences in new lines

--- test/UtilsTest/CommandLine/ArgumentParserTest.cs
+++ test/UtilsTest/CommandLine/ArgumentParserTest.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Diagnostics;
 using System.Linq;
+using System.Text.RegularExpressions;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Utils.CommandLine;
 using Utils.Logging;
@@ -137,7 +138,10 @@
             string processName = Process.GetCurrentProcess().ProcessName;
             string expectedUsage = string.Format("{0}{1}{2}", Environment.NewLine, processName, ExpectedUsage);
             string actualUsage = ArgumentParser<TestParams>.Usage();
-            Assert.AreEqual(expectedUsage, actualUsage);
+
+            string expected = Regex.Replace(expectedUsage, "\\s+", string.Empty);
+            string actual = Regex.Replace(actualUsage, "\\s+", string.Empty);
+            Assert.AreEqual(expected, actual);
         }

         /// <summary>


Don't report diagnostics for the wrong languages (#56750)

--- src/VisualStudio/Core/Def/Implementation/LanguageClient/VisualStudioInProcLanguageServer.cs
+++ src/VisualStudio/Core/Def/Implementation/LanguageClient/VisualStudioInProcLanguageServer.cs
@@ -37,6 +37,8 @@
         private readonly AsyncBatchingWorkQueue<DocumentId> _diagnosticsWorkQueue;
         private readonly IDiagnosticService? _diagnosticService;

+        private readonly ImmutableArray<string> _supportedLanguages;
+
         internal VisualStudioInProcLanguageServer(
             AbstractRequestDispatcherFactory requestDispatcherFactory,
             JsonRpc jsonRpc,
@@ -52,6 +54,7 @@
             string telemetryServerTypeName)
             : base(requestDispatcherFactory, jsonRpc, capabilitiesProvider, workspaceRegistrationService, globalOptions, listenerProvider, logger, supportedLanguages, clientName, userVisibleServerName, telemetryServerTypeName)
         {
+            _supportedLanguages = supportedLanguages;
             _diagnosticService = diagnosticService;

             // Dedupe on DocumentId.  If we hear about the same document multiple times, we only need to process that id once.
@@ -161,7 +164,7 @@
                     return;

                 // Only publish document diagnostics for the languages this provider supports.
-                if (document.Project.Language is not CodeAnalysis.LanguageNames.CSharp and not CodeAnalysis.LanguageNames.VisualBasic)
+                if (!_supportedLanguages.Contains(document.Project.Language))
                     return;

                 _diagnosticsWorkQueue.AddWork(document.Id);


Fix build

Fix build

--- src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/OperationExtensions.cs
+++ src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/OperationExtensions.cs
@@ -376,7 +376,7 @@
         /// </summary>
         /// <param name="operation">The starting operation.</param>
         /// <returns>The inner non conversion operation or the starting operation if it wasn't a conversion operation.</returns>
-        public static IOperation WalkDownConversion(this IOperation? operation)
+        public static IOperation? WalkDownConversion(this IOperation? operation)
         {
             while (operation is IConversionOperation conversionOperation)
             {


register checkforsubmittedpackagestask in container

--- src/chocolatey.package.verifier.host/infrastructure/registration/ContainerBindingConsole.cs
+++ src/chocolatey.package.verifier.host/infrastructure/registration/ContainerBindingConsole.cs
@@ -45,7 +45,7 @@
                     var list = new List<ITask>
                     {
                         new StartupTask(),
-                        new ShutdownAfterWorkCompletedTask(),
+                        new CheckForSubmittedPackagesTask(),
                         new CreateGistTask()
                     };


Workaround MonoDevelop.Core.FilePath tests failing to run due to strong name issues.

--- test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/FallbackRazorProjectHostTest.cs
+++ test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/FallbackRazorProjectHostTest.cs
@@ -9,7 +9,7 @@
 {
     public class FallbackRazorProjectHostTest
     {
-        [Theory]
+        [Theory(Skip = "MonoDevelop.Core.FilePath cannot be loaded due to strong name issues.")]
         [InlineData(null)]
         [InlineData("")]
         public void IsMvcAssembly_FailsIfNullOrEmptyFilePath(string filePath)
@@ -25,7 +25,7 @@
             Assert.False(result);
         }

-        [Fact]
+        [Fact(Skip = "MonoDevelop.Core.FilePath cannot be loaded due to strong name issues.")]
         public void IsMvcAssembly_FailsIfNotMvc()
         {
             // Arrange
@@ -39,7 +39,7 @@
             Assert.False(result);
         }

-        [Fact]
+        [Fact(Skip = "MonoDevelop.Core.FilePath cannot be loaded due to strong name issues.")]
         public void IsMvcAssembly_SucceedsIfMvc()
         {
             // Arrange


Clean up file

Clean up file

--- Core/Utility/DiagnosticsClient.cs
+++ Core/Utility/DiagnosticsClient.cs
@@ -1,12 +1,5 @@
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 using Microsoft.ApplicationInsights;
 using Microsoft.ApplicationInsights.Extensibility;
@@ -16,11 +9,7 @@
 {
     public static class DiagnosticsClient
     {
-        private static bool _initialized;
-
-        private static TelemetryClient  _client;
-
-
+        private static TelemetryClient?  _client;

         public static void Initialize()
         {
@@ -28,16 +17,12 @@
             TelemetryConfiguration.Active.TelemetryInitializers.Add(new EnvironmentTelemetryInitializer());

             Application.Current.DispatcherUnhandledException += App_DispatcherUnhandledException;
-
-            _initialized = true;
-
             _client = new TelemetryClient();
         }

         public static void OnExit()
         {
-            if (!_initialized) return;
-
+            if (_client == null) return;
             _client.Flush();

             // Allow time for flushing and sending:
@@ -51,27 +36,25 @@

         public static void TrackEvent(string eventName, IDictionary<string, string>? properties = null, IDictionary<string, double>? metrics = null)
         {
-            if (!_initialized) return;
+            if (_client == null) return;
             _client.TrackEvent(eventName, properties, metrics);
         }

         public static void TrackTrace(string evt, IDictionary<string, string>? properties = null)
         {
-            if (!_initialized) return;
+            if (_client == null) return;
             _client.TrackTrace(evt, properties);
         }

         public static void TrackException(Exception exception, IDictionary<string, string>? properties = null, IDictionary<string, double>? metrics = null)
         {
-            if (!_initialized) return;
-
+            if (_client == null) return;
             _client.TrackException(exception, properties, metrics);
         }

         public static void TrackPageView(string pageName)
         {
-            if (!_initialized) return;
-
+            if (_client == null) return;
             _client.TrackPageView(pageName);
         }
     }


fix cast error

fix cast error

--- DamageMeter.Core/DamageTracker.cs
+++ DamageMeter.Core/DamageTracker.cs
@@ -48,7 +48,7 @@

         public void RegisterDead(SCreatureLife dead)
         {
-            var user = (UserEntity)NetworkController.Instance.EntityTracker.GetOrNull(dead.User);
+            var user = NetworkController.Instance.EntityTracker.GetOrNull(dead.User) as UserEntity;
             if (user != null)
             {
                 var player = NetworkController.Instance.PlayerTracker.GetOrUpdate(user);
@@ -73,7 +73,7 @@
             {
                 EntitiesStats.Add(entity, new EntityInfo());
             }
-            var user = (UserEntity)NetworkController.Instance.EntityTracker.GetOrNull(aggro.Target);
+            var user = NetworkController.Instance.EntityTracker.GetOrNull(aggro.Target) as UserEntity;
             if (user != null)
             {
                 var player = NetworkController.Instance.PlayerTracker.GetOrUpdate(user);


Minor fix to improve startup time greatly

--- Eurofurence.Companion/App.xaml.cs
+++ Eurofurence.Companion/App.xaml.cs
@@ -170,7 +170,8 @@
                 {
                     var updateTask = KernelResolver.Current.Get<ContextManager>()
                         .Update(doSaveToStoreBeforeUpdate: false);
-                    Task.WaitAll(new[] { updateTask }, TimeSpan.FromSeconds(10));
+
+                    await Task.Run(() => Task.WaitAll(new[] { updateTask }, TimeSpan.FromSeconds(10)));
                 }
             }


Use a built-in StreamReader to read the initial text from the auto-save file.

--- Eutherion/Win/Storage/AutoSave.cs
+++ Eutherion/Win/Storage/AutoSave.cs
@@ -441,25 +441,12 @@

         private SettingObject Load(FileStream autoSaveFileStream, Decoder decoder, byte[] inputBuffer, char[] decodedBuffer, out List<JsonErrorInfo> errors)
         {
-            // Reuse one string builder to build keys and values.
-            StringBuilder sb = new StringBuilder();
-
-            // Loop until the entire file is read.
-            for (; ; )
-            {
-                int bytes = autoSaveFileStream.Read(inputBuffer, 0, CharBufferSize);
-                if (bytes == 0) break;
-
-                int chars = decoder.GetChars(inputBuffer, 0, bytes, decodedBuffer, 0);
-                if (chars > 0)
-                {
-                    sb.Append(decodedBuffer, 0, chars);
-                }
-            }
+            var streamReader = new StreamReader(autoSaveFileStream);
+            string loadedText = streamReader.ReadToEnd();

             // Load into a copy of localSettings, preserving defaults.
             var workingCopy = localSettings.CreateWorkingCopy();
-            errors = SettingReader.ReadWorkingCopy(sb.ToString(), workingCopy);
+            errors = SettingReader.ReadWorkingCopy(loadedText, workingCopy);
             return workingCopy.Commit();
         }


Can now stop relying on the single byte written to autoSaveFileStream to choose the first auto-save file to load from.

--- Eutherion/Win/Storage/AutoSave.cs
+++ Eutherion/Win/Storage/AutoSave.cs
@@ -211,15 +211,8 @@
                 buffer = new char[CharBufferSize];
                 encodedBuffer = new byte[encoding.GetMaxByteCount(CharBufferSize)];

-                // Choose auto-save file to load from.
-                int flag = LastWriteToFileStream1;
-                if (autoSaveFileStream.Length > 0) flag = autoSaveFileStream.ReadByte();
-
-                FileStream latestAutoSaveFile
-                    = autoSaveFile2.Length == 0 ? autoSaveFile1
-                    : autoSaveFile1.Length == 0 ? autoSaveFile2
-                    : flag == LastWriteToFileStream2 ? autoSaveFile2
-                    : autoSaveFile1;
+                // Choose first auto-save file to load from.
+                FileStream latestAutoSaveFile = autoSaveFile1.Length == 0 ? autoSaveFile2 : autoSaveFile1;

                 string loadedText = null;
                 try


修正嵌套的子表个数读取报错的BUG

修正嵌套的子表个数读取报错的BUG

--- ConfigInfo.cs
+++ ConfigInfo.cs
@@ -207,8 +207,7 @@
                     int tempEndIndex = endIndex;
                     if (subNestEleCount > 1)
                     {
-                        subNestEleCount = Math.Min(maxNestColumnCount - 1, subNestEleCount);
-                        subNode = RowHeirarchyIterator(enumColumnIndex, rowIndex, subNestEleCount, ref tempEndIndex);
+                        subNode = RowHeirarchyIterator(enumColumnIndex, rowIndex, maxNestColumnCount - 1, ref tempEndIndex);
                     }
                     else
                     {


Fixed a few pixels of the Windows 10 taskbar displaying below BabySmash window. Not tested with ClickOnce.

--- Controller.cs
+++ Controller.cs
@@ -127,6 +127,7 @@
                     Width = s.WorkingArea.Width,
                     Height = s.WorkingArea.Height,
                     WindowStyle = WindowStyle.None,
+                    ResizeMode = ResizeMode.NoResize,
                     Topmost = true,
                     AllowsTransparency = Settings.Default.TransparentBackground,
                     Background = (Settings.Default.TransparentBackground ? new SolidColorBrush(Color.FromArgb(1, 0, 0, 0)) : Brushes.WhiteSmoke),


Revert FileListings.cs

Revert FileListings.cs

--- FluentFTP/Helpers/FileListings.cs
+++ FluentFTP/Helpers/FileListings.cs
@@ -20,8 +20,7 @@

 			// cleanup file path, get file name
 			var pathName = path.GetFtpFileName();
-			var pathPrefixed = pathName;
-			pathPrefixed = path.EnsurePrefix("/");
+			var pathPrefixed = path.EnsurePrefix("/");

 			// per entry in the name list
 			foreach (var fileListEntry in fileList) {


Clean up unused lat/long coordinates in language tests.

--- ForecastPCL.Test/LanguageTests.cs
+++ ForecastPCL.Test/LanguageTests.cs
@@ -16,9 +16,6 @@
         // and should return forecasts with all blocks.
         private const double AlcatrazLatitude = 37.8267;
         private const double AlcatrazLongitude = -122.423;
-
-        private const double MumbaiLatitude = 18.975;
-        private const double MumbaiLongitude = 72.825833;

         /// <summary>
         /// API key to be used for testing. This should be specified in the


/ ‘GameDevChallenges/Assets/Water.cs’

/ ‘GameDevChallenges/Assets/Water.cs’

--- GameDevChallenges/Assets/Water.cs
+++ GameDevChallenges/Assets/Water.cs
@@ -73,6 +73,8 @@

 	void Awake() {
 		float areaOfPipe = Mathf.PI * Mathf.Pow (radiusOfPipe, 2.0f); //Pi * Radius^2
+
+		//we calculate this once on awake instead of calculating it once every frame...because optimization.
 		fluxMultiplier = deltaTime * areaOfPipe*accelerationDueToGravity;

 		D1 = new float[size * size];


Fix minor issue

Fix minor issue

--- GitMind/Git/Private/GitService.cs
+++ GitMind/Git/Private/GitService.cs
@@ -24,7 +24,7 @@

 		private readonly ICmd cmd;
 		private readonly IGitDiffParser gitDiffParser;
-
+

 		public GitService(ICmd cmd, IGitDiffParser gitDiffParser)
@@ -170,7 +170,7 @@
 		}

-
+

 		public Task<R<CommitDiff>> GetFileDiffAsync(string workingFolder, string commitId, string name)
@@ -733,7 +733,7 @@
 			}
 			catch (Exception e)
 			{
-				Log.Warn($"Failed to set branch, {e.Message}");
+				Log.Warn($"Failed to set note branch, {e.Message}");
 			}
 		}


failing test

failing test

--- src/UnitTests/CollectionMapping.cs
+++ src/UnitTests/CollectionMapping.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Linq;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Collections.Specialized;
@@ -7,6 +8,40 @@

 namespace AutoMapper.UnitTests
 {
+    public class When_mapping_collections_with_structs : AutoMapperSpecBase
+    {
+        BarDTO _destination;
+
+        public struct Foo { }
+        public struct Bar
+        {
+            public IEnumerable<Foo> Foos { get; set; }
+        }
+
+        public struct FooDTO { }
+        public struct BarDTO
+        {
+            public IEnumerable<FooDTO> Foos { get; set; }
+        }
+
+        protected override MapperConfiguration Configuration => new MapperConfiguration(cfg =>
+        {
+            cfg.CreateMap<Bar, BarDTO>();
+            cfg.CreateMap<Foo, FooDTO>();
+        });
+
+        protected override void Because_of()
+        {
+            _destination = Mapper.Map<BarDTO>(new Bar { Foos = new Foo[5] });
+        }
+
+        [Fact]
+        public void Should_map_ok()
+        {
+            _destination.Foos.SequenceEqual(new FooDTO[5]).ShouldBeTrue();
+        }
+    }
+
     public class CollectionMapping
     {
         public CollectionMapping()


adjust poorly placed finally-clause

adjust poorly placed finally-clause

--- src/VisualLinter/Linting/Linter.cs
+++ src/VisualLinter/Linting/Linter.cs
@@ -47,6 +47,10 @@
             {
                 OutputWindowHelper.WriteLine(exception.Message);
             }
+            finally
+            {
+                _isRunning = false;
+            }
         }

         private static string GetGlobalEslintPath()
@@ -148,8 +152,6 @@
                 finally
                 {
                     process.Close();
-
-                    _isRunning = false;
                 }
             });
         }


better exception msg

better exception msg

--- src/VisualLinter/Linting/Linter.cs
+++ src/VisualLinter/Linting/Linter.cs
@@ -43,23 +43,27 @@
                     var eslintPath = GetEslintPath(filePath);
                     OutputWindowHelper.DebugLine($"using eslint @ {eslintPath}");

-                    var result = await RunAsync(filePath, eslintPath, token)
+                    var output = await RunAsync(filePath, eslintPath, token)
                         .ConfigureAwait(false);

                     token.ThrowIfCancellationRequested();

-                    if (string.IsNullOrEmpty(result))
+                    if (string.IsNullOrEmpty(output))
                         throw new Exception("exception: linter returned empty result");

                     IEnumerable<EslintResult> results = new List<EslintResult>();

                     try
                     {
-                        results = JsonConvert.DeserializeObject<IEnumerable<EslintResult>>(result);
+                        results = JsonConvert.DeserializeObject<IEnumerable<EslintResult>>(output);
                     }
                     catch (Exception e)
                     {
-                        OutputWindowHelper.WriteLine($"exception: error trying to deserialize result: {result}");
+                        OutputWindowHelper.WriteLine(
+                            "exception: error trying to deserialize output:" +
+                            Environment.NewLine +
+                            output);
+
                         OutputWindowHelper.WriteLine(e.Message);
                     }


Bring back Convert_XYZ_as_vector_to_XYZ test

--- tests/Colourful.Tests/XYZAndxyYConversionTest.cs
+++ tests/Colourful.Tests/XYZAndxyYConversionTest.cs
@@ -78,7 +78,7 @@
             Assert.Equal(output.Z, xyzZ, DoubleComparer);
         }

-        /*
+
         [Theory]
         [InlineData(0.538842, 0.000000, 0.000000)]
         public void Convert_XYZ_as_vector_to_XYZ(double x, double y, double z)
@@ -96,6 +96,5 @@
             Assert.Equal(output.Y, y, DoubleComparer);
             Assert.Equal(output.Z, z, DoubleComparer);
         }
-        */
     }
 }


style (IsNumberTests): change names of unit test functions

--- tests/Yaapii.Atoms.Tests/Number/IsNumberTests.cs
+++ tests/Yaapii.Atoms.Tests/Number/IsNumberTests.cs
@@ -39,7 +39,7 @@
         }

         [Fact]
-        public void DetectsNumberWithSpecifiedFormatProvider()
+        public void DetectsCustomCultureNumber()
         {
             Assert.True(
                 new IsNumber(
@@ -67,7 +67,7 @@
         }

         [Fact]
-        public void DetectsNumberFromTextWithSpecifiedFormatProvider()
+        public void DetectsCustomCultureNumberFromText()
         {
             Assert.True(
                 new IsNumber(


Disambiguate king moves as well, for easier code.

--- Sandra.Chess/MoveFormatter.cs
+++ Sandra.Chess/MoveFormatter.cs
@@ -178,9 +178,9 @@
                     AppendFile(builder, move.SourceSquare);
                 }
             }
-            else if (move.MovingPiece != Piece.King)
-            {
-                // Disambiguate source square, not needed for pawns or kings.
+            else
+            {
+                // Disambiguate source square.
                 MoveInfo testMoveInfo = new MoveInfo()
                 {
                     TargetSquare = move.TargetSquare,


Allow tag names to start with a lowercase letter or an underscore, as this considerably simplifies the state machine to build.

--- Sandra.Chess/Pgn/PgnParser.cs
+++ Sandra.Chess/Pgn/PgnParser.cs
@@ -185,7 +185,7 @@
                                 goto default;
                             default:
                                 // Tag names must start with an uppercase letter.
-                                allLegalTagNameCharacters = characterClass.Test(UppercaseLetterCharacter);
+                                allLegalTagNameCharacters = characterClass.Test(UppercaseLetterCharacter | LowercaseLetterCharacter);
                                 goto inSymbol;
                         }
                     }


fixed test to include default values

fixed test to include default values

--- SendGrid/UnitTest/UnitTest.cs
+++ SendGrid/UnitTest/UnitTest.cs
@@ -69,7 +69,7 @@
             String ret = mail.Get();
             String final = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(ret),
                                 Formatting.None,
-                                new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore });
+                                new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Include });
             Assert.AreEqual(final, "{\"from\":{\"email\":\"test@example.com\"},\"subject\":\"Hello World from the SendGrid CSharp Library\",\"personalizations\":[{\"to\":[{\"email\":\"test@example.com\"}]}],\"content\":[{\"type\":\"text/plain\",\"value\":\"Textual content\"},{\"type\":\"text/html\",\"value\":\"HTML content\"}]}");
         }

@@ -262,8 +262,8 @@
             String ret = mail.Get();
             String final = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(ret),
                                 Formatting.None,
-                                new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore });
-            Assert.AreEqual(final, "{\"from\":{\"name\":\"Example User\",\"email\":\"test@example.com\"},\"subject\":\"Hello World from the SendGrid CSharp Library\",\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"cc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"bcc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"subject\":\"Thank you for signing up, %name%\",\"headers\":{\"X-Test\":\"True\",\"X-Mock\":\"True\"},\"substitutions\":{\"%name%\":\"Example User\",\"%city%\":\"Denver\"},\"custom_args\":{\"marketing\":\"false\",\"transactional\":\"true\"},\"send_at\":1461775051},{\"to\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"cc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"bcc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"subject\":\"Thank you for signing up, %name%\",\"headers\":{\"X-Test\":\"True\",\"X-Mock\":\"True\"},\"substitutions\":{\"%name%\":\"Example User\",\"%city%\":\"Denver\"},\"custom_args\":{\"marketing\":\"false\",\"transactional\":\"true\"},\"send_at\":1461775051}],\"content\":[{\"type\":\"text/plain\",\"value\":\"Textual content\"},{\"type\":\"text/html\",\"value\":\"HTML content\"},{\"type\":\"text/calendar\",\"value\":\"Party Time!!\"}],\"attachments\":[{\"content\":\"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12\",\"type\":\"application/pdf\",\"filename\":\"balance_001.pdf\",\"disposition\":\"attachment\",\"content_id\":\"Balance Sheet\"},{\"content\":\"BwdW\",\"type\":\"image/png\",\"filename\":\"banner.png\",\"disposition\":\"inline\",\"content_id\":\"Banner\"}],\"template_id\":\"13b8f94f-bcae-4ec6-b752-70d6cb59f932\",\"headers\":{\"X-Day\":\"Monday\",\"X-Month\":\"January\"},\"sections\":{\"%section1\":\"Substitution for Section 1 Tag\",\"%section2\":\"Substitution for Section 2 Tag\"},\"categories\":[\"customer\",\"vip\"],\"custom_args\":{\"campaign\":\"welcome\",\"sequence\":\"2\"},\"send_at\":1461775051,\"asm\":{\"group_id\":3,\"groups_to_display\":[1,4,5]},\"ip_pool_name\":\"23\",\"mail_settings\":{\"bcc\":{\"enable\":true,\"email\":\"test@example.com\"},\"bypass_list_management\":{\"enable\":true},\"footer\":{\"enable\":true,\"text\":\"Some Footer Text\",\"html\":\"<bold>Some HTML Here</bold>\"},\"sandbox_mode\":{\"enable\":true},\"spam_check\":{\"enable\":true,\"threshold\":1,\"post_to_url\":\"https://gotchya.example.com\"}},\"tracking_settings\":{\"click_tracking\":{\"enable\":true},\"open_tracking\":{\"enable\":true,\"substitution_tag\":\"Optional tag to replace with the open image in the body of the message\"},\"subscription_tracking\":{\"enable\":true,\"text\":\"text to insert into the text/plain portion of the message\",\"html\":\"<bold>HTML to insert into the text/html portion of the message</bold>\",\"substitution_tag\":\"text to insert into the text/plain portion of the message\"},\"ganalytics\":{\"enable\":true,\"utm_source\":\"some source\",\"utm_medium\":\"some medium\",\"utm_term\":\"some term\",\"utm_content\":\"some content\",\"utm_campaign\":\"some campaign\"}},\"reply_to\":{\"email\":\"test@example.com\"}}");
+                                new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Include });
+            Assert.AreEqual(final, "{\"from\":{\"name\":\"Example User\",\"email\":\"test@example.com\"},\"subject\":\"Hello World from the SendGrid CSharp Library\",\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"cc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"bcc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"subject\":\"Thank you for signing up, %name%\",\"headers\":{\"X-Test\":\"True\",\"X-Mock\":\"True\"},\"substitutions\":{\"%name%\":\"Example User\",\"%city%\":\"Denver\"},\"custom_args\":{\"marketing\":\"false\",\"transactional\":\"true\"},\"send_at\":1461775051},{\"to\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"cc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"bcc\":[{\"name\":\"Example User\",\"email\":\"test@example.com\"},{\"name\":\"Example User\",\"email\":\"test@example.com\"}],\"subject\":\"Thank you for signing up, %name%\",\"headers\":{\"X-Test\":\"True\",\"X-Mock\":\"True\"},\"substitutions\":{\"%name%\":\"Example User\",\"%city%\":\"Denver\"},\"custom_args\":{\"marketing\":\"false\",\"transactional\":\"true\"},\"send_at\":1461775051}],\"content\":[{\"type\":\"text/plain\",\"value\":\"Textual content\"},{\"type\":\"text/html\",\"value\":\"HTML content\"},{\"type\":\"text/calendar\",\"value\":\"Party Time!!\"}],\"attachments\":[{\"content\":\"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12\",\"type\":\"application/pdf\",\"filename\":\"balance_001.pdf\",\"disposition\":\"attachment\",\"content_id\":\"Balance Sheet\"},{\"content\":\"BwdW\",\"type\":\"image/png\",\"filename\":\"banner.png\",\"disposition\":\"inline\",\"content_id\":\"Banner\"}],\"template_id\":\"13b8f94f-bcae-4ec6-b752-70d6cb59f932\",\"headers\":{\"X-Day\":\"Monday\",\"X-Month\":\"January\"},\"sections\":{\"%section1\":\"Substitution for Section 1 Tag\",\"%section2\":\"Substitution for Section 2 Tag\"},\"categories\":[\"customer\",\"vip\"],\"custom_args\":{\"campaign\":\"welcome\",\"sequence\":\"2\"},\"send_at\":1461775051,\"asm\":{\"group_id\":3,\"groups_to_display\":[1,4,5]},\"ip_pool_name\":\"23\",\"mail_settings\":{\"bcc\":{\"enable\":true,\"email\":\"test@example.com\"},\"bypass_list_management\":{\"enable\":true},\"footer\":{\"enable\":true,\"text\":\"Some Footer Text\",\"html\":\"<bold>Some HTML Here</bold>\"},\"sandbox_mode\":{\"enable\":true},\"spam_check\":{\"enable\":true,\"threshold\":1,\"post_to_url\":\"https://gotchya.example.com\"}},\"tracking_settings\":{\"click_tracking\":{\"enable\":true,\"enable_text\":false},\"open_tracking\":{\"enable\":true,\"substitution_tag\":\"Optional tag to replace with the open image in the body of the message\"},\"subscription_tracking\":{\"enable\":true,\"text\":\"text to insert into the text/plain portion of the message\",\"html\":\"<bold>HTML to insert into the text/html portion of the message</bold>\",\"substitution_tag\":\"text to insert into the text/plain portion of the message\"},\"ganalytics\":{\"enable\":true,\"utm_source\":\"some source\",\"utm_medium\":\"some medium\",\"utm_term\":\"some term\",\"utm_content\":\"some content\",\"utm_campaign\":\"some campaign\"}},\"reply_to\":{\"email\":\"test@example.com\"}}");
         }
         [Test]
         public void test_access_settings_activity_get()


Spruced up assertion for tip 45 C#

Spruced up assertion for tip 45 C#

--- 45-checkboxes/csharp/Checkboxes.cs
+++ 45-checkboxes/csharp/Checkboxes.cs
@@ -44,7 +44,7 @@
     {
         Driver.Navigate().GoToUrl("http://the-internet.herokuapp.com/checkboxes");
         IWebElement Checkbox = Driver.FindElement(By.CssSelector("form input:nth-of-type(2)"));
-        Assert.That(Checkbox.GetAttribute("checked") == "true");
+        Assert.That(Checkbox.GetAttribute("checked").Equals("true"));
     }

     [Test]


D-11311: fixed request/response logging

D-11311: fixed request/response logging

--- APIClient/Connector/V1Connector.cs
+++ APIClient/Connector/V1Connector.cs
@@ -314,7 +314,7 @@
                 stringBuilder.AppendLine("\tHeaders: ");
                 foreach (var header in rm.Headers)
                 {
-                    stringBuilder.AppendLine("\t\t" + header.Key + "=" + header.Value);
+                    stringBuilder.AppendLine("\t\t" + header.Key + "=" + string.Join(",", header.Value));
                 }
                 stringBuilder.AppendLine("\tBody: ");
                 stringBuilder.AppendLine("\t\t" + requestBody);
@@ -348,8 +348,8 @@
                 stringBuilder.AppendLine("\tHeaders: ");
                 foreach (var header in resp.Headers)
                 {
-                    stringBuilder.AppendLine("\t\t" + header.Key + "=" + header.Value);
-                }
+					stringBuilder.AppendLine("\t\t" + header.Key + "=" + string.Join(",", header.Value));
+				}
                 stringBuilder.AppendLine("\tBody: ");
                 stringBuilder.AppendLine("\t\t" + responseBody);


Fix Previous and Next NRE.

Fix Previous and Next NRE.

--- tests/tests/classes/tests/Physics/PhysicsTest.cs
+++ tests/tests/classes/tests/Physics/PhysicsTest.cs
@@ -72,7 +72,7 @@
         public static CCLayer NextAction()
         {
             ++sceneIndex;
-            sceneIndex = sceneIndex % (int)EventDispatchTests.TEST_CASE_COUNT;
+            sceneIndex = sceneIndex % (int)PhysicsTests.TEST_CASE_COUNT;

             var testLayer = CreateLayer(sceneIndex);

@@ -83,7 +83,7 @@
         {
             --sceneIndex;
             if (sceneIndex < 0)
-                sceneIndex += (int)EventDispatchTests.TEST_CASE_COUNT;
+                sceneIndex += (int)PhysicsTests.TEST_CASE_COUNT;

             var testLayer = CreateLayer(sceneIndex);


fix: missing select column TABLE_NAME (#251)

this will cause error when run database first migration

--- Google.Cloud.EntityFrameworkCore.Spanner/Scaffolding/Internal/SpannerDatabaseModelFactory.cs
+++ Google.Cloud.EntityFrameworkCore.Spanner/Scaffolding/Internal/SpannerDatabaseModelFactory.cs
@@ -111,7 +111,7 @@
         {
             using var command = connection.CreateCommand();
             var commandText = @"
-                SELECT COLUMN_NAME, SPANNER_TYPE, IS_NULLABLE, CAST(COLUMN_DEFAULT AS STRING) AS COLUMN_DEFAULT,
+                SELECT TABLE_NAME, COLUMN_NAME, SPANNER_TYPE, IS_NULLABLE, CAST(COLUMN_DEFAULT AS STRING) AS COLUMN_DEFAULT,
                        IS_GENERATED, GENERATION_EXPRESSION
                 FROM INFORMATION_SCHEMA.COLUMNS
                 WHERE TABLE_CATALOG = '' AND TABLE_SCHEMA = ''


PaymentSetting.QueryOrder方法重命名为PaymentSetting.Query

--- ICanPay/ICanPay/PaymentSetting.cs
+++ ICanPay/ICanPay/PaymentSetting.cs
@@ -60,9 +60,10 @@
         }

         /// <summary>
-        /// 查询订单，订单的数据通过跟支付通知一样的形式发回。
+        /// 查询订单
         /// </summary>
-        public void QueryOrder()
+        /// <remarks>订单的数据通过跟支付通知一样的形式发回。用处理网关通知一样的方法接受查询订单的数据</remarks>
+        public void Query()
         {
             // 判断网关实现了哪一个产生支付数据的接口，调用相应接口输出订单数据。
             if (t is IQueryForm)


fixed title and comment username

fixed title and comment username

--- Inspicio/Views/Images/View.cshtml
+++ Inspicio/Views/Images/View.cshtml
@@ -4,7 +4,7 @@

-
@Model.Review.Title

+
@Model.ScreensList[0].Screen.Title

     <input type="checkbox"
            @{ if (Model.Review.ReviewState == Review.States.Open)
                {
@@ -135,7 +135,10 @@

-
@c.OwnerId

+                                @{
+                                    var UserName = (await UserManager.FindByIdAsync(c.OwnerId)).ProfileName;
+                                }
+
@UserName

@c.Timestamp.ToString("h:mm tt")


tweak formatting in targets

tweak formatting in targets

--- targets/Program.cs
+++ targets/Program.cs
@@ -14,10 +14,10 @@
             "pack",
             DependsOn("build"),
             ForEach("LiteGuard.nuspec", "LiteGuard.Source.nuspec"),
-            async nuspec =>
-            {
-                await RunAsync("dotnet", "pack LiteGuard --configuration Release --no-build --nologo", configureEnvironment: env => env.Add("NUSPEC_FILE", nuspec));
-            });
+            async nuspec => await RunAsync(
+                "dotnet",
+                "pack LiteGuard --configuration Release --no-build --nologo",
+                configureEnvironment: env => env.Add("NUSPEC_FILE", nuspec)));

         Target(
             "test",


TVA.Core: Improved debug result format from unit tests.

git-tfs-id: [https://tfs.codeplex.com/tfs/TFS05]$/tvacodelibrary/Main;C70832

--- Source/OldCode/TVACodeLibrary/Source/Libraries/Tests/TVA.Core.Tests/PatternCompressorTest.cs
+++ Source/OldCode/TVACodeLibrary/Source/Libraries/Tests/TVA.Core.Tests/PatternCompressorTest.cs
@@ -107,8 +107,8 @@
             results.AppendFormat("Total number of bytes:   \t{0:#,##0}\r\n", dataLen);
             results.AppendFormat("Total Calculation time:  \t{0}\r\n", (stopTime - startTime).ToElapsedTimeString(4));
             results.AppendFormat("Calculation speed:       \t{0:#,##0.0000} MB/sec\r\n", (dataLen / (double)SI2.Mega) / (stopTime - startTime).ToSeconds());
-            results.AppendFormat("Compression strength:    \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
-            results.AppendFormat("Compared to gzip:        \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
+            results.AppendFormat("Compression results:     \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
+            results.AppendFormat("Standard gzip results:   \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
             Debug.WriteLine(results.ToString());

             Assert.AreNotEqual(compressedLen, dataLen);
@@ -153,8 +153,8 @@
             results.AppendFormat("Total number of bytes:   \t{0:#,##0}\r\n", dataLen);
             results.AppendFormat("Total Calculation time:  \t{0}\r\n", (stopTime - startTime).ToElapsedTimeString(4));
             results.AppendFormat("Calculation speed:       \t{0:#,##0.0000} MB/sec\r\n", (dataLen / (double)SI2.Mega) / (stopTime - startTime).ToSeconds());
-            results.AppendFormat("Compression strength:    \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
-            results.AppendFormat("Compared to gzip:        \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
+            results.AppendFormat("Compression results:     \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
+            results.AppendFormat("Standard gzip results:   \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
             Debug.WriteLine(results.ToString());

             Assert.AreNotEqual(compressedLen, dataLen);
@@ -203,8 +203,8 @@
             results.AppendFormat("Total number of bytes:   \t{0:#,##0}\r\n", dataLen);
             results.AppendFormat("Total Calculation time:  \t{0}\r\n", (stopTime - startTime).ToElapsedTimeString(4));
             results.AppendFormat("Calculation speed:       \t{0:#,##0.0000} MB/sec\r\n", (dataLen / (double)SI2.Mega) / (stopTime - startTime).ToSeconds());
-            results.AppendFormat("Compression strength:    \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
-            results.AppendFormat("Compared to gzip:        \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
+            results.AppendFormat("Compression results:     \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
+            results.AppendFormat("Standard gzip results:   \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
             Debug.WriteLine(results.ToString());

             Assert.AreNotEqual(compressedLen, dataLen);
@@ -249,8 +249,8 @@
             results.AppendFormat("Total number of bytes:   \t{0:#,##0}\r\n", dataLen);
             results.AppendFormat("Total Calculation time:  \t{0}\r\n", (stopTime - startTime).ToElapsedTimeString(4));
             results.AppendFormat("Calculation speed:       \t{0:#,##0.0000} MB/sec\r\n", (dataLen / (double)SI2.Mega) / (stopTime - startTime).ToSeconds());
-            results.AppendFormat("Compression strength:    \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
-            results.AppendFormat("Compared to gzip:        \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
+            results.AppendFormat("Compression results:     \t{0:0.00%}\r\n", (dataLen - compressedLen) / (double)dataLen);
+            results.AppendFormat("Standard gzip results:   \t{0:0.00%}\r\n", (dataLen - gzipLen) / (double)gzipLen);
             Debug.WriteLine(results.ToString());

             Assert.AreNotEqual(compressedLen, dataLen);


added full namespace to objects in context setup code

--- Source/nHydrate.Generator.EFCodeFirstNetCore/Generators/Contexts/ContextGeneratedTemplate.cs
+++ Source/nHydrate.Generator.EFCodeFirstNetCore/Generators/Contexts/ContextGeneratedTemplate.cs
@@ -396,47 +396,6 @@
                     }
                 }

-                //NO AUDIT TRACKING FOR NOW
-                //if (table.AllowAuditTracking)
-                //{
-                //    if (table.AllowCreateAudit)
-                //    {
-                //        if (!String.Equals(_model.Database.CreatedByDatabaseName, _model.Database.CreatedByPascalName, StringComparison.OrdinalIgnoreCase))
-                //        {
-                //            sb.Append("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">()");
-                //            sb.Append(".Property(d => d." + _model.Database.CreatedByPascalName + ")");
-                //            sb.Append(".HasColumnName(\"" + _model.Database.CreatedByDatabaseName + "\")");
-                //            sb.AppendLine(";");
-                //        }
-
-                //        if (!String.Equals(_model.Database.CreatedDateDatabaseName, _model.Database.CreatedDatePascalName, StringComparison.OrdinalIgnoreCase))
-                //        {
-                //            sb.Append("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">()");
-                //            sb.Append(".Property(d => d." + _model.Database.CreatedDatePascalName + ")");
-                //            sb.Append(".HasColumnName(\"" + _model.Database.CreatedDateDatabaseName + "\")");
-                //            sb.AppendLine(";");
-                //        }
-                //    }
-                //    if (table.AllowModifiedAudit)
-                //    {
-                //        if (!_model.Database.ModifiedByDatabaseName.Equals(_model.Database.ModifiedByPascalName, StringComparison.OrdinalIgnoreCase))
-                //        {
-                //            sb.Append("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">()");
-                //            sb.Append(".Property(d => d." + _model.Database.ModifiedByPascalName + ")");
-                //            sb.Append(".HasColumnName(\"" + _model.Database.ModifiedByDatabaseName + "\")");
-                //            sb.AppendLine(";");
-                //        }
-
-                //        if (!_model.Database.ModifiedDateDatabaseName.Equals(_model.Database.ModifiedDatePascalName, StringComparison.OrdinalIgnoreCase))
-                //        {
-                //            sb.Append("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">()");
-                //            sb.Append(".Property(d => d." + _model.Database.ModifiedDatePascalName + ")");
-                //            sb.Append(".HasColumnName(\"" + _model.Database.ModifiedDateDatabaseName + "\")");
-                //            sb.AppendLine(";");
-                //        }
-                //    }
-                //}
-
                 if (table.AllowCreateAudit)
                     sb.AppendLine("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">().Property(d => d." + _model.Database.CreatedDateColumnName + ").IsRequired();");
                 if (table.AllowModifiedAudit)
@@ -493,7 +452,7 @@
                         if (typeTable == null) typeTable = table;
                         if (typeTable != null)
                         {
-                            sb.AppendLine("			modelBuilder.Entity<" + table.PascalName + ">().Ignore(t => t." + pascalRoleName + typeTable.PascalName + "Value);");
+                            sb.AppendLine("			modelBuilder.Entity<" + this.GetLocalNamespace() + ".Entity." + table.PascalName + ">().Ignore(t => t." + pascalRoleName + typeTable.PascalName + "Value);");
                         }
                     }
                 }
@@ -635,7 +594,7 @@
                     var index2Name = ("FK_" + relation2.RoleName + "_" + relation2.ChildTable.DatabaseName + "_" + relation2.ParentTable.DatabaseName).ToUpper();

                     sb.AppendLine($"			//Relation for [{relation1.ParentTable.PascalName}] -> [{relation2.ParentTable.PascalName}] (Multiplicity N:M)");
-                    sb.AppendLine($"			modelBuilder.Entity<{relation1.ParentTable.PascalName}>()");
+                    sb.AppendLine($"			modelBuilder.Entity<{this.GetLocalNamespace()}.Entity.{relation1.ParentTable.PascalName}>()");
                     sb.AppendLine($"							.HasMany(q => q.{relation1.PascalRoleName}{table.PascalName}List)");
                     sb.AppendLine($"							.WithOne(q => q.{relation1.PascalRoleName}{relation1.ParentTable.PascalName})");
                     sb.AppendLine($"							.HasConstraintName(\"{index1Name}\")");
@@ -645,7 +604,7 @@
                     sb.AppendLine();

                     sb.AppendLine($"			//Relation for [{relation2.ParentTable.PascalName}] -> [{relation1.ParentTable.PascalName}] (Multiplicity N:M)");
-                    sb.AppendLine($"			modelBuilder.Entity<{relation2.ParentTable.PascalName}>()");
+                    sb.AppendLine($"			modelBuilder.Entity<{this.GetLocalNamespace()}.Entity.{relation2.ParentTable.PascalName}>()");
                     sb.AppendLine($"							.HasMany(q => q.{relation2.PascalRoleName}{table.PascalName}List)");
                     sb.AppendLine($"							.WithOne(q => q.{relation2.PascalRoleName}{relation2.ParentTable.PascalName})");
                     sb.AppendLine($"							.HasConstraintName(\"{index2Name}\")");


git-svn-id: https://jumony.svn.codeplex.com/svn/trunk@96400 2327b42d-5241-43d6-9e2a-de5ac946f064


Neaten up nmOpStrings

Neaten up nmOpStrings


DRY some code

DRY some code

--- Jil/Serialize/InlineSerializer.cs
+++ Jil/Serialize/InlineSerializer.cs
@@ -331,17 +331,7 @@

             if (serializingType.IsPrimitiveType())
             {
-                var needsIntCoersion = serializingType == typeof(byte) || serializingType == typeof(sbyte) || serializingType == typeof(short) || serializingType == typeof(ushort);
-
-                if (needsIntCoersion)
-                {
-                    emit.Convert<int>();            // TextWriter int
-                    serializingType = typeof(int);
-                }
-
-                var builtInMtd = typeof(TextWriter).GetMethod("Write", new[] { serializingType });
-
-                emit.CallVirtual(builtInMtd);       // --empty--
+                WritePrimitive(serializingType, emit);
                 return;
             }

@@ -351,6 +341,21 @@

                 WriteObject(serializingType, emit, recursiveTypes, loc);
             }
+        }
+
+        static void WritePrimitive(Type primitiveType, Emit emit)
+        {
+            var needsIntCoersion = primitiveType == typeof(byte) || primitiveType == typeof(sbyte) || primitiveType == typeof(short) || primitiveType == typeof(ushort);
+
+            if (needsIntCoersion)
+            {
+                emit.Convert<int>();            // TextWriter int
+                primitiveType = typeof(int);
+            }
+
+            var builtInMtd = typeof(TextWriter).GetMethod("Write", new[] { primitiveType });
+
+            emit.CallVirtual(builtInMtd);       // --empty--
         }

         internal static void WriteObject(Type forType, Emit emit, Dictionary<Type, Sigil.Local> recursiveTypes, Sigil.Local inLocal = null)
@@ -538,17 +543,7 @@
         {
             if (elementType.IsPrimitiveType())
             {
-                var needsIntCoersion = elementType == typeof(byte) || elementType == typeof(sbyte) || elementType == typeof(short) || elementType == typeof(ushort);
-
-                if (needsIntCoersion)
-                {
-                    emit.Convert<int>();            // TextWriter int
-                    elementType = typeof(int);
-                }
-
-                var builtInMtd = typeof(TextWriter).GetMethod("Write", new[] { elementType });
-
-                emit.CallVirtual(builtInMtd);       // --empty--
+                WritePrimitive(elementType, emit);
                 return;
             }

@@ -735,17 +730,7 @@

             if (elementType.IsPrimitiveType())
             {
-                var needsIntCoersion = elementType == typeof(byte) || elementType == typeof(sbyte) || elementType == typeof(short) || elementType == typeof(ushort);
-
-                if (needsIntCoersion)
-                {
-                    emit.Convert<int>();            // TextWriter int
-                    elementType = typeof(int);
-                }
-
-                var builtInMtd = typeof(TextWriter).GetMethod("Write", new[] { elementType });
-
-                emit.CallVirtual(builtInMtd);       // --empty--
+                WritePrimitive(elementType, emit);
                 return;
             }


Add VGG19-BN's hashvalue in Sample20.

Add VGG19-BN's hashvalue in Sample20.

--- KelpNet.Sample/Sample/Sample20.cs
+++ KelpNet.Sample/Sample/Sample20.cs
@@ -24,7 +24,7 @@
         private const string VGG16_MODEL_FILE_HASH = "a5a3fd73d345152852568509ebff19fc";
         private const string VGG19_MODEL_FILE_HASH = "3ddcbebbe6c937d504b09c48bf0ba371";
         private const string VGG16BN_MODEL_FILE_HASH = "fe75b896f4eaf071ff8460953ab7f4c6";
-        private const string VGG19BN_MODEL_FILE_HASH = "";
+        private const string VGG19BN_MODEL_FILE_HASH = "e00e03427016cf30e1c3b39b4e0ca0d1";
         private const string CLASS_LIST_PATH = "Data/synset_words.txt";

         private static readonly string[] Urls = { DOWNLOAD_URL + VGG16_MODEL_FILE, DOWNLOAD_URL + VGG19_MODEL_FILE, DOWNLOAD_URL + VGG16BN_MODEL_FILE, DOWNLOAD_URL + VGG19BN_MODEL_FILE };


Stupid sourcetree 2.0 missed this file.

Stupid sourcetree 2.0 missed this file.

--- Anfloga/Anfloga/Entities/Player.cs
+++ Anfloga/Anfloga/Entities/Player.cs
@@ -63,7 +63,6 @@
 		{
             facingLeftLightXOffset = AlwaysOnLightSprite.RelativeX;

-            CurrentCurrencyBalance = 1000;
             // We may end up calling this in a screen in case we want the screen to control this assignment
             AssignInput();

@@ -303,7 +302,15 @@
             //We are not worried about
             var currentOxygenPercentage = explorationDurationLeft / MaxExplorationTime;

-            PlayerHud.UpdateHud(new HudUpdateData() { ExplorationLimitFill =  currentOxygenPercentage, MineralText = CurrentCurrencyBalance});
+            var updateValues = new HudUpdateData()
+            {
+                ExplorationLimitFill = currentOxygenPercentage,
+                MineralText = CurrentCurrencyBalance,
+                IsFillingUp = currentExplorationState == ExplorationState.Replenish,
+                IsLow = currentOxygenPercentage < .25
+            };
+
+            PlayerHud.UpdateHud(updateValues);
         }

         private void PerformMovementInput()


Update stream api to support batches

Update stream api to support batches

--- Source/Orleankka/StreamRef.cs
+++ Source/Orleankka/StreamRef.cs
@@ -8,9 +8,6 @@
 using Orleans.Concurrency;
 using Orleans.Serialization;
 using Orleans.Streams;
-
-using Microsoft.Extensions.DependencyInjection;
-
 using Orleans.Runtime;

 namespace Orleankka
@@ -61,7 +58,7 @@
         /// <returns>
         /// A promise for a StreamSubscription that represents the subscription.
         /// The consumer may unsubscribe by using this object.
-        /// The subscription remains active for as long as it is not explicitely unsubscribed.
+        /// The subscription remains active for as long as it is not explicitly unsubscribed.
         /// </returns>
         public virtual async Task<StreamSubscription> Subscribe(Func<object, Task> callback, StreamFilter filter = null)
         {
@@ -73,6 +70,25 @@

             return new StreamSubscription(handle);
         }
+
+        /// <summary>
+        /// The batch-oriented stream subscription using weakly-typed delegate.
+        /// </summary>
+        /// <param name="callback">Callback delegate to receive stream pushes in batches.</param>
+        /// <returns>
+        /// A promise for a StreamSubscription that represents the subscription.
+        /// The consumer may unsubscribe by using this object.
+        /// The subscription remains active for as long as it is not explicitly unsubscribed.
+        /// </returns>
+        public virtual async Task<StreamSubscription> Subscribe<T>(Func<object[], Task> callback)
+        {
+            Requires.NotNull(callback, nameof(callback));
+
+            var observer = new BatchObserver(callback);
+            var handle = await Endpoint.SubscribeAsync(observer);
+
+            return new StreamSubscription(handle);
+        }

         /// <summary>
         /// Subscribe a consumer to this stream reference using strongly-typed delegate.
@@ -83,7 +99,7 @@
         /// <returns>
         /// A promise for a StreamSubscription that represents the subscription.
         /// The consumer may unsubscribe by using this object.
-        /// The subscription remains active for as long as it is not explicitely unsubscribed.
+        /// The subscription remains active for as long as it is not explicitly unsubscribed.
         /// </returns>
         public virtual Task<StreamSubscription> Subscribe<T>(Func<T, Task> callback, StreamFilter filter = null)
         {
@@ -100,7 +116,7 @@
         /// <returns>
         /// A promise for a StreamSubscription that represents the subscription.
         /// The consumer may unsubscribe by using this object.
-        /// The subscription remains active for as long as it is not explicitely unsubscribed.
+        /// The subscription remains active for as long as it is not explicitly unsubscribed.
         /// </returns>
         public virtual Task<StreamSubscription> Subscribe(Action<object> callback, StreamFilter filter = null)
         {
@@ -123,7 +139,7 @@
         /// <returns>
         /// A promise for a StreamSubscription that represents the subscription.
         /// The consumer may unsubscribe by using this object.
-        /// The subscription remains active for as long as it is not explicitely unsubscribed.
+        /// The subscription remains active for as long as it is not explicitly unsubscribed.
         /// </returns>
         public virtual Task<StreamSubscription> Subscribe<T>(Action<T> callback, StreamFilter filter = null)
         {
@@ -193,20 +209,32 @@

         #endregion

-        internal class Observer : IAsyncObserver<object>
-        {
-            readonly Func<object, StreamSequenceToken, Task> callback;
-
-            public Observer(Func<object, StreamSequenceToken, Task> callback)
-            {
+        internal class BatchObserver : IAsyncBatchObserver<object>
+        {
+            readonly Func<object[], Task> callback;
+
+            public BatchObserver(Func<object[], Task> callback) =>
                 this.callback = callback;
-            }
-
-            public Task OnNextAsync(object item, StreamSequenceToken token = null)
-                => callback(item, token);
+
+            public Task OnNextAsync(IList<SequentialItem<object>> items) =>
+                callback(items.Select(x => x.Item).ToArray());

             public Task OnCompletedAsync()           => Task.CompletedTask;
             public Task OnErrorAsync(Exception ex)   => Task.CompletedTask;
         }
+
+        internal class Observer : IAsyncObserver<object>
+        {
+            readonly Func<object, StreamSequenceToken, Task> callback;
+
+            public Observer(Func<object, StreamSequenceToken, Task> callback) =>
+                this.callback = callback;
+
+            public Task OnNextAsync(object item, StreamSequenceToken token = null) =>
+                callback(item, token);
+
+            public Task OnCompletedAsync()           => Task.CompletedTask;
+            public Task OnErrorAsync(Exception ex)   => Task.CompletedTask;
+        }
     }
 }


HashSet emulation fixed

HashSet emulation fixed

--- SourceFiles/Common/HashSet.cs
+++ SourceFiles/Common/HashSet.cs
@@ -1,6 +1,4 @@
 #if WINDOWS_PHONE || XBOX
-
-//TODO: FIX

 using System.Collections;
 using System.Collections.Generic;
@@ -9,24 +7,25 @@
 {
     public class HashSet<T> : ICollection<T>
     {
-        private Dictionary<T, short> _dict;
+        private Dictionary<T, byte> _dict;

         public HashSet(int capacity)
         {
-            _dict = new Dictionary<T, short>(capacity);
+            _dict = new Dictionary<T, byte>(capacity);
         }

         public HashSet()
         {
-            _dict = new Dictionary<T, short>();
+            _dict = new Dictionary<T, byte>();
         }

         #region ICollection<T> Members

         public void Add(T item)
         {
-            // We don't care for the value in dictionary, Keys matter.
-            _dict.Add(item, 0);
+            // We don't care for the value in dictionary, only keys matter.
+            if (!_dict.ContainsKey(item))
+                _dict.Add(item, 0);
         }

         public void Clear()


wrapped database deploy in transaction

wrapped database deploy in transaction

--- Sources/Core/DacpacHelpers.cs
+++ Sources/Core/DacpacHelpers.cs
@@ -10,7 +10,8 @@
         {
             var options = new DacDeployOptions()
             {
-                BlockOnPossibleDataLoss = true
+                BlockOnPossibleDataLoss = true,
+                IncludeTransactionalScripts = true
             };


Changed the way Types is added to the ToJson() result

If Types property does not have any item, we do not need to add a "Types" property to the json result object.

--- AssemblyInfo/AssemblyInfoResult.cs
+++ AssemblyInfo/AssemblyInfoResult.cs
@@ -41,7 +41,7 @@
         }
         public string ToJson()
         {
-            var _types = string.Join(",", Types.ToArray());
+            var _types = (Types.Count > 0)? @"""Types"": [""" + string.Join("\",\"", Types.ToArray()) + "\"]":"";

             return
 $@"
@@ -55,7 +55,7 @@
     ""Version"": ""{Version}"",
     ""VersionCompatibility"": ""{VersionCompatibility}"",
     ""Naming"": ""{Naming}"",
-    ""Types"": {_types}
+    {_types}
 }}";
         }
     }