Создание базовой системы проекта, часть 1
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В Visual Studio проекты — это контейнеры, используемые разработчиками для упорядочивания файлов исходного кода и других ресурсов. Проекты отображаются как дочерние элементы решений в Обозреватель решений. Проекты позволяют упорядочивать, создавать, отлаживать и развертывать исходный код и создавать ссылки на веб-службы, базы данных и другие ресурсы.
Проекты определяются в файлах проекта, например CSPROJ-файл для проекта Visual C#. Вы можете создать собственный тип проекта с собственным расширением имени файла проекта. Дополнительные сведения о типах проектов см. в разделе «Типы проектов».
Если вам нужно расширить Visual Studio с пользовательским типом проекта, настоятельно рекомендуется использовать систему проектов Visual Studio (VSPS), которая имеет ряд преимуществ при создании системы проектов с нуля:
- Проще подключиться. Даже для базовой системы проектов требуется десятки тысяч строк кода. Использование VSPS сокращает затраты на подключение до нескольких щелчков, прежде чем вы будете готовы настроить его в соответствии с вашими потребностями.
- Упрощенное обслуживание. Используя VSPS, необходимо поддерживать только собственные сценарии. Мы обрабатываем обновление всей инфраструктуры системы проекта. Если вам нужно использовать версии Visual Studio старше Visual Studio 2013, вы не сможете использовать VSPS в расширении Visual Studio. Если это так, это пошаговое руководство является хорошим местом для начала работы.
В этом пошаговом руководстве показано, как создать тип проекта с расширением имени файла проекта .myproj. Это пошаговое руководство по заимствованию из существующей системы проектов Visual C#.
Дополнительные примеры проектов расширений см . в примерах VSSDK.
В этом пошаговом руководстве показано, как выполнить следующие задачи:
- Создайте базовый тип проекта.
- Создайте базовый шаблон проекта.
- Зарегистрируйте шаблон проекта в Visual Studio.
- Создайте экземпляр проекта, открыв диалоговое окно «Новый проект» , а затем с помощью шаблона.
- Создайте фабрику проектов для системы проекта.
- Создайте узел проекта для системы проекта.
- Добавьте настраиваемые значки для системы проекта.
- Реализуйте базовую подстановку параметров шаблона.
Необходимые компоненты
Скачайте исходный код для управляемой платформы пакетов для проектов. Извлеките файл в расположение, доступное для создаваемого решения.
Создание базового типа проекта
Создайте проект VSIX C# с именем SimpleProject. (Файл>нового>проекта и visual C#>Extensibility>VSIX Project). Добавьте шаблон элемента проекта пакета Visual Studio (в Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите пункт «Добавить>новый элемент«, а затем перейдите к пакету Visual Studio расширяемости>). Присвойте файлу SimpleProjectPackage.
Создание базового шаблона проекта
Теперь вы можете изменить этот базовый VSPackage, чтобы реализовать новый тип проекта myproj . Чтобы создать проект, основанный на типе проекта myproj , Visual Studio должен знать, какие файлы, ресурсы и ссылки необходимо добавить в новый проект. Чтобы предоставить эти сведения, поместите файлы проекта в папку шаблона проекта. Когда пользователь использует проект myproj для создания проекта, файлы копируются в новый проект.
Создание базового шаблона проекта
![]()
- Добавьте три папки в проект, один из них: Templates\Projects\SimpleProject. (в Обозреватель решений щелкните правой кнопкой мыши узел проекта SimpleProject, наведите указатель на «Добавить» и нажмите кнопку «Создать папку«. Назовите шаблоны папок . В папке «Шаблоны» добавьте папку с именем Projects. В папке «Проекты» добавьте папку с именем SimpleProject.)
- В папке Templates\Projects\SimpleProject добавьте файл изображения растрового изображения для использования в качестве значка с именем SimpleProject.ico. При нажатии кнопки «Добавить» откроется редактор значков.
- Сделайте значок отличительным. Этот значок появится в диалоговом окне «Новый проект » далее в пошаговом руководстве.
- Сохраните значок и закройте редактор значков.
- В папке Templates\Projects\SimpleProject добавьте элемент класса с именем Program.cs.
- Замените существующий код следующими строками.
using System; using System.Collections.Generic; using System.Text; namespace $nameSpace$ < public class $className$ < static void Main(string[] args) < Console.WriteLine("Hello VSX. "); Console.ReadKey(); >> >
Важно! Это не окончательная форма кода Program.cs . Параметры замены будут рассмотрены на следующем шаге. Возможно, вы увидите ошибки компиляции, но если файл BuildAction — Content, вы сможете создать и запустить проект как обычно.
Примечание. Расширение имени файла для всех проектов этого типа — myproj. Если вы хотите изменить его, его необходимо изменить везде, где оно упоминание в пошаговом руководстве.
Debug 2.0 Exe MyRootNamespace MyAssemblyName false true bin\Debug\ false bin\Release\ Code Code
Templates Projects SimpleProject AssemblyInfo.cs Program.cs SimpleProject.ico SimpleProject.myproj
Создание базовой фабрики проектов
Необходимо указать Visual Studio расположение папки шаблона проекта. Для этого добавьте атрибут в класс VSPackage, реализующий фабрику проектов, чтобы расположение шаблона записывается в системный реестр при построении VSPackage. Начните с создания базовой фабрики проектов, определяемой GUID фабрики проектов. ProvideProjectFactoryAttribute Используйте атрибут для подключения фабрики проектов к классу SimpleProjectPackage .
Создание базовой фабрики проектов
- Создайте идентификаторы GUID для фабрики проектов (в меню «Сервис » щелкните «Создать GUID«) или используйте его в следующем примере. Добавьте идентификаторы SimpleProjectPackage GUID в класс рядом с разделом с уже определенным PackageGuidString . Идентификаторы GUID должны находиться как в форме GUID, так и в строковой форме. Полученный код должен выглядеть следующим образом.
public sealed class SimpleProjectPackage : Package
using System.Runtime.InteropServices; using Microsoft.VisualStudio.Shell;
[Guid(SimpleProjectPackage.SimpleProjectFactoryString)] class SimpleProjectFactory
Регистрация шаблона проекта
- В SimpleProjectPackage.cs добавьте ProvideProjectFactoryAttribute атрибут в SimpleProjectPackage класс, как показано ниже.
[ProvideProjectFactory( typeof(SimpleProjectFactory), "Simple Project", "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj", @"Templates\Projects\SimpleProject", LanguageVsTemplate = "SimpleProject")] [Guid(SimpleProjectPackage.PackageGuidString)] public sealed class SimpleProjectPackage : Package
Проверка регистрации шаблона
Регистрация шаблона сообщает Visual Studio расположение папки шаблона проекта, чтобы Visual Studio отображала имя шаблона и значок в диалоговом окне «Новый проект «.
Проверка регистрации шаблона
- Нажмите клавишу F5 , чтобы начать отладку экспериментального экземпляра Visual Studio.
- В экспериментальном экземпляре создайте новый проект нового типа проекта. В диалоговом окне «Новый проект» вы увидите SimpleProject в разделе «Установленные шаблоны«. Теперь у вас есть фабрика проектов, зарегистрированная. Однако он еще не может создать проект. Пакет проекта и фабрика проектов работают вместе для создания и инициализации проекта.
Добавление кода управляемой платформы пакетов
Реализуйте подключение между пакетом проекта и фабрикой проектов.
- Импортируйте файлы исходного кода для управляемой платформы пакетов.
- Выгрузите проект SimpleProject (в Обозреватель решений выберите узел проекта и в контекстном меню щелкните «Выгрузить проект«.) и откройте файл проекта в редакторе XML.
- Добавьте следующие блоки в файл проекта (чуть выше блоков импорта<>). Задайте ProjectBasePath расположение файла ProjectBase.files в коде управляемой платформы пакетов, который вы только что скачали. Возможно, потребуется добавить обратную косую черту в имя пути. Если это не так, проект может не найти исходный код Управляемой платформы пакетов.
your path here\ true
Важно! Не забывайте обратную косую черту в конце пути.
- Microsoft.VisualStudio.Designer.Interfaces (в \VisualStudioIntegration\Common\Assemblies\v2.0)
- WindowsBase
- Microsoft.Build.Tasks.v4.0
Инициализация фабрики проектов
- В файле SimpleProjectPackage.cs добавьте следующую using директиву.
using Microsoft.VisualStudio.Project;
public sealed class SimpleProjectPackage : ProjectPackage
base.Initialize(); this.RegisterProjectFactory(new SimpleProjectFactory(this));
public override string ProductUserContext < get < return ""; >>
using Microsoft.VisualStudio.Project;
class SimpleProjectFactory : ProjectFactory
protected override ProjectNode CreateProject()
private SimpleProjectPackage package; public SimpleProjectFactory(SimpleProjectPackage package) : base(package)
Тестирование реализации фабрики проектов
Проверьте, вызывается ли конструктор для реализации фабрики проектов.
Тестирование реализации фабрики проектов
- В файле SimpleProjectFactory.cs задайте точку останова в следующей строке конструктора SimpleProjectFactory .
this.package = package;
Расширение класса ProjectNode
Теперь можно реализовать класс, производный SimpleProjectNode от ProjectNode класса. Базовый ProjectNode класс обрабатывает следующие задачи создания проекта:
- Копирует файл шаблона проекта SimpleProject.myproj в новую папку проекта. Копия переименовывается в соответствии с именем, введенным в диалоговом окне «Новый проект «. ProjectGuid Значение свойства заменяется новым ИДЕНТИФИКАТОРом GUID.
- Проходит по элементам MSBuild файла шаблона проекта SimpleProject.myprojj и ищет Compile элементы. Для каждого Compile целевого файла копирует файл в новую папку проекта. Производный SimpleProjectNode класс обрабатывает следующие задачи:
- Позволяет создавать или выбирать значки для узлов проекта и файлов в Обозреватель решений.
- Позволяет указывать дополнительные подстановки параметров шаблона проекта.
Расширение класса ProjectNode
- Добавьте класс с именем SimpleProjectNode.cs .
- Замените существующий код следующим кодом:
using System; using System.Collections.Generic; using Microsoft.VisualStudio.Project; namespace SimpleProject < public class SimpleProjectNode : ProjectNode < private SimpleProjectPackage package; public SimpleProjectNode(SimpleProjectPackage package) < this.package = package; >public override Guid ProjectGuid < get < return SimpleProjectPackage.guidSimpleProjectFactory; >> public override string ProjectType < get < return "SimpleProjectType"; >> public override void AddFileFromTemplate( string source, string target) < this.FileTemplateProcessor.UntokenFile(source, target); this.FileTemplateProcessor.Reset(); >> >
- ProjectGuid , который возвращает GUID фабрики проектов.
- ProjectType — возвращает локализованное имя типа проекта.
- AddFileFromTemplate , который копирует выбранные файлы из папки шаблона в целевой проект. Этот метод будет реализован далее в следующем разделе. Конструктор SimpleProjectNode , например SimpleProjectFactory конструктор, кэширует ссылку SimpleProjectPackage в частном поле для последующего использования. Чтобы подключить SimpleProjectFactory класс к SimpleProjectNode классу, необходимо создать экземпляр нового SimpleProjectNode метода SimpleProjectFactory.CreateProject и кэшировать его в частном поле для последующего использования.
Подключение класса фабрики проекта и класса узла
- В файле SimpleProjectFactory.cs добавьте следующую using директиву:
using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
protected override ProjectNode CreateProject()
Тестирование класса ProjectNode
Проверьте фабрику проектов, чтобы узнать, создает ли она иерархию проектов.
Тестирование класса ProjectNode
- Нажмите клавишу F5, чтобы запустить отладку. В экспериментальном экземпляре создайте новый SimpleProject.
- Visual Studio должен вызвать фабрику проектов для создания проекта.
- Закройте экспериментальный экземпляр Visual Studio.
Добавление значка пользовательского узла проекта
Значок узла проекта в предыдущем разделе — это значок по умолчанию. Его можно изменить на пользовательский значок.
Добавление значка пользовательского узла проекта

- В папке Resources добавьте файл растрового изображения с именем SimpleProjectNode.bmp.
- В окнах свойств уменьшите растровое изображение до 16 на 16 пикселей. Сделайте растровое изображение отличительным.
- В окне «Свойства» измените действие сборки растрового изображения на внедренный ресурс.
- В SimpleProjectNode.cs добавьте следующие using директивы:
using System.Drawing; using System.Windows.Forms;
private static ImageList imageList; static SimpleProjectNode()
internal static int imageIndex; public override int ImageIndex < get < return imageIndex; >>
public SimpleProjectNode(SimpleProjectPackage package) < this.package = package; imageIndex = this.ImageHandler.ImageList.Images.Count; foreach (Image img in imageList.Images) < this.ImageHandler.AddImage(img); >>
- SimpleProject.Resources.resources
- VisualStudio.Project.resources
- SimpleProject.VSPackage.resources
- Resources.imagelis.bmp
- Microsoft.VisualStudio.Project.DontShowAgainDialog.resources
- Microsoft.VisualStudio.Project.SecurityWarningDialog.resources
- SimpleProject.Resources.SimpleProjectNode.bmp Во время построения экземпляра базовый класс загружает Resources.imagelis.bmp, в котором обычно используются 16 х 16 растровых изображений из Resources\imagelis.bmp. ProjectNode Этот список растровых карт доступен как SimpleProjectNode ImageHandler.ImageList . SimpleProjectNode добавляет растровое изображение узла проекта в список. Смещение растрового изображения узла проекта в списке изображений кэшируется для последующего использования в качестве значения общедоступного ImageIndex свойства. Visual Studio использует это свойство для определения растрового изображения, отображаемого в виде значка узла проекта.
Проверка значка пользовательского узла проекта
Проверьте фабрику проектов, чтобы узнать, создает ли она иерархию проектов с значком пользовательского узла проекта.
Проверка значка пользовательского узла проекта

