Я разрабатываю приложение .NET CF 3.5 на WinCE6, которое построит exe некоторые DLL. Я определил примерный класс, как это в проекте библиотеки классов:System.MissingMethodException
using System.ComponentModel;
using System;
namespace Utils
{
public static class Test
{
public static void runTest()
{
Exception e = new Win32Exception(0, "CreateToolhelp32Snapshot error.");
}
}
}
Из моего основного исполняемого проекта я буду называть метод runTest()
. Все хорошо во время компиляции. Но во время выполнения следующего исключение при попытке вызова runTest()
:
System.MissingMethodException
{"The version of the assembly System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089 cannot be loaded by this version of the Microsoft .NET Compact Framework."}
Запустив в отладке и установив точку останова в runTest()
я могу видеть, что метод не является ни вошло ... Кроме того, если я ставлю некоторые дополнительные простой код перед созданием исключения, метод никогда не вводится и генерируется исключение.
Однако если взять класс Test и поместить его непосредственно в главном проекте (так, что он будет построен внутри ехе) все работает отлично ...
Кто-нибудь есть какие-либо идеи о том, что происходит?
Просто догадаться, но я вижу версию 2.0 в сообщении, возможно, на вашем устройстве установлена версия .NET CF версии 2.0 вместо v 3.5? –
, если я запустил cgacutil.exe на устройстве, он показывает установленную компактную структуру 3.5 – salvolds
@Valter: но вы правы, это проблема с версией: protejct библиотеки классов 3.5 ссылался на System assembly 2.0, в то время как exe ссылался на правильную сборку системы 3.5. Просто заменил ссылку, и все работает отлично – salvolds