Silverlight错误找不到类型或命名空间名称“MatchTimeoutInMilliseconds”

时间:2015-11-20 07:55:10

标签: c# .net silverlight

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

  

类型或命名空间名称'MatchTimeoutInMilliseconds'不能   找到了(你是否错过了使用指令或程序集引用?)   用于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之前,我没有此错误。 我使用Visual Studio 2015 pro和更新1 有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

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

在project.web代码的“Services / UserRegistrationService.cs”中,注释掉CreateUser的“[RegularExpression(...)]”,RegistrationData.UserName,RegistrationData.Email。

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

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

答案 1 :(得分:2)

Open RIA Services今天针对此http://openriaservices.codeplex.com/workitem/84

发布了修复程序

答案 2 :(得分:0)

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

希望这有帮助!