Можно отобразить фактический исходный код из кодовой области на странице aspx (для страниц с примерами кода)

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

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

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

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

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

3 ответа

Решение

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

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

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

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

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

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