- Начните отладку и в экспериментальном экземпляре создайте новый SimpleProject.
- В созданном проекте обратите внимание, что SimpleProjectNode.bmp используется в качестве значка узла проекта.
- Откройте файл Program.cs в редакторе кода. Вы увидите исходный код, похожий на следующий код.
using System; using System.Collections.Generic; using System.Text; namespace $nameSpace$ < public class $className$ < static void Main(string[] args) < Console.WriteLine("Hello VSX. "); Console.ReadKey(); >> >
Замена параметров шаблона
В предыдущем разделе вы зарегистрировали шаблон проекта в Visual Studio с помощью атрибута ProvideProjectFactory . Регистрация пути к папке шаблона таким образом позволяет включить базовую подстановку параметров шаблона, переопределив и расширив ProjectNode.AddFileFromTemplate класс. Дополнительные сведения см. в статье «Новое поколение проектов: под капотом» часть 2.
Теперь добавьте код замены в AddFileFromTemplate класс.
Замена параметров шаблона
- В файле SimpleProjectNode.cs добавьте следующую using директиву.
using System.IO;
public override void AddFileFromTemplate( string source, string target)
Проверка подстановки параметров шаблона
Теперь можно проверить подстановку параметров шаблона.
Проверка подстановки параметров шаблона
- Начните отладку и в экспериментальном экземпляре создайте новый SimpleProject.
- Выполнение останавливается в точке останова в методе AddFileFromTemplate .
- Проверьте значения для nameSpace параметров и className параметров.
- nameSpace получает значение в файле шаблона проекта \Templates\Projects\SimpleProject\SimpleProject.myproject.myproj . В этом случае используется значение MyRootNamespace .
- className присваивается значение имени исходного файла класса без расширения имени файла. В этом случае первый файл, копируемый в целевую папку, — AssemblyInfo.cs, поэтому значение className равно AssemblyInfo .
- Удалите точку останова и нажмите клавишу F5 , чтобы продолжить выполнение. Visual Studio должен завершить создание проекта.
- Откройте файл Program.cs в редакторе кода. Вы увидите исходный код, похожий на следующий код.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyRootNamespace < public class Program < static void Main(string[] args) < Console.WriteLine("Hello VSX. "); Console.ReadKey(); >> >

