У меня действительно странная проблема при создании проекта в VS2008.Сделав некоторые совершенно не связанные изменения, я начал получать ошибку сборки.Обычно компилятор выбирает неверный метод расширения.
Assembly1: References Assembly4.
[DebuggerHidden]
public static List<T> ToList<T>(this IEnumerable<T> source)
{}
[System.Runtime.InteropServices.ComVisible(false), CLSCompliant(false)]
public static List<T> ToList<T>(this IConcreteCollection collection)
{}
Assembly3: Только References Assembly1,Обратите внимание, что CustomClass не реализует IConcreteCollection.
List<CustomClass> list = new CustomClass[].ToList();
Assembly4: Определена IConcreteCollection.
Сообщение об ошибке:
Тип 'Assembly4.Namespace.IConcreteCollection' определен в сборке, на которую нет ссылок.Вы должны добавить ссылку на сборку «Assembly4.Namespace, Version = ...».
Как видите, Assembly3 неправильно попыталась использовать неправильное расширение в Assembly1, несмотря на то, чтоДело в том, что типы не совпадают.
VS2008 GoTo-определение, однако, работает правильно и указывает на правильный метод в Assembly1.
Кто-нибудь еще сталкивался с этим или знает, в чем может быть проблема?