2010-06-12 3 views
0

У меня есть C# источник, который я хочу, чтобы скомпилировать с помощью CodeDom в моем приложении (плагин)Использование методов Linq вызывает недостающие ссылки на DependencyObject в WindowsBase

Все работает отлично, за исключением того, если я использую функцию расширения Linq на некоторые из моих коллекций

var dict = new Dictionary<KeyType, ValueType>(); 
.... 
dict.Any(KV=>KV.Key == "Some Key"); 

Когда я пытаюсь скомпилировать источник, который имеет этот код, он CodeDom жалуется, что я пропускаю ссылку на DependencyObject в WindowsBase.

Я не понимаю, почему это происходит. Ни класс Dictionary, ни какой-либо метод расширения не ссылаются на этот класс, который, по-видимому, является частью Windows.Forms

Я бы обычно просто игнорировал причуду, чтобы CodeDom добавлял ссылку и двигался дальше, но, по-видимому, WindowsBase является специальным и не всегда распространяется, и я не хочу вызывать проблемы для пользователей, которые могут неправильно установить его.

+1

Что такое 'KeyType' здесь? Если вы можете опубликовать короткую, но полную программу, демонстрирующую проблему, это поможет. –

ответ

1

Я решил немедленную проблему, добавив ссылку на WindowsBase в своем приложении и установив ее, чтобы она всегда копировалась. Затем я смог правильно добавить ссылку в codeDom.

Я все еще смущен, почему нужна DLL, но я работал вокруг нее.