Обратите внимание, что пространство имен теперь и MyRootNamespace имя класса теперь Program .
Разработка ASP.NET 5 веб-приложений с Visual Studio Code

![]()
30.10.2015
![]()
2366
Рейтинг: 5 . Проголосовало: 1
Вы проголосовали:
Для голосования нужно авторизироваться

Введение
10 лет назад трудно было вообразить, что разработка ASP.NET веб-приложений вне интегрированной среды разработки Visual Studio .NET буде возможна. Но в прошлом году произошли изменения. В апреле 2014 года на конференции разработчиков (Build) Microsoft анонсировал запуск нового легкого кросс-платформенного кодового редактора для разработки современных веб-приложений под именем Visual Studio Code.
Visual Studio Code
Visual Studio Code свободна для скачивания с официального сайта. Работаете ли Вы на Linux, Mac или Windows – не имеет значения. Вы можете скачать и запустить VS код на своей платформе.
Установка Visual Studio Code довольно проста, но если Вы застрянете, то всегда можете просмотреть документацию по установке.
Visual Studio Code является просто редактором кода на файловой основе и не имеет всех преимуществ полной интегрированной среды разработки Visual Studio .NET. Он легче по дизайну. Тем не менее, у редактора есть множество особенностей, которые поддерживают такие технологии, как IntelliSense для дополнения кода, Peek Definition для быстрого взгляда на функциональный код без навигации, реорганизацию кода и прочие. Visual Studio Code также поддерживает множество языков, например CoffeeScript, F#, Go, Jade, Java, Handlebars, Powershell и Python, для примера. Вы можете проверить языковую поддержку здесь.

