Как добраться, программный список всех загруженных блоков (сослался) в.NET на Компактную Платформу

Если все файлы, которые вы должны конвертировать, являются .php, вы можете использовать следующее, которое по умолчанию является рекурсивным:

for a in $(find . -name "*.php"); do iconv -f iso-8859-1 -t utf-8 <"$a" >new/"$a" ; done

Я полагаю, что ваши ошибки были связаны с тем, что ls -R также производит вывод, который не может быть распознан iconv как правильное имя файла, что-то вроде ./my/dir/structure:

5
задан Community 23 May 2017 в 10:33
поделиться

2 ответа

На основании , этого может показаться, что управляемые библиотеки DLL на самом деле не «загружены» в том смысле, в котором они находятся в традиционной структуре. Вместо этого IL отображается в память, и JIT просто захватывает то, что ему нужно, по мере продвижения (экономия необходимости поддерживать загрузку памяти для кода, который был выполнен, но больше не используется)

. Это объясняет, почему CF не предоставляет возможности для перебора загруженных dll. Относительно того, почему он не позволяет перебирать DLL, на которые есть ссылки , которые являются полностью выполненной временной конструкцией ...

В качестве возможного решения:
Используйте GetExecutingAssembly , чтобы получить активный код. Убедитесь, что это происходит в вашем исполняемом файле, чтобы он получил корневую сборку.

Напишите код, способный анализировать dll для манифеста, указывающего, на какие сборки ссылаются (это не должен быть управляемый код - неуправляемый API интроспекции, предоставляемый Microsoft, может даже сделать это для вас и спецификация формата dll является общедоступной и вряд ли радикально изменится в ближайшем будущем). Я предлагаю загружать библиотеки DLL в черный список из GAC (хотя в этом может быть нет необходимости).

5
ответ дан 14 December 2019 в 19:23
поделиться

Думаю, если для этого нет API, вы можете попробовать это ...

Помните, это не лучший способ сделать это ...

  1. Ищите PInvoke вызывает в Windows CE и вызывает их, чтобы выяснить, какие библиотеки DLL загружены процессом.

  2. Затем выполните итерацию по DLL, чтобы проверить, есть ли у них заголовок CLI. Или вы можете просто попробовать загрузить dll как сборку, если она загружается, значит, это сборка .NET, загруженная приложением.

Я знаю, что это неправильный способ сделать это, но это может сработать.

0
ответ дан 14 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: