Как воспользоваться C# библиотекой CSharpFormat.dll?

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Admiralisimys » 04.06.2009 (Чт) 9:08

Как-то путешествуя по каталогам системы наткнулся на %SystemRoot%\assembly\ CSharpFormat (полный адрес %SystemRoot%\assembly\GAC_MSIL\CSharpFormat\2.5.2537.38423__a2f6293b58d62c51\CSharpFormat.dll) в комментария свойства последнего обнаружил An extensible framework for generating color-coded HTML 4.01 from source code. Мне стало интересно - что и зачем. Погуглил выше на сайт. Автора Jean-Claude Manoli - CSharpFormat
Не имея опыта использования C# dll хотелось бы поинтересоваться как да что, может кто-то из участников конференции уже его использовал.
P.S.
Я бы по исходнику переписал бы, отказавшись от CSS и хранил бы инфу о цветах прямо в HTML, и оформив в виде бинарного EXE, но нахожу это крайне неправильным и не рациональным.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Nord777 » 04.06.2009 (Чт) 16:04

У себя в системе не обнаружил...
Можешь выложить её сюда для исследования?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Admiralisimys » 05.06.2009 (Пт) 8:38

Nord777 я почему-то полагал, что он устанавливается вместе со Студией. Теперь даже не знаю - откуда он взялся в моей системе?
По ссылке приведённой в первом посте можно найти архив с исходником (на С#) и откомпилированным вариантом, вот прямая ссылка http://www.manoli.net/csharpformat/CSharpFormat.zip
Зазеркалировал и к посту.
У вас нет доступа для просмотра вложений в этом сообщении.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Nord777 » 05.06.2009 (Пт) 9:35

Посмотрел.
Только не понял, в чём собственно проблема?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Admiralisimys » 09.06.2009 (Вт) 12:24

Nord777 - DLL Export Viewer не показал экспортируемых функций, впрочем это ведь NET, здесь наверное что-то другое нужно применять в этих целях.
Единственное что приходит в голову это воспользоваться исходным кодом и выдрать из него интересующие функции (хоть перевёл на VB.NET или оставив на C#), но этот не будет использование по прямому назначению - как подключаемую динамическую библиотеку, но избавит от зависимости от неё. Но это ведь неправильно.
А как бы ты её применил, например, если б писал оффлайновую утилиту как на сайте Manoli?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Nord777 » 09.06.2009 (Вт) 12:54

DLL Export Viewer не показал экспортируемых функций, впрочем это ведь NET, здесь наверное что-то другое нужно применять в этих целях.
Для этих целей существует Reflector.

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

но этот не будет использование по прямому назначению - как подключаемую динамическую библиотеку, но избавит от зависимости от неё. Но это ведь неправильно.
Слово "неправильно" здесь неуместно. Правильно - это так, как ТЕБЕ надо. Даже если ты будешь собирать новый проект, никто не запрещает тебе собрать Dll.

А как бы ты её применил, например, если б писал оффлайновую утилиту как на сайте Manoli?
Ну во-первых я бы переписал её на VB.Net(так как я на нем работаю). А во-вторых я бы это оформил в виде класс(а/ов) и вставил непосредственно в проект(в котором нужен данный функционал).
Но это я. А ты можешь делать как угодно, в зависимости от твоих твоих нужд и предпочтений.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Admiralisimys » 09.06.2009 (Вт) 14:06

Nord777 спасибо за скорый ответ!
Reflector это сила, при наличии исходников можно работать и без него. Разве что б посмотреть, как там в сборке организован MSIL.

Дело в том что многие программы используют Kernel32.dll, Gdi32.dll, User32.dll и т.д., никто ведь не дублирует их содержимое к себе к программу. По этому я посчитал неправильно и в этом случаи - копировать код который уже откомпилированный в виде динамической подключаемой библиотеки, которую бери и использую. Но мои текущие познания не позволяют этого сделать (нету опыта в .NET явно использовать написанные DLL). Так что я тоже пожалуй перепишу код на VB.NET с задуманным ранее - отказаться от css и хранить инфу о цветах прямо в html документе. А когда будет хватать знания - приведу вариант и с собственно использованием dll.

Спасибо за личный пример.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Nord777 » 09.06.2009 (Вт) 14:23

Дело в том что многие программы используют Kernel32.dll, Gdi32.dll, User32.dll и т.д., никто ведь не дублирует их содержимое к себе к программу.
Эти dll - часть операционной системы, и поэтому действительно будет глупо дублировать их содержимое. Но мы рассматриваем конкретный пример. И кода в нём - с гулькин хрен.
Также задумайся над тем, как часто ты будешь использовать данный функционал и сколько прог ты будешь писать с его использованием.
Если часто и много - да, это кандидат в dll. А в противном случае - нафиг ?
Лично мне не нравятся проги с кучей Dll, в каждой из которых функционала на 10 строк.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Как воспользоваться C# библиотекой CSharpFormat.dll?

Сообщение Admiralisimys » 25.08.2009 (Вт) 9:26

Отвечая на вопрос темы можно сказать, что до неприличия просто воспользоваться сторонней .NET библиотекой, не исключение и CSharpFormat.dll. Для этого в меню Project -> <Имя проекта> Properties... -> References -> Add -> Browse указать путь к CSharpFormat.dll (в случаи компиляции в консоли ключ /r: + путь к CSharpFormat.dll), а в коде указываем пространство имён Imports Manoli.Utils.CSharpFormat
Применение функционала
Dim VisualBasicFormat As New VisualBasicFormat
RichTextBox1.Text = VisualBasicFormat.FormatCode(RichTextBox1.Text)
Этот вопрос ясен.

А вот насчёт перевода кода на VB возникли некоторые сложности
SourceFormat.vb
Protected MustOverride Function MatchEval(ByVal match As Match) As String
'does the formatting job
Private Function FormatCode(ByVal source As String, ByVal lineNumbers As Boolean, ByVal alternate As Boolean, ByVal embedStyleSheet As Boolean, ByVal subCode As Boolean) As String

'...

'color the code
source = m_codeRegex.Replace(sb.ToString(), New MatchEvaluator(AddressOf Me.MatchEval))
Редактор предлагает добавить AddressOf перед Me.MatchEval
В C# варианте
SourceFormat.cs
Код: Выделить всё
      protected abstract string MatchEval(Match match);

      //does the formatting job
      private string FormatCode(string source, bool lineNumbers,
         bool alternate, bool embedStyleSheet, bool subCode)

//...

         //color the code
         source = codeRegex.Replace(sb.ToString(), new MatchEvaluator(this.MatchEval));

После добавление собирается, но не функционирует как в C# - текст по команде RichTextBox1.Text = VisualBasicFormat.FormatCode(RichTextBox1.Text) исчезает с RichTextBox1.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList