Совместимость OpenNETCF и Compact Framework 3.5

В настоящее время я переношу свое приложение Compact Framework 2.0 на новые машины с Windows Embedded 7 Compact, и мне пришлось перекомпилировать его для CF 3.5. Он компилируется, но совсем не запускается.

Я использую OpenNETCF версии 2.3, и прежде чем начать процесс отладки, я хотел бы подтвердить, что он действительно совместим с Compact Framework 3.5.

Спасибо.

EDITED, это компоненты, которые я использую.

  • с использованием OpenNETCF.IO;
  • с использованием OpenNETCF.Windows.Forms;
  • с использованием OpenNETCF.WindowsCE;
  • с использованием OpenNETCF.WindowsCE.Notification;
  • с использованием OpenNETCF.Threading

Задыхание происходит, когда я создаю объект, принадлежащий классу, реализующему IMessageFilter, см. Код ниже

  public class Program
        {
           public static FormFilter myFilter = new FormFilter();  //chocking happens here!

            public static void Main(string[] args)       
            {
              //main code here
            }


    public class FormFilter : IMessageFilter
    {
        private frmMain _frmOwner;

        //messages
        static int WM_LBUTTONDOWN = 0x0201;
        const int WM_CLOSE = 0x0010;
        const int WM_KEYDOWN = 0x100;

        //button related:
        private List<Button> buttonList;
        private List<TextBox> txtBoxList;

        public FormFilter()
        {
            buttonList = new List<Button>();
            txtBoxList = new List<TextBox>();
        }

        public bool PreFilterMessage(ref Microsoft.WindowsCE.Forms.Message m)
        { }

        //watch buttons etc functions go here
} //end of FormFilter class
} //end of Program

person sarsnake    schedule 23.08.2012    source источник
comment
С какими машинами Windows Embedded 7 Compact вы работаете? Сам еще не начал их видеть. Compact Framework 3.5 поддерживает новую ОС?   -  person tcarvin    schedule 24.08.2012


Ответы (2)


Да, SDF 2.3 совместим с Compact Framework 2.0 или 3.5. Не зная точно, какие части вы используете, я не могу больше помочь в том, что может быть причиной того, что приложение не запускается.

person ctacke    schedule 23.08.2012
comment
Спасибо, Крис. Обновил вопрос. Когда я нажимаю на приложение в Windows 7 Embedded Compact, я получаю сообщение ApplicationName: перестало работать. - person sarsnake; 23.08.2012
comment
Другими словами, P / Invoke, который вы делаете как часть OpenNETCF, должен работать на этой новой ОС? Я использую тонкие клиенты HP, и мне никогда не приходилось покупать специальные SDK, это стандартное устройство. - person sarsnake; 24.08.2012
comment
Я добился некоторого прогресса, Крис, и похоже, что SDK 2.3 здесь не работает. Я удалил все ссылки на него, закомментировал код и заставил приложение отображать приветственное сообщение. Я довольно часто использую Threading и Application2 и не уверен, какие будут альтернативы и как действовать в этом случае. - person sarsnake; 24.08.2012
comment
В частности, IMessageFilter заставляет его задыхаться. Есть мысли, что делать? - person sarsnake; 24.08.2012
comment
Единственное, что я могу сделать, - это отладить его и посмотреть, что происходит. Я использую SDF под 3.5 все время - совсем недавно, так что я точно знаю, что он работает. Я использую IMessageFilter, поэтому уверен, что он работает. Вопрос в том, почему это не удается. Возможно, это проблема с загрузкой типа? Отладчик - лучший способ узнать. - person ctacke; 24.08.2012
comment
При компиляции я получаю следующее предупреждение (возможно, это прольет свет) .C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets: предупреждение MSB3247: обнаружены конфликты между разными версиями одного и того же зависимого сборка. - person sarsnake; 24.08.2012
comment
Похоже, проблема заключается в том, что при вызове конструктора объекта принадлежит класс, реализующий IMessageFilter. Когда я комментирую: IMessageFilter, удушья не происходит. Конструктор не делает ничего специфичного для OpenNETCF - он просто создает 2 объекта типа List ‹string› ... так что это, должно быть, проблема с загрузкой. Есть идеи, почему? Требуются ли какие-то дополнительные dll? Какой у меня выбор сейчас? Отлаживать приложение с помощью исходного кода? Я не делал ничего другого, чем раньше ... - person sarsnake; 24.08.2012
comment
Я обновил код. К сожалению, я не использую отладчик VS2008 в приложениях для смарт-устройств, так как мне никогда не удавалось заставить эмулятор работать. Вся отладка производится непосредственно при развертывании на устройстве. - person sarsnake; 24.08.2012
comment
Вам не нужно отлаживать с помощью эмулятора, вы можете отлично выполнять отладку на физическом оборудовании (я очень редко использую эмулятор). Никаких дополнительных DLL, кроме CF 3.5, не требуется. Могу поспорить, что у вас где-то засасывается настольная DLL, но вам придется найти ее, очистив все папки bin и obj, очистив устройство и проверив каждую ссылку в решении. - person ctacke; 24.08.2012
comment
благодаря. Вы про десктопную dll куда засосали? В том же каталоге, что и мой application.exe? Нет, у него очень минимальное количество dll. Я уже проверил все ссылки и пересобирал решение для CF 3.5. И детали проблемы устройства, как обычно, дают очень загадочную ошибку. APPCRASH. Код исключения e0434f4d. Думаю, мне придется перехватить исключение, чтобы увидеть больше информации. - person sarsnake; 24.08.2012
comment
другим моим решением было бы создать новое приложение, использующее OpenNETCF IMessageFilter, и попробовать его запустить. У вас есть пример (zip-файл) приложения, которое проверено для работы с CF 3.5? Я должен задокументировать, что работает, а что нет, при выполнении этой миграции, и я полностью застрял, так как нигде нет сведений об ошибке, и, похоже, я мало что могу сделать на этом этапе. Еще раз спасибо. - person sarsnake; 24.08.2012
comment
Как вы думаете, может ли быть проблема с P / Invoke, если операционная система отличается от Windows CE? Я не могу объяснить это иначе. Это имя события APPCRASH, а имя модуля ошибки - KERNELBASE.dll. - person sarsnake; 24.08.2012
comment
Крис, пожалуйста, ответьте на этот вопрос, когда у вас появится возможность stackoverflow.com/questions/12186167/ - person sarsnake; 30.08.2012

Оказывается, я работаю под управлением Windows Embedded Standard, а не Windows CE, поэтому библиотеки DLL OpenNETCF на нем работать не будут.

См. Невозможно загрузить DLL 'coredll.dll': указанный модуль не найден для получения более подробного ответа от Криса.

person sarsnake    schedule 30.08.2012