Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
На Build 2014 все сосредоточились, главным образом, на ключевых докладах и сессиях, которые можно посмотреть здесь https://channel9.msdn.com, здесь https://www.buildwindows.com/ и, наконец здесь https://channel9.msdn.com/events/build/2014, поэтому сегодня я собираюсь рассказать о приеме Стюарта Лика (Stuart Leeks), посвященном тому, как рационализировать показ презентаций в Visual Studio...
Сценарии в VisualStudio с помощью PowerShell – классно для демонстраций
Обзор
В этом сообщении я покажу как автоматизировать задачи при открытии решения в Visual Studio.
NuGetприводит PowerShell
В великой схеме вещей не встречалось настолько же великого с момента появления NuGet, и я едва могу вспомнить, как я обходился без него. Кроме обычных преимуществ, мне нравится консоль диспетчера пакетов. Да, я фанат клавиатуры (и назначил сочетания клавиш для нее), и могу легко добавлять пакеты, не отрывая рук от клавиатуры. Но консоль также дает мне PowerShell внутри VisualStudio!
Работая в консоли можно использовать стандартные командлеты и псевдонимы PowerShell. Наприме, dir или Get-ChildItem будут работать (и вы начнете с каталога решения, что очень удобно!). NuGet также добавляет и другие командлеты – Install-Package и Get-Project. Кроме этого, вы получаете дополнительный контекст, так переменная $dte дает доступ к верхнему уровню объекта DTE для API автоматизации Visual Studio. Поэтому введя $dte.Solution.FullName, вы получите полный путь к текущему решению.
Сценариипакета NuGet
...
Проблема?
Когда я готовлю демонстрации, то стараюсь быть разумно дисциплинированным и не забывать делать следующее:
- Создавать сценарии, возвращающие демонстрационный каталог в исходное состояние
- Писать заметки, включающие список файлов, открываемых в этой демонстрации, какие страницы на сайте открываются (я часто выступаю перед веб-разработчиками)
- Создавать копию демонстрационного решения в окончательной форме – это работает тогда, когда кажется, что ничто не идет правильно, и вы просто хотите пропустить все до конца и при этом что-то показать!
Некоторое время тому назад я выступал как содокладчик с моим коллегой, который внезапно закончил свою часть и надо было начинать мне. Это был небольшой вызов, так как некоторые демонстрации нужно было сконфигурировать после загрузки решения, чтобы сохранить порядок выступления. Как раз тогда не было времени сделать это, и я задумался, как решить такую проблему. Решение? NuGet и сценарий PowerShell!
Соединяем кусочки вместе
Решение оказалось совсем простым: создаем пакет NuGet с файлом Init.ps1, который запускается при загрузке решения, затем находим и выполняем известный сценарий в решении.
...
Дополнительные замечания
Я не собираюсь вдаваться в детали, так как думаю, что концепция понятна, если вы знаете что является движущими частями. Но есть пара других моментов, которые объяснены недостаточно.
Предотвращение исполнения _ startup . ps1...
Дополнительные команды
Я обнаружил, что есть несколько общих вещей, которые хотелось бы сделать в моем сценарии _startup.ps1, поэтому я добавил их в виде командлетов. Объектная модель DTE для Visual Studio очень мощная, но не слишком дружественная к пользователям
- Open-SolutionFile. Принимает имя открываемого файла. Обычно моя демонстрация определяет открываемые файлы в процессе инициализации, так что это удобно.
- Open-ProjectFile. Принимает имя проекта и имя файла и открывает файл внутри этого проекта. Это просто сохраняет шаг по добавлению каталога проекта в имя файла.
- Close-AllDocuments. Если я собираюсь открыть файлы, которые мне нужны и не хочу никаких других файлов, то сначала я вызываю этот командлет.
- Invoke-SolutionBuild. Собрать решение!
- Start-Solution. Собрать и запустить решение.
Командлеты Open-SolutionFile и Open-ProjectFile оба возвращают объект EnvDTE.Window, поэтому можно вызвать его методы, т.е. ... [Щелкните здесь, чтобы увидеть все сценарии, советы и код]
Comments
- Anonymous
May 28, 2014
Vote for a new version of the VB6 programming language visualstudio.uservoice.com/.../3440221-bring-back-classic-visual-basic-an-improved-versi