Также Visual Studio Code способен поддерживать такие среды выполнения, как ASP.NET 5 и Node.JS. Если Вы их используете для веб-разработки с Microsoft Stack, можете быть уверенны, что ASP.NET 5 (новая версия ASP.NET) сейчас поддерживает кросс-платформенную разработку. Это значит, что можно разрабатывать ASP.NET-приложение в среде Linux, Mac или Windows так же, как и запускать его в любой из них. И Вам даже не нужно иметь интегрированную среду разработки Visual Studio .NET, чтобы сделать это.
Visual Studio Code – это все, что вам нужно, чтобы начать работать с ASP.NET 5, и это здорово!
Установка ASP.NET 5 & DNX (среды выполнения .NET):
ASP . NET 5 был построен с нуля, чтобы убедиться, что он придерживается современной парадигмы веб-приложений, и что приложения, разработанные с его помощью являются «облачными». Ключевыми аспектами ASP . Net 5 явля ются гибкость и модульность – он предлагает минимальные накладные расходы и позволяет нам выбирать только то, что мы хотим в рамках нашего веб-приложения.
Тема связана со специальностями:
DNX расшифровывается как Dot Net eXecution Environment.
Что такое Yeoman?
Если Вы работали в интегрированной среде разработки Visual Studio .NET, Вам будет интересно: «Есть ли здесь File > New > ASP.NET шаблон проекта?» Visual Studio Code является редактором кода на файловой базе, так что Вы можете просто открыть файл и начать редактирование. Кроме того, нужны поддерживающие средства, чтобы работать с исполняемым шаблоном ASP.NET.
Yeoman является популярным консольным инструментом для автоматического построения структуры проекта, а также обеспечивает базовым ASP.NET шаблоном для старта. Yeoman может быть установлен с помощью NPM, но для начала надо установить Node . JS .
Если у Вас нет Node в системе, можете установить его. Кроме Yeoman , Вам также нужны другие поддерживающие средства, такие как генератор ASP . NET , исполнитель задач Grunt и Bower . Вы можете выполнить это за одну команду. В командной строке набрать следующую команду и нажать enter:
npm install –g yo grunt-cli generator-aspnet bower
Теперь Вы можете строить веб-приложения.
Создание веб-приложения
Разберем пошагово, как построить структуру проекта нового ASP.NET 5 веб-приложения.
1. Откройте командную строку и перейдите в папку, где Вы хотите создать свое новое веб-приложение.
2. Введите в командную строку следующую команду:
3. Yeoman отобразит варианты приложений для генератора aspnet. Возможные варианты:
- консольное приложение
- веб-приложение
- основное веб-приложение (без членов/аутентификации)
- веб-приложение API
- Nancy ASP.NET приложение
- библиотека классов
- тестовый проект Unit
Выберите сейчас основное приложение. Используйте клавиши со стрелками для выбора опции и нажмите enter.

