Why does VS 2015 allow attributes separated by spaces while VS 2017 does not? : <p>Take the following simple code. The <code>DoMyCode</code> method has two attributes applied to it, with a space between the entries.</p>

<pre><code>using System;

namespace AttributeSpaceTesting
{
    class Program
    {
        static void Main(string[] args) { }

        [Horse Cow]
        static void DoMyCode() { }
    }

    [AttributeUsage(AttributeTargets.Method)]
    class HorseAttribute : Attribute { }

    [AttributeUsage(AttributeTargets.Method)]
    class CowAttribute : Attribute { }
}
</code></pre>

<p>This was made in VS 2015 targeting .Net 4.6.</p>

<p>If you run this code in Visual Studio 2015 (update 3) it will compile and run with no errors or warnings.</p>

<p>However, running the exact same code in Visual Studio 2017 will produce the following exception:</p>

<pre>
Syntax error, ',' expected
</pre>

<p>I understand <em>why</em> this error happens. I expect that you would need commas between attribute items. In section 17.2 of the C# 5 specifications:</p>

<blockquote>
  <p>An attribute section consists of a pair of square brackets, which surround a comma-separated list of one or more attributes.</p>
</blockquote>

<p>So why is this syntax legal in VS 2015?</p>

<hr>

<p>For full context, I am experimenting with using VS 2017 on my team's unit test projects. I've noticed lines like this:</p>

<pre><code>[Description(@"The Test Description")]
[TestCategory("Regression"), TestCategory("Module"), TestCategory("ModuleRegression") TestMethod]
public void TC_12345_VerifyTheThingWorks()
</code></pre>

<p>which cause syntax errors when compiled in the new Visual Studio system.</p>
