Ошибка 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
Ответ 2
В настоящее время Open RIA Services выпустили исправление для этого http://openriaservices.codeplex.com/workitem/84
Ответ 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.