Pull to refresh

Программа из одного exe

Reading time 4 min
Views 42K
.NET *
Как правило, при написании .NET программ используются не только классы из .NET BCL, но и сторонние библиотеки. Во время выполнения программы все используемые библиотеки должны быть найдены. Для этого зависимые dll кладут в одну папку с exe файлом.

Однако существуют программы, использующие сторонние библиотеки, но при этом состоящие из одного единственного файла. Все утилиты от SysInternals, а также любимый мной LINQPad представляют из себя один файл в котором содержится все, что требуется для работы. Пользоваться такими утилитами одно удовольствие — они сразу готовы к использованию, их удобно передавать и хранить.

В статье рассказывается, как создавать такие автономные программы из одного файла. Разобран пример как со сжатием зашить библиотеку AutoMapper в программу и как ее потом достать и использовать.

Программа из одного EXE
Total votes 90: ↑75 and ↓15 +60
Comments 75

Как тестировать код финализатора (c#)

Reading time 3 min
Views 12K
IT systems testing *.NET *C# *
Одной из не очевидных задач, является тестирование кода, реализованного в финализаторе дотнетовского класса.
Данная заметка рассматривает один из способов решения этой задачи.

Читать дальше →
Total votes 28: ↑21 and ↓7 +14
Comments 65

Runtime-генерирование .Net-кода для тех, кому некогда

Reading time 8 min
Views 34K
Programming *.NET *C# *
Sandbox
Инфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.

Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Вот что получилось в результате
Total votes 58: ↑51 and ↓7 +44
Comments 29

Как тестировать код финализатора (c#). Послесловие: тест все-таки упал

Reading time 2 min
Views 10K
IT systems testing *.NET *C# *
Уже довольно давно я опубликовал пост «Как тестировать код финализатора (c#)», в котором делился опытом тестирования кода, реализованного в финализаторе. Не прошло и года, как тест все-таки упал. Подробности под катом.
Читать дальше →
Total votes 18: ↑14 and ↓4 +10
Comments 61

Особенности Microsoft.Win32.SystemEvents в приложении с несколькими AppDomain

Reading time 2 min
Views 4.8K
.NET *C# *
Жило-было консольное приложение, которое создавало appdomain и запускало в нём сервис на основе Topshelf. Но однажды в нём появился баг – после нажатия Ctrl-C оно не завершало свою работу, а сообщало о получении команды на выключение и зависало в таком состоянии. Краткий анализ показал, что зависало оно на выгрузке домена, но, что странно, не выкидывало исключение CannotUnloadAppDomainException.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 0

Писать плагины с AppDomain — весело

Reading time 12 min
Views 20K
Open source *.NET *C# *
Как часто вы писали плагины для своих приложений?

В статье я хочу рассказать как можно написать плагины используя AppDomain, и кросс доменные операции. Плагины будем писать для уже существующего моего приложения TCPChat.

Кто хочет повелосипедить — вперед под кат.
Читать дальше →
Total votes 22: ↑15 and ↓7 +8
Comments 5