Среда выполнения Common Language обнаружила недопустимую программу при использовании const string в качестве необязательного параметра

#c#

#c#

Вопрос:

Я получаю System.InvalidProgramException: Common Language Runtime detected an invalid program сборку, в которой определен метод расширения, как показано ниже.

 public static class Extensions
{
    public const string DATE_TIME_FORMAT = "MMMM dd, yyyy HH:mm:ss";

    public static string ToStorageString(this DateTime value, string format = DATE_TIME_FORMAT)
    {
        return value.ToString(format ?? DATE_TIME_FORMAT);
    }
}
  

Но если я изменю метод расширения, чтобы вместо этого использовать строковый литерал, исключение не произойдет, пример ниже.

 public static class Extensions
{
    public static readonly string DATE_TIME_FORMAT = "MMMM dd, yyyy HH:mm:ss";

    public static string ToStorageString(this DateTime value, string format = "MMMM dd, yyyy HH:mm:ss")
    {
        return value.ToString(format ?? DATE_TIME_FORMAT);
    }
}
  

Я компилирую сборку для .net 4.6.2

Я не уверен, почему исключение возникает с первым кодом, кто-нибудь может объяснить?

Комментарии:

1. Работает на моем поле. Можете ли вы предоставить нам какие-либо подробности о вашей среде? Вы используете VS? Какая версия? Обновления? и т.д.?

2. @MattJohnson создан с использованием обновления 3 VS2015. Отлично работает в режиме отладки. Пробовал приложение в Windows 8.1, Windows 10 и Windows 7, та же ошибка.