Есть ли способ сравнить два.exes, чтобы увидеть, чем они отличаются?
Есть ли инструмент / процесс, с помощью которого я могу декомпилировать два.exes (один из которых работает на портативном устройстве, другой - нет), чтобы я мог понять, что отличается / в чем может быть проблема?
Конечно, увидеть, что у одного есть "00xA", а у другого - "00xB", мне не поможет. Я имею в виду способ увидеть код, который отличается или, что более вероятно, скомпилированный ресурс или различие в конфигурационном файле, или какой-то вариант сборки или так?
Я почти уверен, что проблема не имеет ничего общего с кодом как таковым (if / while / switch и т. Д.), А с настройкой проекта.
Я не могу сравнить рабочий источник, так как он не существует - у меня есть только.exe, из которого он пришел. Источник, который я имею в виду, является "разумным факсимильным сообщением", но не совсем таким же, по крайней мере, не в настройках и настройках проекта и т. Д.
ОБНОВИТЬ
Re: эта страница, я не знаком с некоторой терминологией; в частности, где говорится о "FLATRELEASEDIR" - WTH?
Будет ли это работать, чтобы проверить мой CE-bound* .exe на моем ПК:
Run depends.exe*
Open my CE-bound** .exe
Stare in wonder at the amazing plethora of errata and data
?
* Предположительно, не следует путать со "подгузниками для взрослых"
** "связаны", как в "это то, куда он направляется"
ОБНОВЛЕНИЕ 2
Вот что я вижу при запуске Dependency Walker в моем приложении:
... но обратите внимание на мою дилемму здесь.
ОБНОВЛЕНИЕ 3
Вот что я сделал, чтобы попытаться воспроизвести мою портативную среду на моем компьютере как можно лучше:
Я хотел просто скопировать весь сожженный папой объект (все представление портативного устройства из Windows Explorer), но он не позволил мне сделать это - он не копируемый, поэтому я скопировал только папку "Program Files" (которая содержит подпапку моего приложения и пару других папок, которые я не знаю, стандартные или нестандартные / свойственные нам).
Это с портативного устройства, где рассматриваемый.exe-файл работает правильно, поэтому очевидно (теоретически?) Не должно быть отсутствующих модулей - Dependency Walker должен запустить его и сказать, что все хорошо.
Однако это не так; Я получаю те же результаты, что и выше.
Примечание. Это верно даже после выбора "Параметры"> "Настроить порядок поиска модуля"... > "Каталог приложений"> "Переместить вверх" в "Зависимости".
Таким образом, поскольку даже.exe, который работает нормально, тестируется как "не готовый к CE-времени", как я могу использовать это для точного тестирования, если, если таковые имеются, необходимые файлы отсутствуют?
Нужно ли копировать поверх других папок или как?
ОБНОВЛЕНИЕ 4
Итак, (предположительно?) Отсутствующие модули:
API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
GPSVC.DLL
IESHIMS.DLL
Если это правда, то почему.exe работает на контроллере?
Примечание. Другие папки на контроллере:
Application Data => only contains "desktop.ini"
BTExplorer
My Documents => contains a "desktop.ini" and several SQLCE databases (*.SDF)
profiles => contains an empty "default" folder
Recycled => contains a single ".lnk" file
Temp => contains a handful of ".tmp" files
Windows => contains a slew of folders and files, including several .DLLs, but none of those listed above
В папке "Program Files" есть подпапка ".NET Compact Framework", но она пуста.
В папке \Windows\AppMgr есть несколько интересных файлов, таких как:
Microsoft .NET Compact Framework.DAT
Microsoft .NET Compact Framework.DLL
...several other DAT/DLL pairs, including:
Symbol Managed Class Libraries.DAT (no corresponding DLL)
...and even a pair:
SSCS HHS.[DAT,DLL]
- какая аббревиатура нашей компании (SSCS) и название проекта (HHS)
Что порождает это? Откуда они упоминаются??
Другая возможная часть головоломки состоит в том, что портативное устройство, на которомне работает.exe, не имеет папки \Windows\AppMgr и, следовательно, не имеет этих файлов.DAT/.DLL, перечисленных выше...
ОБНОВЛЕНИЕ 5
Еще одна странность:
Прочитав это: "Файлы, которые устанавливаются в GAC, находятся в каталоге \ Windows" в книге Энди Виггли и др. "Microsoft .NET Compact Framework", я попытался скопировать папку Windows с карманного устройства на место на моем ПК под папкой с именем "3910ProgramFilesFolderCopy", которая выглядит в проводнике следующим образом:
C:
3910ProgramFilesFolderCopy
Program Files
Windows <= tried to copy the "Windows" folder from the handeld on top of "3910ProgramFilesFolderCopy" so it would end up here
... но он копирует только несколько файлов до появления борборгмы (то есть электронных борборгм) и говорит мне: "система не может найти указанный файл"
Небеса до Мургратроида!?! Почему он находит некоторые, но не все? Глядя на папку Windows на контроллере в проводнике Windows, я вижу, что многие из ценных библиотек DLL выделены серым цветом:
Arggh, двойной арг и (&c)
2 ответа
Для ПК вы можете попробовать.NET Reflector.
http://www.red-gate.com/products/dotnet-development/reflector/
Вы можете попытаться использовать средство обхода зависимостей, чтобы понять, какие DLL/API им нужны, и проверить, поддерживаются ли они на вашем устройстве. http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2011/02/02/using-dependency-walker.aspx