Пользовательский шаблон проекта Visual Studio - номер порта applicationUrl
Есть ли способ добавить доступный случайный номер порта для applicationUrl для проекта, созданного из пользовательского шаблона VisualStudio? Я создал шаблон проекта VS для проектов.NET Core и добавил некоторые параметры-заполнители, такие как "$guid1$" и "$safeprojectname$", но не могу найти способ заменить номер порта для URL-адреса приложения IISExpress.
Спасибо за любые советы и ответы!
3 ответа
Хотя эта страница и не завершена, она дает некоторую помощь (используетdotnet
Система шаблонов CLI, а не старая система шаблонов):
https://github.com/sayedihashimi/template-sample#generating-ports-for-web-projects
В нем говорится:
Если ваш шаблон состоит из веб-проекта, вполне вероятно, что вы захотите сгенерировать новые номера портов, которые будут использоваться при использовании шаблона. Это немного сложно сделать правильно, но мы объясним разные части. При определении поддержки для каждого другого номера порта мы хотим создать параметр командной строки, который можно использовать для явного задания номера порта. Если номер порта не передается пользователем, мы хотим сгенерировать номер порта автоматически.
Для этого нам нужно будет создать три новых символа в файле template.json. Мы создадим следующие символы.
- Параметр, который может передать пользователь
- Сгенерированный номер порта
- Символ для объединения параметра пользователя и сгенерированного порта Вот пример, в котором мы указываем диапазон, в котором должен находиться номер порта.
"HttpsPort": {
"type": "parameter",
"datatype": "integer",
"description": "Port number to use for the HTTPS endpoint in launchSettings.json."
},
"HttpsPortGenerated": {
"type": "generated",
"generator": "port",
"parameters": {
"low": 44300,
"high": 44399
}
},
"HttpsPortReplacer": {
"type": "generated",
"generator": "coalesce",
"parameters": {
"sourceVariableName": "HttpsPort",
"fallbackVariableName": "HttpsPortGenerated"
},
"replaces": "44345"
}
HttpsPort — это пользовательский параметр, который можно передать при вызове dotnet new.
HttpsPortGenerated — это сгенерированный номер порта. В этом примере мы указали низкое и высокое значение. Сгенерированный номер порта будет между ними. Эти параметры являются необязательными.
HttpsPortReplacer — это символ, который будет выбирать между HttpsPort и HttpsPortGenerated. Если значение предоставляется через командную строку (HttpsPort), ему будет отдано предпочтение. Обратите внимание на число 44345 в этом символе. Это номер порта, который используют исходные файлы. Везде, где эта строка встречается в содержимом шаблона, она будет заменена новым номером порта.
Полный пример sourceName см. в src/Content/MyWebApp/.template.config/template.json.
Для IIS Express у вас есть свойство AutoAssignPort, которое вы можете использовать.
Это из предыдущего вопроса SO здесь: Обновите порт IIS Express в Visual Studio 2012 при создании шаблона проекта
Для проектов .NET Core удалите файл из папки перед использованием.
Project\Export Template
для создания Шаблона. VisualStudio автоматически сгенерирует
launchSettings.json
файл.
Если вы создаете проект вручную: просто удалите его из
Properties
папку, а также удалить ссылку на файл в
MyTemplate.vstemplate
файл. Оставьте пустой узел папки:
<Folder Name="Properties" TargetFolderName="Properties">
</Folder>
Это работает как для VisualStudio 2019, так и для VisualStudio 2022.
Я не пробовал это с VisualStudio 2017.