2017-10-25 37 views
0

私はユーザーコントロール(別々のアセンブリで定義されている)を含むWindowsフォームを持っています。フォームとユーザーコントロールの両方がBindingList <>の拡張メソッドを呼び出します。拡張メソッドは、3番目のアセンブリで定義されています。すべてコンパイル&はうまく動作します。VS 2017デザイナー:メソッドが見つかりません

To prevent possible data loss before loading the designer, the following errors must be resolved:

Method not found: 'System.ComponentModel.BindingList 1 KamaTrenda.Utilities.Lists.ListUtilities.AddReset(System.ComponentModel.BindingList 1, System.Collections.Generic.IEnumerable`1)'.

コールスタック:

at System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value) at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkPropertyDescriptor.SetValue(Object component, Object value) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)

本のセッターの内容をコメントアウト私は、Visual Studio 2017デザイナでフォームを開くしようとした場合

しかし、私はエラーを取得しますプロパティは、デザイナーでフォームを開くことができます:

public IList<IPosition> PositionsToDisplay 
{ 
    get { return myPositionsToDisplay.Select(x => x.Position).ToList(); } 
    set { myPositionsToDisplay.AddReset(value.Select(x => new PositionAdapter(x))); } 
} 

myPositionsToDisplay:

private readonly BindingList<PositionAdapter> myPositionsToDisplay = new SortableBindingList<PositionAdapter>(); 

そしてAddReset:

public static class ListUtilities 
{ 
     public static BindingList<T> AddReset<T>(this BindingList<T> list, IEnumerable<T> toAdd) 
     { 
      list.RaiseListChangedEvents = false; 
      foreach (T item in toAdd) 
       list.Add(item); 
      list.RaiseListChangedEvents = true; 
      list.ResetBindings(); 
      return list; // for chaining 
     } 
} 

私はPositionsToDisplayの定義に

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

を追加しようとしている、それは何の違いが行われていません。

私は閉じ、VS 2017で開いているすべてのドキュメントを閉じて、手動ですべての3つのプロジェクトだけでなく、のAppData \ローカル\マイクロソフト\ VisualStudioを\ 15.0_6d397e1a \ ProjectAssembliesの内容のためのOBJ &ビンディレクトリの内容を削除、再構築しようとしましたVisual Studioを再起動しても差はありませんでした。

フォームまたはコントロールのいずれもない.resxファイルは、このプロパティを参照しています。 (それが再生成されないように、おそらくDesignerSerializationVisibility.Hiddenを追加した後)

this.control.PositionsToDisplay = ((System.Collections.Generic.IList<IPosition>)(resources.GetObject("control.PositionsToDisplay"))); 

は、これを削除するように見えた:

答えて

0

Designer.csはフォームの問題を引き起こしているように見えたいくつかのコードを持っていました問題を解決する。

関連する問題