Вот проблема, которая утомляет мой разум какое-то время. Я искал широту интернета безрезультатно и, наконец, пришел, чтобы спросить 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); }
}
}
}
ошибка сборки:
Как вы можете видеть на скриншоте:
мое предположение, что VS проходит по крайней мере, две итерации компиляции во время сборки, один, где местный код компилируется, а другой где генерируется код прокси RIA и скомпилированы.
Мой вопрос: как я могу гарантировать, что сборка не сломается с этими частичными классами прокси?
Частичные классы прокси не являются проблемой. Это потому, что один из базовых классов не генерируется. Автоматическое создание прокси-сервера Silverlight - это хорошая идея, но она шероховата и замедляет сборку каждый раз, когда вы касаетесь кода сервера, даже если она не связана. –
@ChuiTey благодарит за комментарий. Любые рекомендации по разрешению или обходным решениям? –
Один из подходов - взять сгенерированный код '.g.cs' и проверить его на источник, а затем отключить службу RIA. –