Версия.NET Runtime, используемая сборкой Windows CE, обязательно соответствует версии CF?

Подумав, есть ли инструмент, который бы сообщал мне, какая версия компактной платформы использовалась для создания exe-реликвии, оставленной нашим покойным / убранным бывшим сотрудником, я нашел это

Я загрузил ILSpy в соответствии с рекомендациями tsandhol, но не вижу записи TargetFramework. Вот что он там содержит (некоторые строки скрыты для защиты якобы невинных):

// C:\HoldingTank\PlatLoca.exe
// HHS, Version=1.4.0.15, Culture=neutral, PublicKeyToken=null

// Entry point: PlatypusLocator.MainApplication.Main
// Architecture: AnyCPU (64-bit preferred)
// Runtime: .NET 1.1

using System;
using System.Reflection;
[assembly: AssemblyVersion("1.4.0.15")]
[assembly: AssemblyCompany("Platypi-R-Us Computerized Systems, Inc.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCopyright("Copyright 2006-2014 Platyi-R-Us Computerized Systems, Inc. All wrongs reserved.")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyDescription("Platypus Finding Software")]
[assembly: AssemblyInformationalVersion("6.4.0")]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
[assembly: AssemblyProduct("Platypus-Locating Data Processing")]
[assembly: AssemblyTitle("PlatLoca")]
[assembly: AssemblyTrademark("")]

Так есть ли здесь соответствующая информация "Runtime: .NET 1.1"?

Должен ли я сделать вывод, что TargetFramework был CF версии 1.0.*?

ОБНОВИТЬ

Я получаю TargetFramework для приложения, созданного для самых последних и лучших приложений (не для приложений CF/CE):

[assembly: TargetFramework(".NETFramework,Version=v4.5.1", FrameworkDisplayName = ".NET Framework 4.5.1")]

ОБНОВЛЕНИЕ 2

Пробуя другое предложение (Corflags), он дал мне это:

... но это просто привело меня сюда, и поиск "CF 1.0.3316.00", казалось, запутал это.

ОБНОВЛЕНИЕ 3

Как ни странно, dotPeek утверждает, что.Net Framework для этого приложения v4.5...?!?

ОБНОВЛЕНИЕ 4

Я получаю три разные истории: какие библиотеки использует.exe.

Единственные ссылки, которые показывает dotPeek:

mscorlib (all of these are version 1.0.50000.0)
System
System.Data
System.Data.SqlServerCe
System.Drawing
System.Windows.Forms
System.Xml

Ссылки, показанные ILSpy:

coredll.dll
CoreDll.DLL
CoreDll.dll
HUtilCE
mscorlib
OpenNETCF
OpenNETCF.Windows.Forms
Symbol
Symbol.Barcode
Symbol.StandardForms
System
System.Data
System.Data.Common
System.Data.SqlServerCe
System.Drawing
System.Windows.Forms
System.Windows.Forms.DataGrid
System.Xml

Библиотеки DLL, которые находятся на устройстве, в \Program Files\HHS:

HUtilCE
OpenNETCF
OpenNETCF.Drawing
OpenNETCF.Windows.Forms
Symbol
Symbol.Barcode
Symbol.BarcodeForms
Symbol.Printing
Symbol.StandardForms
System.Data.SqlClient
System.Data.SqlServerCe

Единственный из всех трех списков - System.Data.SqlServerCe.

В противном случае общие черты:

Both in ILSpy and on the device: HUtilCE, OpenNETCF, OpenNETCF.Windows.Forms, Symbol, Symbol.Barcode
Both in dotPeek and ILSpy: System, System.Data, System.Drawing, System.Windows.Forms, and System.Xml

ОБНОВЛЕНИЕ 5

Используя предложение ctacke для использования.NET Reflector, я вижу для.exe вопрос:

// Assembly Reference mscorlib

Version: 1.0.5000.0 
Name: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes 

Итак, у меня есть устройство с CF 1.0.3316.00, на котором работает этот.exe (потому что он нацелен на версию 1, я думаю, хотя номера версий не совпадают точно) и другое устройство с обеими версиями CF 2 и 3.5, но на котором не работает ни этот.exe, ни тот, который основан на том же коде, который предназначен для версии 2.

ОБНОВЛЕНИЕ 6

При использовании.NET Reflector для экспорта некоторых разобранных исходных кодов. Он сталкивается с несколькими ситуациями, когда он не может автоматически разрешить ссылочную сборку:

В первые пару случаев я смог найти файлы и добавить их. Для "system.windows.forms.datagrid", однако, нет, они не в моей системе.

Так что я должен "Пропустить" в этом случае или это помешает мне создать сборку дизассемблированного источника (я предполагаю, что "system.windows.form.datagrid" необходим, иначе он был бы "разыменован" из проект)?

Я продолжил пропуск, потому что у меня не было доступа к этим двум файлам:

system.windows.forms.datagrid
system.data.common

Пропустив эти файлы, я открыл созданный исходный рефлектор. Проект очищен отлично; когда я пытался собрать, он предоставлял мне диалог для сохранения файла sln (Reflector только генерировал файл csproj).

Сбой сборки с 35 ошибками, такими как: "Неожиданный символ $" здесь:

if (((obj2 = this.fieldList[col - 1]) != null) && ((obj2 = <PrivateImplementationDetails>.$$method0x60002ec-1[obj2]) != null))

Я считаю, что это из-за этих пропущенных / пропущенных DLL.

System.Data.Common == version 1.0.5000.0
System.Windows.Forms.DataGrid is also version 1.0.5000.0

Эти два отсутствующих файла не существуют и на 3090! Как получается, что они необходимы для сборки / разборки, но даже не существуют на устройстве, на котором работает.exe?

1 ответ

Решение

Используйте.NET Reflector и посмотрите в разделе "Ссылки", какую версию mscorlib использует сборка.

В этой сборке используется 2.0 CF (я могу сказать, что это CF, а не десктоп или моно по токену открытого ключа):

И сборка такая же сборка против 3.5:

Другие вопросы по тегам