Ошибка Silverlight Тип или имя пространства имен 'MatchTimeoutInMilliseconds' не найдено

После обновления Windows 10 1511 я попытаюсь создать существующий проект silverlight и получить эту ошибку

Тип или имя пространства имен 'MatchTimeoutInMilliseconds' не может быть (вы не указали директиву использования или ссылку на сборку?) для созданного веб-проекта файла ProjectName.Web.g.cs

[DataMember()]
        [Display(Name="UserNameLabel", Order=0, ResourceType=typeof(RegistrationDataResources))]
        [RegularExpression("^[a-zA-Z0-9_]*$", ErrorMessageResourceName="ValidationErrorInvalidUserName", ErrorMessageResourceType=typeof(ValidationErrorResources), MatchTimeoutInMilliseconds=-1)]
        [Required(ErrorMessageResourceName="ValidationErrorRequiredField", ErrorMessageResourceType=typeof(ValidationErrorResources))]
        [StringLength(255, ErrorMessageResourceName="ValidationErrorBadUserNameLength", ErrorMessageResourceType=typeof(ValidationErrorResources), MinimumLength=4)]
        public string UserName
        {
            get
            {
                return this._userName;
            }
            set
            {
                if ((this._userName != value))
                {
                    this.OnUserNameChanging(value);
                    this.RaiseDataMemberChanging("UserName");
                    this.ValidateProperty("UserName", value);
                    this._userName = value;
                    this.RaiseDataMemberChanged("UserName");
                    this.OnUserNameChanged();
                }
            }
        }

У меня нет этой ошибки, прежде чем устанавливать обновление 1511. Я использую Visual Studio 2015 pro с обновлением 1 кто-нибудь знает, как это исправить?

Ответ 1

Хорошо, я нашел обходной путь "BAD".

В "Services/UserRegistrationService.cs" в коде project.web закомментируйте "[RegularExpression (...)]" для CreateUser, RegistrationData.UserName, RegistrationData.Email.

Из того, что я могу сказать, они изменили причину генерации кода. Если у вас есть старые копии сгенерированного кода, вы обнаружите, что это свойство не существует.

вы можете посмотреть здесь для текущей проблемы. https://connect.microsoft.com/VisualStudio/feedback/details/2031887/generated-code-for-silverlight-references-matchtimeoutinmilliseconds-which-does-not-exist

Ответ 3

На днях я столкнулся с одной и той же проблемой, и проект, над которым я работаю, все еще использует System.ServiceModel.DomainServices и даже не перешел на Open RIA Services. Поэтому мне пришлось пойти с другим действительным, но немного более продолжительным подходом.

Что вам нужно сделать, это создать класс CustomValidation, который имеет статический метод проверки

public class CustomValidator
{
    public static ValidationResult IsNumberValid(int number, ValidationContext context)
    {
        ValidationResult result = ValidationResult.Success;

        if(number > 100) //Only an example
        {
            return new ValidationResult("Number is too large.", new string[]{"Number"});
        }
        return result;
    }
}

Теперь в вашем классе метаданных добавьте атрибут CustomValidation к вашей сущности или в этом случае в свойство с типом CustomValidator и именем метода IsNumberValid

[CustomValidation(typeof(CustomValidator), "IsNumberValid")]
public int NumberToValidate {get; set;}

Надеюсь, это поможет!

Ответ 4

В соответствии с post на сайте Microsoft это будет разрешено в .NET 4.6.2.