2016-06-22 11 views
0

Вот проблема, которая утомляет мой разум какое-то время. Я искал широту интернета безрезультатно и, наконец, пришел, чтобы спросить SO о помощи.Частичный код, не скомпилированный с (повторно) сгенерированным кодом из службы RIA

У меня есть полный проект сборки стека .NET в VS2015, в котором я реализовал службы домена RIA. Служба RIA подвергается проекту клиента Silverlight 5.0 через WCF (HTTP), на который ссылается ссылка на службу. Это запускает автоматическое создание кода для прокси-классов RIA в проекте Silverlight, который происходит во время сборки. Этот проект 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); } 
     } 
    } 
} 

ошибка сборки:

enter image description here

Как вы можете видеть на скриншоте: enter image description here

мое предположение, что VS проходит по крайней мере, две итерации компиляции во время сборки, один, где местный код компилируется, а другой где генерируется код прокси RIA и скомпилированы.

Мой вопрос: как я могу гарантировать, что сборка не сломается с этими частичными классами прокси?

+0

Частичные классы прокси не являются проблемой. Это потому, что один из базовых классов не генерируется. Автоматическое создание прокси-сервера Silverlight - это хорошая идея, но она шероховата и замедляет сборку каждый раз, когда вы касаетесь кода сервера, даже если она не связана. –

+0

@ChuiTey благодарит за комментарий. Любые рекомендации по разрешению или обходным решениям? –

+0

Один из подходов - взять сгенерированный код '.g.cs' и проверить его на источник, а затем отключить службу RIA. –

ответ

1

Один из подходов - взять сгенерированный код .g.cs и проверить его на источник, а затем отключить службу RIA.

Вы можете включить службу RIA, когда ваши службы меняются, так же, как можно было бы восстановить прокси-серверы, если бы службы изменились.