Запуск .bat из Visual Studio 2010
Или как навесить произвольное действие к контексту к любому элементу в обозревателе проектов.
Как уже было сказано в заголовке, данное действие мы будем проворачивать для .bat файлов, так как они широко используются в нашей повседневной деятельности и постоянно открывать проводник или FAR не очень удобно. Гораздо лучше сделать свое действие и до кучи повесить на него сочетание клавиш, для достижения полной нирваны.
Итак, дано: проект, в котором используются батники.
Требуется: запускать батники из контекстного меню в обозревателе проектов.
NuGet создание
В прошлый раз я рассказал как используется NuGet, в этот раз логично рассказать, как создать свой NuGet пакет и разместить его на общем хостинге или же на своем, в локальной директории, либо же в галерее.
Создание своего пакета NuGet
Для примера, и, на мой взгляд в большинстве случаев, вы будете создавать NuGet пакет без зависимостей от других пакетов. Т.е. нам нужен будет любой проект, для простоты пусть это будет простая библиотека с N-ным количеством методов.
Для того, чтобы можно было библиотеку или набор библиотек включить в итоговый NuGet пакет, необходимо добавить в проект файл с расширением “.nuspec”, где будут описаны все свойства и внутренние зависимости нашего пакета. Пока что в студии нет настроек для создание файлов требуемого расширения, так что можно создать любой текстовый файл, и сменить ему расширение.
В общем виде файл nuspec выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<package>
<metadata>
<id>WBR.ArgParser</id>
<version>1.0.0</version>
<title>Argument Parser library</title>
<authors>Violet Tape</authors>
<description>Easy to use library for parsing app arguments.</description>
<language>en-US</language>
<projectUrl>http://violet-tape.net</projectUrl>
<iconUrl>http://violet-tape.net/images/commandprompt.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
</metadata>
<files>
<file src="bin\Release\WBR.ArgParser.dll" target="lib" />
</files>
</package>
Можно сказать, что комментарии тут излишни. Единственное что стоит указать, какие тэги обязательны, а какие опциональные.
NuGet использование
Сегодня я хотел бы рассказать о использовании NuGet. Наверняка вы уже что-то слышали об этой системе управления внешними зависимостями. В последнее время система набирает обороты и все больше и больше разработчиков помещают свои системы в обертки для распространения с помощью NuGet.
Итак, NuGet – это менеджер для управления зависимостями от сторонних библиотек. С помощью этого инструмента можно устанавливать, обновлять и убирать зависимости для вашего проекта с большой легкостью. Применимо как для desktop программ, так и для web. В частности при разворачивании CMS Orchard, она половину сборок тащит при установке самостоятельно из библиотеки пакетов. Есть примеры использования NuGet для Silverlight.
Реплики с галерки
При изучении материалов по NuGet, основым плюсом выступает доступность общих библиотек для ваших проектов. Условные противники NuGet, или же принципиальная оппозиция спрашивает, зачем нужен NuGet для своих общих библиотек, если можно существует external для SVN и другие подобные штуки для систем контроля версий? Т.е. можно сослаться на стабильную ветку исходников.
Разработчики NuGet отвечают, что
- не надо контроллировать доступ к системе контроля версий,
- исходный код не показывается другим группам,
- не надо следить и переключаться на другие ревизии вручную (может вы захотели соскочить с ветки Release, на более ранюю, или вы ссылаетесь на ревизию в trunk)
Неплохие плюсы. Тем более что теперь ваша любимая библиотека не затеряется среди репозиториев и проектов.
Enum с человеческими именами
Проблема
Достаточно часто приходится использовать перечислимые типы (enum) для ограниченного набора значений. Они очень удобны для использования в коде, но возникают проблемы для вывода их на интерфейсную часть приложения. Не только в русском языке, но и в английском. Значения в перечислимом типе могут состоять логически из нескольких слов и неудобно их показывть в интерфейсе пользователя. Например:
public enum MyEnum {
None,
CompositeValue,
Single
}
Понятное дело, что показывать пользователю CompositeValue нехорошо. Гораздо лучше показать “Composite Value” (пробел появился). Или же перевести это на русский.
Настройка сжатия в IIS 7
Редкий случай у меня, я публикую не свою статью. Думаю, может открыть раздел "Гости" =) Потому что блог этот все равно мой личный пеар!
Вопрос перехода на новую платформу всегда не простой. Часто встречаются какие-то подводные камни, о которых по-началу даже не подразумеваешь. Помимо этого, есть еще несколько проблем. Например, когда платформа совсем новая - нормальных статей по настройке недостаточно, а какие-то вообще противоречат друг другу.
В этой статье я хочу описать процесс настройки сжатия в IIS7. Если вы уже настраивали сжатие в IIS 7 и не испытали никаких проблем - это здорово. У меня проблемы с пониманием что и как делать были.
Основная загвоздка в том, что разница между версией IIS 6 (с которой мы переезжали) и IIS 7 достаточно большая. Про новый IIS я больше всего узнал отсюда - learn.iis.net. В своей статье хочу подробно затронуть только одну тему - сжатие.
Скажу сразу - часть этой статьи взята из статей на MSDN, блогов и форумов. Ссылки на оригиналы я обязательно опубликую, чтобы авторы не обижались (хотя некоторые вряд ли понимают русский язык :))
Win7 Jump List — II
В прошлый раз мы остановились на том, что у нас есть программа, которая может «группировать» иконки из таскбара. Если вы ее запускали и разбирались, то заметили, что у программы есть один неприятный юзабилити недостаток. Когда вы задали программу для запуска по умолчанию – это никак не видно. Требуется полагаться на свою память и привычки. Так что будем исправлять данный недостаток.
Как вы наверно заметили в прошлый раз, на картинке у меня показываются мини-иконки дефолтных приложений, и таких приложений у меня несколько. Так что рассмотрим поподробнее как такого добиться и у вас.
Register file extension
Для одного из проектов понадобилось мне создать ассоциацию между файлами и программой. Не важно сейчас, это новое какое-нибудь расширение в духе .myextension или же вы хотите переопределить открывание .mp3 на свою программу. Понятное дело, что вы не хотите озадачивать пользователя запуском непонятно чего или там отрыть файло специфическим образом, или запускать reg файл. Все надо сделать программно, по желанию пользователя, или же предложить ему переназначить открывать файлы по умолчанию с помощью вашей программы.
Итак, цель – программно зарегистрировать любое расширение на вашу программу.
Visual Studio Multi-Project Templates
Идея
В одной из прошлых статей я рассказывал уже о том, как создавать шаблоны проектов. Там я рассказывал о нюансах создания шаблонов в VS2008 и VS2010, как настроить данные, файлы и все такое прочее. Это конечно хорошо, но всегда хочется большего.
Если студия может создавать сразу несколько проектов в для одного решения, то значит и мы должны по идее суметь такое же сделать. А уж применений я думаю у нас надется. Можно сразу сделать заготовки для домена, инфраструктуры, сервисов, интерфейса, все это сразу настроить на взаимосвязь и создавать одним щелчком мыши (ну или сколько там надо, чтобы создать один проект).
Итак, будем делать мульти-проектовое (проектное?) решение.
Season II
О да. это свершилось! Совсем скоро начнется поступление новых статей, я насобирал материал, морально созрел, подготовился и начал-таки писать снова статьи на софтблог. Все лето как-то было не до этого, то слишком жарко, то потом пожары и духота, когда не то что что-то новое исследовать и описывать, жить тяжело. Отпуск тоже не время для написания новых статей, особенно когда его не один проводишь. Вобщем накопился материал, погода снова располагает, есть время и возможности. Так что, думаю больших перерывов в ближайшем будущем быть не должно.
Постоянно писать какие-то большие и мощные статьи на регулярной основе тяжело, потому что нужно время на исследования, создание чего-то полезного с исследуемой технологией, оформление это в виде статьи, создание картинок. А кроме этого ведь еще есть куча друзей, девушка, работы - на все нужно время.
Но я буду стараться ))
Visual Studio. Заготовки проектов
В последнее время я не просто много, а очень много экспериментирую с кодом, подходами, написаниями каких-то тестовых сценариев и приложений. Результат, конечно, всегда разный, ну да не об этом сегодня пойдет речь. Постепенно начинаешь уставать от настройки стандартных проектов. Для проекта библиотек надо удалить класс, создаваемый там по умолчанию, потому что все равно его будет лень переименовывать. Мне приятно еще перенаправлять весь вывод компиляции в одну папку в корне всего проекта из всех библиотек, а не шариться по папкам ..\bin\Debug\ для каждого составляющего проекта, выгребать оттуда *.dll. Для проектов Test удаление ненужного барахла особенно актуально! Было бы неплохо еще сразу настроить атрибуты для сборки и информацию о ней (Assembly). Ко всему
Хочу, чтобы при создании чего-то нового, выбрал проект – и все у тебя настроено! И общая папка вывода, и нужные значения в AssemblyInfo прописаны, и лишнего ничего не валяется в проекте. Подумал я так и вспомнил, что есть у студии опция «Get online Templates», а раз есть онлайн, то должна быть и оффлайн – для моих собственных шаблонов. Сказано сделано!
В результате я очень доволен, что потратил час времени для настройки всех нужных мне проектов и теперь не отвлекаюсь в процессе, а только радуюсь, как все здорово вышло и что не надо тратить время на тупую работу.
О том, как это сделать в Visual Studio 2008, 2010 и пойдет речь дальше. Так же будет рассмотрено, как удалять, и импортировать готовые шаблоны проектов в студию.

