Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве подробно описывается процесс перехода с традиционного шаблона на новую структуру проекта в Microsoft Teams. Переход необходим для использования новейших функций и повышения удобства обслуживания проекта. Новая структура проекта представляет собой более удобный и эффективный способ управления приложениями Teams с помощью .ttkproj
файла для представления нового типа проекта.
В новом наборе средств агентов Microsoft 365 (ранее известном как Набор средств Teams) версии 17.10 решение Teams содержит два проекта: проект Teams и исходный код.
- Проект Teams: проект Teams содержит пакет приложения Teams и файлы конфигурации набора средств агентов.
- Исходный код. Проект исходного кода — это бизнес-логика для вкладки, бота или других пользователей.
Разделение проекта и исходного кода Teams позволяет интегрировать существующие веб-решения или решения ботов в Teams. Такой подход упрощает процесс интеграции любого существующего проекта или решения с Teams.
Предварительные условия
Перед началом процесса миграции убедитесь, что у вас есть следующее:
- Проект Teams, созданный с помощью набора средств агентов для Visual Studio 17.9 или более ранней версии.
- Visual Studio версии 17.10, предварительная версия 3 или более поздняя.
- Функция нескольких стартапов. Чтобы включить несколько запусков, перейдите в раздел Сервис>Параметры>Предварительная версия функции>Включить профили запуска нескольких проектов.
Процесс миграции
Чтобы перейти на новую структуру проекта, выполните следующие действия.
В папке проекта Teams, где у вас есть файл решения Visual Studio, создайте новую папку. На последующих шагах эта папка называется TeamsApp .
Создайте файл TeamsApp.ttkproj в папке TeamsApp, и имя файла проекта должно соответствовать новому имени папки. Добавьте следующий код в файл TeamsApp.ttkproj :
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" Sdk="Microsoft.TeamsFx.Sdk"> <ItemGroup> <ProjectCapability Include="ProjectConfigurationsDeclaredDimensions" /> </ItemGroup> </Project>
Удалите следующие папки конфигурации и файлы из папки проекта и добавьте их в папку TeamsApp .
- Папки:
appPackage
,env
,infra
- Файлы:
m365agents.yml
,m365agents.local.yml
,aad.manifest.json
Примечание.
После перемещения папок и файлов они автоматически включаются в файл TeamsApp.ttkproj , и вам не нужно добавлять их в TeamsApp.ttkproj вручную.
- Папки:
В соответствии с параметром
launchSettings.json
переместите возможность запуска браузера или средства тестирования вlaunchSettings.json
папку TeamsApp .- Создайте
launchSettings.json
файл в папке TeamsApp . Добавьте содержимое файлаlaunchSettings.json
папки проекта в только что созданныйlaunchSettings.json
в папке TeamsApp . - В только что созданной
launchSettings.json
папке TeamsApp удалитеdotnetRunMessages
поля ,launchBrowser
,applicationUrl
,environmentVariables
иhotReloadProfile
. - В папке
launchSettings.json
проекта удалитеlaunchBrowser
поля ,launchPlayground
иlaunchUrl
и дублированные профили.
Примечание.
- Объект
launchSettings.json
проекта должен начинаться сам по себе. - Папка
launchSettings.json
TeamsApp настроена для запуска браузера или приложения средства тестирования, которое взаимодействует с проектом.
- Создайте
Откройте файл решения с помощью Visual Studio версии 17.10, предварительной версии 3 или более поздней, и добавьте новый проект
TeamsApp.ttkproj
из папки TeamsApp в файл решения в Visual Studio.Удалите
<ProjectCapability Include="TeamsFx"/>
в проекте.Создайте
{{solutionName}}.slnLaunch.user
файл. Этот файл можно создать с помощью VS или вручную.- Щелкните решение правой кнопкой мыши и выберите Настроить запускаемые проекты....
- Выберите Несколько начальных проектов и добавьте дополнительные профили, которые одновременно запускают TeamsApp и проект. При необходимости можно переименовать профили.
- Нажмите OK. Файл
{{solutionName}}.slnLaunch.user
автоматически сохраняется в папке решения.
Измените
m365agents.local.yml
файлы иm365agents.yml
в папке TeamsApp .Каждое действие, изменяющее проект, должно быть обновлено, так как путь обновлен. Сосредоточьтесь на следующих действиях:
-
uses: file/createOrUpdateJsonFile
: это действие может изменитьappSettings.json
файл проекта для настройки сред выполнения. Обновитеtarget
поле до правильного пути.Важно!
Вам не нужно изменять
launchSettings.json
с помощьюfile/createOrUpdateJsonFile
. Если он присутствует вm365agents.local.yml
, удалите его. -
uses: cli/runDotnetCommand
: это действие выполняет.NET
команду в проекте, чтобы упаковать его. ИзменитеworkingDirectory
поле на новый путь и обновите командную строку правильным.csproj
путем. -
uses: azureAppService/zipDeploy
: это действие удаленно развертывает упакованный файл. ОбновитеworkingDirectory
поле до правильного пути.
Ниже приведен пример изменения конфигураций YAML:
# For example: # Generate runtime appsettings to JSON file - uses: file/createOrUpdateJsonFile with: target: ../MyTeamsApp8/appsettings.Development.json content: TeamsFx: Authentication: ClientId: ${{AAD_APP_CLIENT_ID}} ClientSecret: ${{SECRET_AAD_APP_CLIENT_SECRET}} InitiateLoginEndpoint: ${{TAB_ENDPOINT}}/auth-start.html OAuthAuthority: ${{AAD_APP_OAUTH_AUTHORITY}} # Triggered when 'teamsapp deploy' is executed deploy: - uses: cli/runDotnetCommand with: args: publish --configuration Release MyTeamsApp8.csproj workingDirectory: ../MyTeamsApp8 # Deploy your application to Azure App Service using the zip deploy feature. # For additional details, refer to https://aka.ms/zip-deploy-to-app-services. - uses: azureAppService/zipDeploy with: # Deploy base folder artifactFolder: bin/Release/net8.0/publish # The resource id of the cloud resource to be deployed to. # This key will be generated by arm/deploy action automatically. # You can replace it with your existing Azure Resource id # or add it to your environment variable file. resourceId: ${{TAB_AZURE_APP_SERVICE_RESOURCE_ID}} workingDirectory: ../MyTeamsApp8
Примечание.
Мы рекомендуем подготовить и развернуть в новой папке проекта для тестирования приложения.
-
Закройте решение и убедитесь, что все изменения сохранены.
Вы успешно перенесли проект, и структура папок обновлена следующим образом:
Структура папок
Файл типа проекта
Это расширение файла — .ttkproj.
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.TeamsFx.Sdk">
<PropertyGroup Label="Globals">
<ProjectGuid>f05bbd29-f3bc-4bb8-8f1f-842235db6b49</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<ProjectCapability Include="ProjectConfigurationsDeclaredDimensions" />
</ItemGroup>
</Project>
LaunchSettings.json
Следующий код является примером проекта C#:
{
"profiles": {
"Start Project": {
"commandName": "Project",
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:44302;http://localhost:2544",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"hotReloadProfile": "aspnetcore"
}
}
}
Следующий код является примером проекта TeamsApp:
{
"profiles": {
// Debug project within Teams
"Microsoft Teams (browser)": {
"commandName": "Project",
"launchUrl": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
},
// Debug project within Microsoft 365
"Microsoft 365 app (browser)": {
"commandName": "Project",
"launchUrl": "https://www.office.com/m365apps/${{M365_APP_ID}}?auth=2&login_hint=${{TEAMSFX_M365_USER_NAME}}",
},
// Debug project within Outlook
"Outlook (browser)": {
"commandName": "Project",
"launchUrl": "https://outlook.office.com/host/${{M365_APP_ID}}?login_hint=${{TEAMSFX_M365_USER_NAME}}",
}
}
}
YamL-файл приложения Teams
Ниже приведен пример teamapp.local.yml:
# Generate runtime appsettings to JSON file
- uses: file/createOrUpdateJsonFile
with:
target: ../MyTeamsApp8/appsettings.Development.json
content:
TeamsFx:
Authentication:
ClientId: ${{AAD_APP_CLIENT_ID}}
ClientSecret: ${{SECRET_AAD_APP_CLIENT_SECRET}}
InitiateLoginEndpoint: ${{TAB_ENDPOINT}}/auth-start.html
OAuthAuthority: ${{AAD_APP_OAUTH_AUTHORITY}}
Следующий код является примером teamapp.yml:
# Triggered when 'teamsapp deploy' is executed
deploy:
- uses: cli/runDotnetCommand
with:
args: publish --configuration Release MyTeamsApp8.csproj
workingDirectory: ../MyTeamsApp8
# Deploy your application to Azure App Service using the zip deploy feature.
# For additional details, refer to https://aka.ms/zip-deploy-to-app-services.
- uses: azureAppService/zipDeploy
with:
# Deploy base folder
artifactFolder: bin/Release/net8.0/publish
# The resource id of the cloud resource to be deployed to.
# This key will be generated by arm/deploy action automatically.
# You can replace it with your existing Azure Resource id
# or add it to your environment variable file.
resourceId: ${{TAB_AZURE_APP_SERVICE_RESOURCE_ID}}
workingDirectory: ../MyTeamsApp8
Запуск пользовательского файла решения
Этот файл должен храниться на том же уровне папки решения.
[
{
"Name": "Microsoft Teams (browser)",
"Projects": [
{
"Name": "TeamsApp\\TeamsApp.ttkproj",
"Action": "StartWithoutDebugging",
"DebugTarget": "Microsoft Teams (browser)"
},
{
"Name": "MyTeamsApp8\\MyTeamsApp8.csproj",
"Action": "Start",
"DebugTarget": "Start Project"
}
]
},
{
"Name": "Microsoft 365 app (browser)",
"Projects": [
{
"Name": "TeamsApp\\TeamsApp.ttkproj",
"Action": "StartWithoutDebugging",
"DebugTarget": "Microsoft 365 app (browser)"
},
{
"Name": "MyTeamsApp8\\MyTeamsApp8.csproj",
"Action": "Start",
"DebugTarget": "Start Project"
}
]
},
{
"Name": "Outlook (browser)",
"Projects": [
{
"Name": "TeamsApp\\TeamsApp.ttkproj",
"Action": "StartWithoutDebugging",
"DebugTarget": "Outlook (browser)"
},
{
"Name": "MyTeamsApp8\\MyTeamsApp8.csproj",
"Action": "Start",
"DebugTarget": "Start Project"
}
]
}
]
Platform Docs