4. Дальше нам нужно назвать веб-приложение. Используем HelloWorld как имя нашего образца ASP . NET 5 веб-приложения. Введите имя и нажмите enter. Yeoman построит структуру проекта.
5. Каталог, в котором будет создано наше веб-приложение будет иметь то же имя, что мы дали только что Yeoman . В данном случае — “ HelloWolrd ”.
6. Через командную строку откройте Visual Studio Code
7. Visual Studio Code запустит проект HelloWorld. Файлы в проекте будут отображаться в окне Проводника.

8. В редакторе Visual Studio Code выберите View > Command Palette option
и в командной палитре введите следующую команду:
dnx: dnu restore — (HelloWorld)
Выше написанная команда restore устанавливает нужные NuGet пакеты, необходимые для запуска веб-приложения. Она запустит командную строку, куда будут загружаться все пакеты. После выполнения будет получено сообщение, что загрузка завершена.
Видео курсы по схожей тематике:

ASP.NET WEB API 2

Выполнение домашнего задания по курсу C# Стартовый

C# Углубленный. Ускоренный курс
Запуск веб-приложения
Теперь, когда мы успешно создали веб-приложение, пришло время запустить его и посмотреть на результат.
1. В Visual Studio Code откройте Command Palette, выбрав View > Command Palette. Введите следующую команду для запуска приложения:
dnx: kestrel -(HelloWorld,Microsoft.AspNet.Hosting—server Kestrel–config hosting.ini
Примечание: Когда Вы начинаете набирать команду, командная палитра подскажет Вам полную команду в списке. Вы можете выбрать команду из списка и команда будет выполнена.

2. Откройте браузер и перейдите по ссылке http://localhost5000

Мы только что создали ASP.NET веб-приложение вне интегрированной среды разработки Visual Studio. Фактически, в настоящее время ASP.NET больше не только в Windows. Мы переходим на кросс-платформу – как с точки зрения разработки, так и размещения.
Интеграция Telerik UI для набора ASP.NET MVC
Teleric предлагает пользовательский интерфейс, известный как UI для ASP.NET MVC. Он произошел от Kendo UI и предусматривает HTML-помощников, которых называют “Kendo UI wrappers.” Они упрощают работу с элементами управления Kendo UI и ускорят вашу разработку.
Представим пошагово добавление пользовательского интерфейса для ASP.NET MVC в наш проект:
1. Откройте файл project.json и в узле (“dependencies”) добавьте Kendo (в настоящее время доступна бинарная версия Kendo Mvc – 2015.2.805).
2. Дальше откройте Startup.cs и найдите метод “ConfigureServices”. Добавьте следующий фрагмент в метод.
//Register UI for ASP.NET MVC Helpers
3. Затем откройте ~/Views/_ViewImports.cshtml и импортируйте пространство имен Kendo.Mvc.UI .
@using Kendo . Mvc . UI
4. Скопируйте Kendo UI ресурс с клиентской стороны. Для этого Вам нужно установить пакет Kendo UI Professional (Commercial Package). Его можно установить через Bower с помощью следующей команды:
bower install https://bower.telerik.com/bower-kendo-ui.git
Пакет Kendo UI Professional Bower размещается в частном git -хранилище и требует активировать аккаунт Telerik. Во время установки Вам предложат ввести пароль несколько раз.
Bower установит пакет Kendo UI Professional как “ kendo — ui ” в папку wwwroot / lib .
5. Дальше нам необходимо зарегистрировать скрипты Kendo UI и стили в ~/Views/Shared/_Layout.cshtml.
6. Теперь давайте используем виджет Kendo UI в одном из видов. Мы будем использовать виджет Kendo UI DatePicker. Откройте ~/Views/Home.Index.cshtml и добавьте следующий фрагмент:
Бесплатные вебинары по схожей тематике:

Какие алгоритмы должен знать программист

Подготовка к собеседованию в IT

Практика С#. Создание блога с BlogEngine.NET (ASP.NET MVC).
@RenderSection(«scripts», required: false)
7. Запустите веб-приложение через dnx: kestrel команду, что мы использовали ранее. Результат представлен ниже.

Заключение
Готово. У нас есть законченное веб-приложение ASP.NET 5, интегрированное с Telerik UI для ASP.NET MVC виджетов, разработанное только использованием Visual Studio Code с поддержкой таких инструментов, как Yeoman и Bower.
Надеемся, Вам понравилось!
Поделитесь материалом в соцсетях!
Статьи по схожей тематике

![]()
Влад Сверчков
![]()
13.12.2022
![]()
21761
![]()
Влад Сверчков
![]()
13.12.2022
![]()
21761

![]()
Редакция ITVDN
![]()
11.11.2020
![]()
150693
![]()
Редакция ITVDN
![]()
11.11.2020
![]()
150693

![]()
Влад Сверчков
![]()
29.07.2020
![]()
46469
![]()
Влад Сверчков
![]()
29.07.2020
![]()
46469

![]()
Влад Сверчков
![]()
20.11.2019
![]()
16117
![]()
Влад Сверчков
![]()
20.11.2019
![]()
16117
Пользовательские шаблоны и расширения для Visual Studio под проект (Часть 2: шаблоны проектов)
В прошлый раз я рассуждал на тему расширений и шаблонов, что их можно создавать не только для общего пользования, но и для нужд конкретного проекта. А так же показал, как легко можно создать шаблон элемента (класса, например). Вы можете ознакомиться с предыдущей статьей по этой ссылке. Здесь же мы поговорим про создание шаблона проекта.
Начало тут похожее на создание шаблона элемента. Меню Проект — Экспорт шаблона.

Выбираем Шаблон проекта, проект, на основе которого ходим сделать шаблон, жмём Далее.

Здесь все так же, как и в случае с шаблоном элемента. Только вместо Далее жмем Готово.
В проект для шаблона я добавил пустую папку Controllers, пустой класс Startup.cs, одну ссылку на локальный проект и одну ссылку на Nuget пакет.

Найти шаблон проекта значительно сложнее, чем шаблон элемента, потому что проект попадает отнюдь не в начало списка. Тут придется воспользоваться поиском.

Я ни в случае с шаблоном элемента ни в случае с шаблоном проекта создание на основе шаблона не демонстрировал, потому что в этом нет смысла. Создастся то, что вы в шаблон заложили, с тонкими настройками мы не играли. Поэтому сразу перейдем внутренностям нашего шаблона.
Шаблон проекта так же является zip архивом. Вот его содержимое

Здесь файл с иконкой, файл vstemplate с настройками шаблона и файлы (контент) шаблона. Так как это проект, среди файлов есть файл csproj. Ну и файл startup.cs, который мы тоже добавили.
Файл csproj будет идентичен файлу csproj того проекта, с которого мы срисовали шаблон, файлы cs так же будут копиями тех файлов, которые мы разместили в нашем шаблонном проекте.
Интерес тут представляет файл vstemplate.
VsExtensionsPolygon.ProjectForTemplate <Нет описания> CSharp 1000 true VsExtensionsPolygon.ProjectForTemplate true Enabled true true __TemplateIcon.ico Startup.cs
Как видите, VSTemplate.Type тут имеет значение Project.
ProjectType может содержать одно из трех значений: CSharp, VisualBasic или Web.
CreateNewFolder отвечает за создание проекта в отдельной папке.
LocationField отвечает за то, будет ли в диалоговом окне создания проекта поле с расположением создаваемого проекта.
CreateInPlace флаг. Если true, то замена переменных шаблона на значения происходит на месте, если false, то проект сначала создается в темповой папке, затем происходит замена, затем проект перемещается в папку назначения. По умолчанию true. Я полагаю, что опцию false следует использовать, когда мы создаем множество файлов с использованием переменных. Если создать проект сразу на месте, студия начнет его обработку до полной замены всех переменных, а значит будут потрачены лишние ресурсы.
Здесь элемент ProjectItem содержится внутри блока Project.
Project отвечает за создание проекта. атрибуты у этого элемента идентичны ProjectItem (есть некоторые различия, но нас они сейчас не интересуют).
Помните, мы могли найти наш шаблон только по имени? Можно добавить к нему теги. Для этого существует три дополнительных настройки в блоке TemplateData. Это LanguageTag, PlatformTag и ProjectTypeTag. Давайте добавим их и посмотрим что получится.
CSharp Windows Web
Заменим файл в архиве и перезапустим студию.

Теперь наш шаблон можно найти по тегам. Чтобы добавить несколько тегов одного типа, нужно в продублировать элементы.
csharp Typescript
Полное описание работы с тегами здесь.
Почему то я не смог вывести шаблон проекта вверх изменяя SortOrder. Может, кто-нибудь подскажет почему?
Путь для шаблонов проектов, кстати
C:\Users\[user_name]\Documents\Visual Studio 2019\Templates\ProjectTemplates
И еще одна деталь. Возможно это и очевидно, но шаблоны эти для Visual Studio, в dotnet они недоступны.
Create a new project in Visual Studio
Applies to:
Visual Studio
Visual Studio for Mac
Visual Studio Code
In this article, we’ll show you how to quickly create a new project in Visual Studio from a template.
Open the «Create a new project» dialog
There are multiple ways to create a new project in Visual Studio. When you first open Visual Studio, the start window appears, and from there, you can select Create a new project.

If the Visual Studio development environment is already open, you can create a new project by choosing File > New > Project on the menu bar. You can also select the New Project button on the toolbar, or press Ctrl+Shift+N.

Open the «Create a new project» dialog
There are multiple ways to create a new project in Visual Studio. When you first open Visual Studio, the start window appears, and from there, you can select Create a new project.

If the Visual Studio development environment is already open, you can create a new project by choosing File > New > Project on the menu bar. You can also select the New Project button on the toolbar, or press Ctrl+Shift+N.

Select a template type
On the Create a new project dialog, a list of your recently selected templates appears on the left. The templates are sorted by most recently used.
If you’re not selecting from the recently used templates, you can filter all available project templates by Language (for example, C# or C++), Platform (for example, Windows or Azure), and Project type (for example, Desktop or Web). You can also enter search text into the search box to further filter the templates, for example, asp.net.

The tags that appear under each template correspond to the three dropdown filters (language, platform, and project type).
If you don’t see the template you’re looking for, you might be missing a workload for Visual Studio. To install additional workloads, for example, Azure Development or Mobile Development with .NET, select the Install more tools and features link to open Visual Studio Installer. From there, select the workloads you want to install, and then select Modify. After that, additional project templates will be available to choose from.

Select a template and then select Next.

The tags that appear under each template correspond to the three dropdown filters (language, platform, and project type).
If you don’t see the template you’re looking for, you might be missing a workload for Visual Studio. To install additional workloads, for example, Azure Development or Mobile Development with .NET, select the Install more tools and features link to open Visual Studio Installer. From there, select the workloads you want to install, and then select Modify. After that, additional project templates will be available to choose from.

Select a template and then select Next.
Configure your new project
The Configure your new project dialog has options to name your project (and solution), select a disk location, and select a Framework version (if applicable to the template you chose).

If you create a new project when you already have a project or solution open in Visual Studio, an extra configuration option is available. You can choose to create a new solution or add the new project to the solution that’s already open.

Select Create to create the new project.
Configure your new project
The Configure your new project dialog has options to name your project (and solution), select a disk location, and more.

The Additional information dialog includes options to select a Framework version, an authentication type, and more.

Select Create to create the new project.
Add another project to a solution
If you want to add another project to a solution, right-click the solution node in Solution Explorer and then select Add > New Project.
For an example of a project and solution created from scratch, complete with step-by-step instructions and sample code, see Introduction to projects and solutions.
