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

Posted

技术标签:

【中文标题】部分代码未使用来自 RIA 服务的(重新)生成的代码进行编译【英文标题】:Partial code not compiling with (re)generated code from RIA service 【发布时间】:2016-10-24 15:45:13 【问题描述】:

这是一个困扰我一段时间的问题。我在网上搜索了很多东西都没有结果,最后来寻求帮助。

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

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

例如,这是一个 RIA 生成的代理类(仅显示 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 代理代码。

我的问题:我如何确保构建不会因这些而中断 部分代理类?

【问题讨论】:

部分代理类不是问题。这是因为没有生成基类之一。 Silverlight 的自动代理生成是一个好主意,但它很不稳定,并且每次您接触服务器代码时都会减慢构建速度,即使它不相关也是如此。 @ChuiTey 感谢您的评论。有关解决方案或解决方法的任何建议? 一种方法是获取生成的代码.g.cs并将其签入源代码,然后关闭RIA服务。 这是一个可行的解决方法。谢谢! @ChuiTey 成功了。 :) 你想把它作为答案归档吗?否则我会写一个。 【参考方案1】:

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

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

【讨论】:

以上是关于部分代码未使用来自 RIA 服务的(重新)生成的代码进行编译的主要内容,如果未能解决你的问题,请参考以下文章

Ria 服务与 WCF 数据服务

.NET RIA 服务/WCF 服务

Ria Services:使用两个数据模型

根据某些标准生成部分随机布尔值数组[关闭]

WCF 服务、WCF RIA 服务和 WCF 数据服务之间的区别

java 来自http://ria10.hatenablog.com/entry/20121222/1356153903