Silverlight错误类型或命名空间名称';比赛超时(毫秒)';找不到

本文关键字:超时 毫秒 找不到 错误 命名空间 类型 Silverlight | 更新日期: 2023-09-27 18:22:44

在Windows 10更新1511之后,我尝试构建我现有的silverlight项目,并获得此错误

类型或命名空间名称"MatchTimeoutInMilliseconds"不能为已找到(是否缺少using指令或程序集引用?)用于Web项目生成的文件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之前,我没有出现此错误。我使用带有更新1的Visual studio 2015 pro有人知道怎么解决这个问题吗?

Silverlight错误类型或命名空间名称';比赛超时(毫秒)';找不到

好的,我找到了一个"坏"的解决方法。

在project.web代码的"Services/UserRegistrationService.cs"中,注释掉CreateUser、RegistrationData.UserName、Registration Data.Email.的"[RegularExpression(…)]"

据我所知,他们改变了生成代码的原因。如果您有生成代码的旧副本,您会发现此属性不存在。

你可以在这里查找正在进行的问题。https://connect.microsoft.com/VisualStudio/feedback/details/2031887/generated-code-for-silverlight-references-matchtimeoutinmilliseconds-which-does-not-exist

Open RIA Services今天发布了针对此问题的修复程序http://openriaservices.codeplex.com/workitem/84

前几天我遇到了同样的问题,我正在处理的项目仍在使用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;}

希望这能有所帮助!