Возможно отобразить фактический исходный код из кодовой области на странице aspx (для страниц с примерами кода) - PullRequest
3 голосов
/ 03 марта 2009

Я работаю над созданием страницы aspx для отображения примеров использования кода библиотеки.

В общем, я хотел бы, например, иметь: Описание Исходный код кнопка Выход (в сетке данных)

Вместо того, чтобы копировать и вставлять код из-за кнопки на страницу aspx для отображения, я подумал, что было бы неплохо иметь возможность прочитать реальный исходный код во время выполнения и отобразить его. Кроме того, что это будет гладко, это будет иметь дополнительное преимущество, заключающееся в обеспечении актуальности отображаемого исходного кода, в то время как копирование и вставка могут устареть, если кто-то внесет изменение и забудет обновить страницу aspx новым кодом.

Я могу придумать 2 возможных способа сделать это: 1) (kludgy) - Развертывание кода за файлами, который затем можно прочитать во время выполнения, а правильный код функции можно проанализировать и отобразить. 2) (Предпочтительный) Во время выполнения декомпилируйте DLL (как это делает отражатель) и отобразите код.

Так что я знаю, как сделать # 1, но понятия не имею о # 2 (если это вообще возможно).

Ответы [ 3 ]

5 голосов
/ 03 марта 2009

Декомпиляция кода во время выполнения не даст вам того же кода, что вы написали. В этот момент это становится скорее интерпретацией.

Третий вариант - заставить ваше приложение работать с вашим репозиторием кода для извлечения определенного файла. Затем вы должны отобразить содержимое этого файла в браузере. Это похоже на вариант 1, но вы не будете развертывать файлы .cs непосредственно на сервере.

3 голосов
/ 03 марта 2009

Чтение настоящих исходных файлов - вот путь, IMO - если вы действительно, действительно уверены, что не против того, чтобы все могли видеть исходный код вашего сервера. Если вы используете что-то вроде Reflector, вы потеряете все комментарии, возможно, локальные переменные, а такие вещи, как блоки итераторов, станут особенно странными.

У меня есть средство форматирования кода (фактически, как элемент управления), которое я использую на веб-сайте C # in Depth . Это относительно примитивно, но вы можете, если хотите. (Вы можете использовать его через страницу на самом сайте , если хотите попробовать.)

0 голосов
/ 03 марта 2009

Если вы хотите сохранить комментарии и исходные имена переменных, рефлексия не сработает. Разбор кода, вероятно, будет самым простым способом сделать это. Также может быть опция извлечения данных из файлов PDB.

...