Il seguente snippet compila:
using System;
class Foo
{
[Obsolete("", true)]
static void Main()
{
Console.WriteLine("Hello Obsolete World!");
Console.Read();
}
}
Ciò vuol dire che l'entrypoint Main non può mai essere Obsolete. Questo sicuramente ha senso, però mi aspettavo di vedere un warning oppure una nota a riguardo nelle specifiche.