C # / Compact Framework 2.0 / Ошибка запроса списка - PullRequest
0 голосов
/ 04 февраля 2011

ОК, поэтому у меня есть:

var filteredItems = lstAllItems.Where(item => item.Parent.ID == parentId);

TreeNode childNode;
    foreach (var i in filteredItems.ToList())
    {
        if (parentNode == null)
            childNode = tvwPickList.Nodes.Add(i.Text);
        else
            childNode = parentNode.Nodes.Add(i.Text);

        RefreshPickList(i.ID, childNode);
    }

Это вызывает у меня некоторые ошибки:

Предупреждение 1 Ссылка на тип 'System.Runtime.Serialization.SerializationInfo' утверждает, что она определена в'c: \ Program Files (x86) \ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE \ mscorlib.dll', но его не удалось найти c: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework\ v3.5 \ System.Data.DataSetExtensions.dll IMSCF

Ошибка 2 Тип «System.Data.DataTable» определен в сборке, на которую нет ссылок.Необходимо добавить ссылку на сборку «System.Data, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089».C: \ Data \ C # \ IMSCF \ IMSCF \ frmPickList.cs 52 13 IMSCF

Ошибка 3 Тип 'System.Data.DataRow' определен в сборке, на которую нет ссылок.Необходимо добавить ссылку на сборку «System.Data, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089».C: \ Data \ C # \ IMSCF \ IMSCF \ frmPickList.cs 52 13 IMSCF

Ключевые слова 'var' подсвечиваются двумя последними ошибками.

Я довольно новичок в C # и.NET CF, поэтому я не знаю, что я делаю здесь неправильно;код адаптирован из чего-то, что я нашел где-то на сайте C #.

Забавно, эти ссылки существуют в моем проекте ... все правильные операторы использования есть и т.д. ...

Есть ли здесь что-то, что не поддерживает .NET CF (это становится постоянной темой в этом проекте: P)

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

Вы используете функции .net cf 3.5.Ваш заголовок говорит, что вы используете .net cf 2.0.Это вызывает ваши проблемы.

Более конкретно:

  1. Where метод является частью LINQ.LINQ был представлен с .net cf 3.5.
  2. В выражениях Lamba требуется .net cf 3.5
  3. Кроме того, ключевое слово var не является частью .net 2.0.

Итак: либо используйте .net cf 3.5 (рекомендуется), либо используйте только то, что 2.0 может обработать.

(Возможно, есть технически лучший способ выразить это, но он сводится к 2.0 против 3.5)

РЕДАКТИРОВАТЬ: Как обновить до 3.5:
В Visual Studio 2008 выберите Проект из меню, нажмите Обновить проект и нажмите Да .Так и должно быть.

1 голос
/ 04 февраля 2011

Может быть, у вас есть библиотека классов и приложение для Windows Mobile?

Если это так, проверили ли вы, что ваша библиотека классов создана с правильным шаблоном Visual Studio?

Вам потребуется создать такую ​​библиотеку классов с помощью шаблонов, установленных с помощью Mobile Visual Studio, потому что, похоже, вы сделали это с обычной библиотекой классов C #, которая добавляет пространства имен, которых нет в CF.

Еще одна вещь, которую вы можете проверить, может быть, ваш проект форм Windows Mobile - CF 3.5, а ваша библиотека классов - 2.0. Перейдите к обоим свойствам проекта и убедитесь, что целевая структура равна (вы будете использовать CF 3.5 !!).

...