Структура компилятора плагина? - PullRequest
1 голос
/ 24 сентября 2010

Я создаю модульную программу, и она поддерживает динамическую компиляцию исходных файлов в каталоге плагинов.

Чтобы ускорить загрузку, я хотел бы сохранить скомпилированные сборки в отдельной папке.Когда моя программа загружается и сталкивается с исходным файлом для компиляции, я хотел бы, чтобы она проверила, существует ли уже скомпилированная сборка, и используйте ее ЕСЛИ исходный файл с тех пор не изменился .Если исходный файл был изменен, перекомпилируйте и переопределите сохраненную сборку.

Мой вопрос к вам: какой эффективный способ отследить, какой исходный файл принадлежит какой сборке, и эффективный способ?отслеживать, был ли исходный файл изменен с момента последней загрузки или нет.

Ответы [ 4 ]

3 голосов
/ 24 сентября 2010

Отслеживание изменений: сохраните MD5 / CRC-хэши исходных файлов в записи и дате последнего изменения, сопоставьте их, чтобы определить, изменились ли файлы.

Что касается источника-> сборки, я предлагаю соглашение по конфигурации .

1 голос
/ 24 сентября 2010

Почему вы хотите сделать это именно так? Любой, кто собирается использовать C # для написания плагина для вас, узнает, как использовать Visual Studio и создать DLL. Вам было бы гораздо лучше определить интерфейс DLL для использования плагинами. Тогда вам не придется беспокоиться о времени загрузки любого типа.

Если «плагин» должен быть изменен внутри самой программы, вам, вероятно, следует просто скомпилировать, когда плагин изменяется в вашей программе, а не пытаться увидеть, когда что-то меняется.

0 голосов
/ 24 сентября 2010

Мой вопрос к вам: каков будет эффективный способ отследить, какой исходный файл принадлежит какой сборке, и эффективный способ отследить, изменился ли исходный файл с момента последней загрузки или нет

Одним из способов может быть:

  1. Используйте FileSystemWatcher для отслеживания изменений файла
  2. Сохранение списка (или таблицы) для поддержки исходных сборок связей файлов.
0 голосов
/ 24 сентября 2010

Единственный способ (который я могу придумать), чтобы гарантировать эти 100%, - сохранить копию исходного исходного файла вместе с скомпилированной версией. Затем вы можете сделать сравнение файлов между оригиналом и новым, чтобы увидеть, изменились ли они, и если это так, выполнить сборку.

...