部分代码未使用来自 RIA 服务的(重新)生成的代码进行编译

Partial code not compiling with (re)generated code from RIA service

这是一个困扰我一段时间的问题。网上找了好久都没用,终于来求助了。

我在 VS2015 中有一个完整的 .NET 堆栈程序集项目,我在其中实现了 RIA 域服务。 RIA 服务通过 WCF (HTTP) 公开给 Silverlight 5.0 客户端项目,它在其中被引用为服务引用。这会在构建时触发 Silverlight 项目中 RIA 代理 classes 的自动代码生成。此 Silverlight 项目是我引用此 WCF RIA 服务的唯一位置。 Silverlight 项目本身被两个单独的 Silverlight 应用程序引用。

此 Silverlight 项目还包含扩展 RIA 代理 classes 的部分 classes。在构建 Silverlight 解决方案之一时,它经常(但不总是)为扩展 RIA 代理 classes 的部分 classes 抛出错误。生成的带有代理 classes 的代码文件已经消失(我假设是因为 VS 在重新创建它之前将其删除),并且部分 class 中的引用已损坏。

例如,这是一个 RIA 生成的代理 class(只显示 ExaminationResult 属性,否则会变得太长):

    public sealed partial class VCtp_DetailedResults : Entity
    {
        // ... more properties here

        /// <summary>
        /// Gets or sets the 'ExaminationResult' value.
        /// </summary>
        [DataMember()]
        [Editable(false, AllowInitialValue=true)]
        [Key()]
        [Required()]
        [RoundtripOriginal()]
        [StringLength(11)]
        public string ExaminationResult
        {
            get
            {
                return this._examinationResult;
            }
            set
            {
                if ((this._examinationResult != value))
                {
                    this.OnExaminationResultChanging(value);
                    this.ValidateProperty("ExaminationResult", value);
                    this._examinationResult = value;
                    this.RaisePropertyChanged("ExaminationResult");
                    this.OnExaminationResultChanged();
                }
            }
        }
    }

这是部分扩展:

namespace Apss.Data.Reports.Models
{
    public partial class VCtp_DetailedResults : IRow, IRowCtp, IRowCustomer
    {
        public bool IsVisible { get; set; }
        public bool IsSelected { get; set; }

        public string ExaminationResultLocalized
        {
            get { return LocalisationHelper.GetString(ExaminationResult); }
        }
    }
}

构建错误为:

如您在此屏幕截图中所见:

我的假设是 VS 在构建期间至少经历两次编译迭代,一次是编译本地代码,另一次是生成和编译 RIA 代理代码。

My question: how do I ensure that the build does not break with these partial proxy classes?

一种方法是获取生成的代码 .g.cs 并将其签入源代码,然后关闭 RIA 服务。

您可以在服务更改时启用 RIA 服务,就像服务更改时重新生成代理一样。