From 7f06f22e000ab265e23bcd660538fd3ea28398ad Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 18 Jul 2023 15:22:47 -0700 Subject: [PATCH 01/42] reorganize toc and index pages --- .openpublishing.redirection.json | 10 +++ .../azure-deployment-using-github-actions.md | 0 ...nt-entity-framework-core-github-actions.md | 0 docs/azure/index.yml | 69 ++++++++----------- docs/azure/toc.yml | 44 +++++++----- docs/deployment/toc.yml | 8 +-- 6 files changed, 71 insertions(+), 60 deletions(-) rename docs/{deployment => azure}/azure-deployment-using-github-actions.md (100%) rename docs/{deployment => azure}/end-to-end-deployment-entity-framework-core-github-actions.md (100%) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index a77a29c8c7f..1fc8368757c 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,15 @@ { "redirections": [ + { + "source_path": "docs/deployment/azure-deployment-using-github-actions.md", + "redirect_url": "/visualstudio/azure/azure-deployment-using-github-actions", + "redirect_document_id": true + }, + { + "source_path": "docs/deployment/end-to-end-deployment-entity-framework-core-github-actions.md", + "redirect_url": "/visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions", + "redirect_document_id": true + }, { "source_path": "docker/tutorials/tutorial-deploy-docker-app-azure.md", "redirect_url": "/visualstudio/docker/tutorials/docker-tutorial", diff --git a/docs/deployment/azure-deployment-using-github-actions.md b/docs/azure/azure-deployment-using-github-actions.md similarity index 100% rename from docs/deployment/azure-deployment-using-github-actions.md rename to docs/azure/azure-deployment-using-github-actions.md diff --git a/docs/deployment/end-to-end-deployment-entity-framework-core-github-actions.md b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md similarity index 100% rename from docs/deployment/end-to-end-deployment-entity-framework-core-github-actions.md rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md diff --git a/docs/azure/index.yml b/docs/azure/index.yml index 0764d3e876a..96e6cbebb47 100644 --- a/docs/azure/index.yml +++ b/docs/azure/index.yml @@ -12,12 +12,38 @@ metadata: ms.author: ghogen landingContent: - - title: Deploy to Azure + - title: Work with Azure in Visual Studio linkLists: - linkListType: overview links: - - text: Overview of Azure integration + - text: Azure in Visual Studio url: overview-azure-integration.md + - text: Azure SDK for .NET and .NET Core Developers + url: /dotnet/azure + - title: Connect to Azure services + linkLists: + - linkListType: overview + links: + - text: Connected Services + url: overview-connected-services.md + - linkListType: tutorial + links: + - text: Azure Active Directory + url: /azure/active-directory/develop/vs-active-directory-add-connected-service + - text: Azure Cache for Redis + url: azure-cache-for-redis-add-connected-service.md + - text: Azure Cosmos DB + url: azure-cosmosdb-add-connected-service.md + - text: Azure Key Vault + url: /azure/key-vault/vs-key-vault-add-connected-service + - text: Azure SignalR + url: azure-signalr-add-connected-service.md + - text: Azure SQL Database + url: azure-sql-database-add-connected-service.md + - text: Azure Storage + url: vs-azure-tools-connected-services-storage.md + - title: Deploy to Azure + linkLists: - linkListType: tutorial links: - text: Deploy an ASP.NET Core app to Azure @@ -30,8 +56,7 @@ landingContent: url: /azure/app-service/deploy-continuous-deployment - text: Continuous deployment to Azure with Azure Pipelines url: /azure/devops/pipelines/get-started-yaml - - - title: Azure App Services, Logic Apps, and Azure Functions + - title: Azure Web Apps, App Service, and Azure Functions linkLists: - linkListType: tutorial links: @@ -41,10 +66,6 @@ landingContent: url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio - text: Process events with Azure Functions url: /azure/azure-functions/functions-create-your-first-function-visual-studio - - linkListType: overview - links: - - text: Azure SDK for .NET and .NET Core Developers - url: /dotnet/azure - title: Container development linkLists: @@ -69,29 +90,6 @@ landingContent: url: vs-azure-tools-debug-cloud-services-virtual-machines.md - text: Measure performance for cloud services in Azure url: vs-azure-tools-performance-profiling-cloud-services.md - - - title: Connected Services - linkLists: - - linkListType: overview - links: - - text: Overview - url: overview-connected-services.md - - linkListType: tutorial - links: - - text: Azure Active Directory - url: /azure/active-directory/develop/vs-active-directory-add-connected-service - - text: Azure Cache for Redis - url: azure-cache-for-redis-add-connected-service.md - - text: Azure Cosmos DB - url: azure-cosmosdb-add-connected-service.md - - text: Azure Key Vault - url: /azure/key-vault/vs-key-vault-add-connected-service - - text: Azure SignalR - url: azure-signalr-add-connected-service.md - - text: Azure SQL Database - url: azure-sql-database-add-connected-service.md - - text: Azure Storage - url: vs-azure-tools-connected-services-storage.md - title: Azure Cloud Services linkLists: - linkListType: how-to-guide @@ -109,15 +107,6 @@ landingContent: - text: Monitor and diagnose cloud services and virtual machines running in Azure url: vs-azure-tools-diagnostics-for-cloud-services-and-virtual-machines.md - - title: Cloud Explorer - linkLists: - - linkListType: how-to-guide - links: - - text: Access Azure storage accounts in Visual Studio - url: vs-azure-tools-storage-resources-server-explorer-browse-manage.md - - text: Access Virtual Machines from Visual Studio - url: vs-azure-tools-virtual-machines-access-from-server-explorer.md - - title: Other Resources linkLists: - linkListType: how-to-guide diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 476d74f8883..e1f22d98ab7 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -3,21 +3,6 @@ expanded: true - name: Overview href: overview-azure-integration.md -- name: Deploy to Azure App Service - items: - - name: Deploy an ASP.NET Core app to Azure - href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?view=aspnetcore-2.1&preserve-view=true - - name: Deploy a .NET TODO List web app to Azure - href: /dotnet/azure/dotnet-quickstart-vs?view=azure-dotnet&preserve-view=true - - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core - href: /azure/app-service/deploy-continuous-deployment - - name: Continuous deployment to Azure with Azure Pipelines - href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true - - name: Deploy an ASP.NET web app to an Azure VM - href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - - name: Deploy an ASP.NET Core web app to Azure Container Apps - href: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - expanded: true - name: Connect to Azure services items: - name: Connected Services overview @@ -41,8 +26,35 @@ - name: Add Azure App Configuration href: vs-azure-tools-connected-services-app-configuration.md expanded: false +- name: Deploy web app to Azure + items: + - name: Azure Container Apps >> + href: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - name: Azure App Service >> + href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?view=aspnetcore-2.1&preserve-view=true + - name: Azure Container Registry + href: ../containers/hosting-web-apps-in-docker.md + - name: Azure Virtual Machine + href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - name: Continuous integration + items: + - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core + href: /azure/app-service/deploy-continuous-deployment + - name: Continuous deployment to Azure with Azure Pipelines + href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true + expanded: false +- name: Azure Function Apps + items: + - name: Azure Function App >> + href: /azure/azure-functions/functions-create-your-first-function-visual-studio - name: GitHub Actions - href: overview-github-actions.md + items: + - name: Overview + href: overview-github-actions.md + - name: Deploy to Azure using GitHub Actions + href: azure-deployment-using-github-actions.md + - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions + href: end-to-end-deployment-entity-framework-core-github-actions.md - name: How to items: - name: Get publish profile from Azure App Service diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 8097a9196d7..176e68df7c9 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -18,8 +18,8 @@ items: - name: Publish an ASP.NET Core app to Azure >> href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app - - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions - href: /visualstudio/deployment/end-to-end-deployment-entity-framework-core-github-actions + - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> + href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions - name: Get publish settings from IIS href: tutorial-import-publish-settings-iis.md - name: Get publish settings from Azure @@ -57,8 +57,8 @@ items: - name: GitHub Actions CI/CD Publish items: - - name: Deploy to Azure using GitHub Actions - href: azure-deployment-using-github-actions.md + - name: Deploy to Azure using GitHub Actions >> + href: /visualstudio/azure/azure-deployment-using-github-actions - name: ClickOnce items: - name: Overview of ClickOnce security and deployment From 13e69d815a71878cb3d3808bdb3d98613aa701c3 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 18 Jul 2023 15:39:53 -0700 Subject: [PATCH 02/42] Move image files --- .../solution-explorer-publish.png | Bin .../summary-commit-and-push.png | Bin .../summary-one-github-secret-missing.png | Bin .../summary-set-github-secret.png | Bin .../summary-two-github-secrets.png | Bin .../summary-workflow-running.png | Bin .../wizard-azure.png | Bin .../wizard-final-step.png | Bin .../wizard-pick-azure-service.png | Bin .../azure-portal-connection-string-large.png | Bin .../azure-portal-connection-string.png | Bin .../azure-portal-service-connector-large.png | Bin .../azure-portal-service-connector.png | Bin .../github-actions-workflow-large.png | Bin .../github-actions-workflow.png | Bin .../github-secret-large.png | Bin .../github-secret.png | Bin .../visual-studio-container-registry-large.png | Bin .../visual-studio-container-registry.png | Bin .../visual-studio-create-container-app-large.png | Bin .../visual-studio-create-container-app.png | Bin .../visual-studio-edit-workflow-large.png | Bin .../visual-studio-edit-workflow.png | Bin .../visual-studio-service-connections-large.png | Bin .../visual-studio-service-connections.png | Bin 25 files changed, 0 insertions(+), 0 deletions(-) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/solution-explorer-publish.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/summary-commit-and-push.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/summary-one-github-secret-missing.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/summary-set-github-secret.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/summary-two-github-secrets.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/summary-workflow-running.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/wizard-azure.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/wizard-final-step.png (100%) rename docs/{deployment/media => azure/azure-deployment-using-github-actions}/wizard-pick-azure-service.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/azure-portal-connection-string-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/azure-portal-connection-string.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/azure-portal-service-connector-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/azure-portal-service-connector.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/github-actions-workflow-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/github-actions-workflow.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/github-secret-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/github-secret.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-container-registry-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-container-registry.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-create-container-app-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-create-container-app.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-edit-workflow-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-edit-workflow.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-service-connections-large.png (100%) rename docs/{deployment/media => azure/end-to-end-deployment-entity-framework-core-github-actions}/visual-studio-service-connections.png (100%) diff --git a/docs/deployment/media/solution-explorer-publish.png b/docs/azure/azure-deployment-using-github-actions/solution-explorer-publish.png similarity index 100% rename from docs/deployment/media/solution-explorer-publish.png rename to docs/azure/azure-deployment-using-github-actions/solution-explorer-publish.png diff --git a/docs/deployment/media/summary-commit-and-push.png b/docs/azure/azure-deployment-using-github-actions/summary-commit-and-push.png similarity index 100% rename from docs/deployment/media/summary-commit-and-push.png rename to docs/azure/azure-deployment-using-github-actions/summary-commit-and-push.png diff --git a/docs/deployment/media/summary-one-github-secret-missing.png b/docs/azure/azure-deployment-using-github-actions/summary-one-github-secret-missing.png similarity index 100% rename from docs/deployment/media/summary-one-github-secret-missing.png rename to docs/azure/azure-deployment-using-github-actions/summary-one-github-secret-missing.png diff --git a/docs/deployment/media/summary-set-github-secret.png b/docs/azure/azure-deployment-using-github-actions/summary-set-github-secret.png similarity index 100% rename from docs/deployment/media/summary-set-github-secret.png rename to docs/azure/azure-deployment-using-github-actions/summary-set-github-secret.png diff --git a/docs/deployment/media/summary-two-github-secrets.png b/docs/azure/azure-deployment-using-github-actions/summary-two-github-secrets.png similarity index 100% rename from docs/deployment/media/summary-two-github-secrets.png rename to docs/azure/azure-deployment-using-github-actions/summary-two-github-secrets.png diff --git a/docs/deployment/media/summary-workflow-running.png b/docs/azure/azure-deployment-using-github-actions/summary-workflow-running.png similarity index 100% rename from docs/deployment/media/summary-workflow-running.png rename to docs/azure/azure-deployment-using-github-actions/summary-workflow-running.png diff --git a/docs/deployment/media/wizard-azure.png b/docs/azure/azure-deployment-using-github-actions/wizard-azure.png similarity index 100% rename from docs/deployment/media/wizard-azure.png rename to docs/azure/azure-deployment-using-github-actions/wizard-azure.png diff --git a/docs/deployment/media/wizard-final-step.png b/docs/azure/azure-deployment-using-github-actions/wizard-final-step.png similarity index 100% rename from docs/deployment/media/wizard-final-step.png rename to docs/azure/azure-deployment-using-github-actions/wizard-final-step.png diff --git a/docs/deployment/media/wizard-pick-azure-service.png b/docs/azure/azure-deployment-using-github-actions/wizard-pick-azure-service.png similarity index 100% rename from docs/deployment/media/wizard-pick-azure-service.png rename to docs/azure/azure-deployment-using-github-actions/wizard-pick-azure-service.png diff --git a/docs/deployment/media/azure-portal-connection-string-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png similarity index 100% rename from docs/deployment/media/azure-portal-connection-string-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png diff --git a/docs/deployment/media/azure-portal-connection-string.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png similarity index 100% rename from docs/deployment/media/azure-portal-connection-string.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png diff --git a/docs/deployment/media/azure-portal-service-connector-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png similarity index 100% rename from docs/deployment/media/azure-portal-service-connector-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png diff --git a/docs/deployment/media/azure-portal-service-connector.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png similarity index 100% rename from docs/deployment/media/azure-portal-service-connector.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png diff --git a/docs/deployment/media/github-actions-workflow-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png similarity index 100% rename from docs/deployment/media/github-actions-workflow-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png diff --git a/docs/deployment/media/github-actions-workflow.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png similarity index 100% rename from docs/deployment/media/github-actions-workflow.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png diff --git a/docs/deployment/media/github-secret-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png similarity index 100% rename from docs/deployment/media/github-secret-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png diff --git a/docs/deployment/media/github-secret.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png similarity index 100% rename from docs/deployment/media/github-secret.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png diff --git a/docs/deployment/media/visual-studio-container-registry-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png similarity index 100% rename from docs/deployment/media/visual-studio-container-registry-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png diff --git a/docs/deployment/media/visual-studio-container-registry.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png similarity index 100% rename from docs/deployment/media/visual-studio-container-registry.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png diff --git a/docs/deployment/media/visual-studio-create-container-app-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png similarity index 100% rename from docs/deployment/media/visual-studio-create-container-app-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png diff --git a/docs/deployment/media/visual-studio-create-container-app.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png similarity index 100% rename from docs/deployment/media/visual-studio-create-container-app.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png diff --git a/docs/deployment/media/visual-studio-edit-workflow-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png similarity index 100% rename from docs/deployment/media/visual-studio-edit-workflow-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png diff --git a/docs/deployment/media/visual-studio-edit-workflow.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png similarity index 100% rename from docs/deployment/media/visual-studio-edit-workflow.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png diff --git a/docs/deployment/media/visual-studio-service-connections-large.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png similarity index 100% rename from docs/deployment/media/visual-studio-service-connections-large.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png diff --git a/docs/deployment/media/visual-studio-service-connections.png b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png similarity index 100% rename from docs/deployment/media/visual-studio-service-connections.png rename to docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png From d8143cc5d71b2802fea4460167f7ad7089738859 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 18 Jul 2023 15:50:54 -0700 Subject: [PATCH 03/42] fix image links --- .../azure-deployment-using-github-actions.md | 20 +++++++++---------- ...nt-entity-framework-core-github-actions.md | 16 +++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/azure/azure-deployment-using-github-actions.md b/docs/azure/azure-deployment-using-github-actions.md index fd371d92f9b..51c4080215c 100644 --- a/docs/azure/azure-deployment-using-github-actions.md +++ b/docs/azure/azure-deployment-using-github-actions.md @@ -24,45 +24,45 @@ Starting in Visual Studio 2019 version 16.11, you can create new GitHub Actions In Solution Explorer, right-click your GitHub.com hosted project and choose **Publish**. -![right-click > Publish](./media/solution-explorer-publish.png) +![right-click > Publish](./media/azure-deployment-using-github-actions/solution-explorer-publish.png) On the next screen, select **Azure** and then choose **Next**. -![select Azure](./media/wizard-azure.png) +![select Azure](./media/azure-deployment-using-github-actions/wizard-azure.png) Depending on your [project type](#which-project-types-are-supported), you get a different list of Azure services to pick from. Pick one of the [supported Azure services](#which-azure-services-are-supported) that fits your needs. -![select the appropriate Azure service for your project](./media/wizard-pick-azure-service.png) +![select the appropriate Azure service for your project](./media/azure-deployment-using-github-actions/wizard-pick-azure-service.png) On the final step of the wizard, select **CI/CD using GitHub Actions workflows (generates yml file)** and then choose **Finish**. -![CI/CD using GitHub Actions workflows (generates yml file)](./media/wizard-final-step.png) +![CI/CD using GitHub Actions workflows (generates yml file)](./media/azure-deployment-using-github-actions/wizard-final-step.png) Visual Studio generates a new GitHub Actions workflow and asks you to commit it and push it to GitHub.com. -![commit and push](./media/summary-commit-and-push.png) +![commit and push](./media/azure-deployment-using-github-actions/summary-commit-and-push.png) If you complete this step by using the [built-in Git tooling](../version-control/git-with-visual-studio.md?view=vs-2019&preserve-view=true#git-changes-window-in-visual-studio-2019), Visual Studio will detect the execution of the workflow. -![workflow is running](./media/summary-workflow-running.png) +![workflow is running](./media/azure-deployment-using-github-actions/summary-workflow-running.png) ## Setting the GitHub secrets For the generated workflow to successfully deploy to Azure, it may require access to a [publish profile](/azure/app-service/deploy-github-actions?tabs=applevel#configure-the-github-secret). -![one github secret](./media/summary-one-github-secret.png) +![one github secret](./media/azure-deployment-using-github-actions/summary-one-github-secret.png) A successful deployment may also require access to a [service principal](/azure/app-service/deploy-github-actions?tabs=userlevel#configure-the-github-secret). -![two github secrets](./media/summary-two-github-secrets.png) +![two github secrets](./media/azure-deployment-using-github-actions/summary-two-github-secrets.png) In all cases, Visual Studio tries to set the GitHub secret for you with the correct value. If it fails, it will let you know and give you the opportunity to try again. -![github secret missing](./media/summary-one-github-secret-missing.png) +![github secret missing](./media/azure-deployment-using-github-actions/summary-one-github-secret-missing.png) If it fails to set the secret again, Visual Studio gives you the opportunity to get access to the secret manually, so you can complete the process through your repo's page on github.com. -![set missing github secret](./media/summary-set-github-secret.png) +![set missing github secret](./media/azure-deployment-using-github-actions/summary-set-github-secret.png) ## Which project types are supported? diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md index ac6955697b0..49ecb8ff9e7 100644 --- a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md +++ b/docs/azure/end-to-end-deployment-entity-framework-core-github-actions.md @@ -50,7 +50,7 @@ The ToDo application is ready to go, but you'll need to establish a connection t Visual Studio displays a summary of the service dependencies, including the connection to `LocalDB`. -:::image type="content" source="./media/visual-studio-service-connections.png" lightbox="./media/visual-studio-service-connections-large.png" alt-text="A screenshot showing how to add a migration using Visual Studio."::: +:::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png" alt-text="A screenshot showing how to add a migration using Visual Studio."::: Next you'll need to create an initial migration and use it to update the local database with the correct schema for the todo app. @@ -103,7 +103,7 @@ The publishing features of Visual Studio can handle creating these resources for 1. For the specific target, select **Azure Container Apps (Linux)**, and then select **Next**. 1. Create a new container app to deploy to. Select the **+ Create new** button to open a new dialog and enter the following values: - :::image type="content" source="./media/visual-studio-create-container-app.png" lightbox="./media/visual-studio-create-container-app-large.png" alt-text="A screenshot showing how to create a container app."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png" alt-text="A screenshot showing how to create a container app."::: * **Container app name**: Leave the default value or enter a name. * **Subscription name**: Select the subscription to deploy to. @@ -119,7 +119,7 @@ The publishing features of Visual Studio can handle creating these resources for 1. Once the resource is created, make sure it's selected in the list of container apps, and then select **Next**. 1. You'll need to create an Azure Container Registry to store the published image artifact for your app. Select the green **+** icon on the container registry screen. - :::image type="content" source="./media/visual-studio-container-registry.png" lightbox="./media/visual-studio-container-registry-large.png" alt-text="A screenshot showing how to create a new container registry."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png" alt-text="A screenshot showing how to create a new container registry."::: 1. Leave the default values, and then select **Create**. 1. After the container registry is created, make sure it's selected, and then select next. @@ -162,7 +162,7 @@ Visual Studio creates and displays the publishing profile. Most of the publishin - **SQL database**: Select the database you created earlier. - **Client type**: Select **.NET**. - :::image type="content" source="./media/azure-portal-service-connector.png" lightbox="./media/azure-portal-service-connector-large.png" alt-text="A screenshot showing how to use service connector."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png" alt-text="A screenshot showing how to use service connector."::: 1. Select **Next: Authentication** and enter the following values: * Select **Connection string** for the authentication type. @@ -184,7 +184,7 @@ The GitHub Actions workflow file generated by Visual Studio can be used by GitHu 1. On the database overview page, select **Connection strings** from the left navigation. 1. On the **ADO.NET** tab, copy the connection string out of the form field. - :::image type="content" source="./media/azure-portal-connection-string.png" lightbox="./media/azure-portal-connection-string-large.png" alt-text="A screenshot showing how to retrieve the connection string."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png" alt-text="A screenshot showing how to retrieve the connection string."::: 1. Navigate to the forked GitHub repository of the app. 1. Under the **Settings** tab, select **Secrets > Actions** from the left navigation, and then choose **New repository secret**. @@ -193,7 +193,7 @@ The GitHub Actions workflow file generated by Visual Studio can be used by GitHu - **Secret**: Paste the connection string copied from Azure. **Make sure to replace the password placeholder in the connection string with the password you chose when creating the database.** - Select **Add secret**. - :::image type="content" source="./media/github-secret.png" lightbox="./media/github-secret-large.png" alt-text="A screenshot showing how to create a GitHub secret."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png" alt-text="A screenshot showing how to create a GitHub secret."::: The connection string is now stored securely in the GitHub repository secrets and can be retrieved using a GitHub workflow. @@ -201,7 +201,7 @@ The connection string is now stored securely in the GitHub repository secrets an 1. Open the GitHub Actions workflow `.yml` file generated by Visual Studio by selecting the **Edit Workflow** button on the publishing summary page. - :::image type="content" source="./media/visual-studio-edit-workflow.png" lightbox="./media/visual-studio-edit-workflow-large.png" alt-text="A screenshot showing how to edit the workflow."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png" alt-text="A screenshot showing how to edit the workflow."::: 1. Append the following yaml to the end of the workflow file: @@ -227,7 +227,7 @@ The connection string is now stored securely in the GitHub repository secrets an 2. Navigate to the GitHub repository and select the **Actions** tab. A workflow run should have triggered automatically if the push was successful. 1. Select the active workflow to view the log details for each step as they complete. The migration runs last to update the database in Azure. - :::image type="content" source="./media/github-actions-workflow.png" lightbox="./media/github-actions-workflow-large.png" alt-text="A screenshot showing the GitHub action workflow."::: + :::image type="content" source="./media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png" lightbox="./media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png" alt-text="A screenshot showing the GitHub action workflow."::: After the workflow completes, the application is deployed to Azure Container Apps and connected to the database with an updated schema. From 5f9935928245cbd52ccbcf8412f2f0f9cc7fda21 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 18 Jul 2023 16:05:47 -0700 Subject: [PATCH 04/42] move image files really --- .../solution-explorer-publish.png | Bin .../summary-commit-and-push.png | Bin .../summary-one-github-secret-missing.png | Bin .../summary-set-github-secret.png | Bin .../summary-two-github-secrets.png | Bin .../summary-workflow-running.png | Bin .../wizard-azure.png | Bin .../wizard-final-step.png | Bin .../wizard-pick-azure-service.png | Bin .../azure-portal-connection-string-large.png | Bin .../azure-portal-connection-string.png | Bin .../azure-portal-service-connector-large.png | Bin .../azure-portal-service-connector.png | Bin .../github-actions-workflow-large.png | Bin .../github-actions-workflow.png | Bin .../github-secret-large.png | Bin .../github-secret.png | Bin .../visual-studio-container-registry-large.png | Bin .../visual-studio-container-registry.png | Bin .../visual-studio-create-container-app-large.png | Bin .../visual-studio-create-container-app.png | Bin .../visual-studio-edit-workflow-large.png | Bin .../visual-studio-edit-workflow.png | Bin .../visual-studio-service-connections-large.png | Bin .../visual-studio-service-connections.png | Bin 25 files changed, 0 insertions(+), 0 deletions(-) rename docs/azure/{ => media}/azure-deployment-using-github-actions/solution-explorer-publish.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/summary-commit-and-push.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/summary-one-github-secret-missing.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/summary-set-github-secret.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/summary-two-github-secrets.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/summary-workflow-running.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/wizard-azure.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/wizard-final-step.png (100%) rename docs/azure/{ => media}/azure-deployment-using-github-actions/wizard-pick-azure-service.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png (100%) rename docs/azure/{ => media}/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png (100%) diff --git a/docs/azure/azure-deployment-using-github-actions/solution-explorer-publish.png b/docs/azure/media/azure-deployment-using-github-actions/solution-explorer-publish.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/solution-explorer-publish.png rename to docs/azure/media/azure-deployment-using-github-actions/solution-explorer-publish.png diff --git a/docs/azure/azure-deployment-using-github-actions/summary-commit-and-push.png b/docs/azure/media/azure-deployment-using-github-actions/summary-commit-and-push.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/summary-commit-and-push.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-commit-and-push.png diff --git a/docs/azure/azure-deployment-using-github-actions/summary-one-github-secret-missing.png b/docs/azure/media/azure-deployment-using-github-actions/summary-one-github-secret-missing.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/summary-one-github-secret-missing.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-one-github-secret-missing.png diff --git a/docs/azure/azure-deployment-using-github-actions/summary-set-github-secret.png b/docs/azure/media/azure-deployment-using-github-actions/summary-set-github-secret.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/summary-set-github-secret.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-set-github-secret.png diff --git a/docs/azure/azure-deployment-using-github-actions/summary-two-github-secrets.png b/docs/azure/media/azure-deployment-using-github-actions/summary-two-github-secrets.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/summary-two-github-secrets.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-two-github-secrets.png diff --git a/docs/azure/azure-deployment-using-github-actions/summary-workflow-running.png b/docs/azure/media/azure-deployment-using-github-actions/summary-workflow-running.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/summary-workflow-running.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-workflow-running.png diff --git a/docs/azure/azure-deployment-using-github-actions/wizard-azure.png b/docs/azure/media/azure-deployment-using-github-actions/wizard-azure.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/wizard-azure.png rename to docs/azure/media/azure-deployment-using-github-actions/wizard-azure.png diff --git a/docs/azure/azure-deployment-using-github-actions/wizard-final-step.png b/docs/azure/media/azure-deployment-using-github-actions/wizard-final-step.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/wizard-final-step.png rename to docs/azure/media/azure-deployment-using-github-actions/wizard-final-step.png diff --git a/docs/azure/azure-deployment-using-github-actions/wizard-pick-azure-service.png b/docs/azure/media/azure-deployment-using-github-actions/wizard-pick-azure-service.png similarity index 100% rename from docs/azure/azure-deployment-using-github-actions/wizard-pick-azure-service.png rename to docs/azure/media/azure-deployment-using-github-actions/wizard-pick-azure-service.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-connection-string.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/azure-portal-service-connector.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-actions-workflow.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-secret-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/github-secret.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-container-registry.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-create-container-app.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-edit-workflow.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections-large.png diff --git a/docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png b/docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png similarity index 100% rename from docs/azure/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png rename to docs/azure/media/end-to-end-deployment-entity-framework-core-github-actions/visual-studio-service-connections.png From 1f99ac488448135ca007f00fbf44f9b150474d66 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 11:09:44 -0700 Subject: [PATCH 05/42] incorp feedback from Angelos --- docs/azure/toc.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index e1f22d98ab7..3e4e7fdc20f 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -26,7 +26,7 @@ - name: Add Azure App Configuration href: vs-azure-tools-connected-services-app-configuration.md expanded: false -- name: Deploy web app to Azure +- name: Publish ASP.NET web app items: - name: Azure Container Apps >> href: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json @@ -36,25 +36,25 @@ href: ../containers/hosting-web-apps-in-docker.md - name: Azure Virtual Machine href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - - name: Continuous integration +- name: Publish Azure Function Apps + items: + - name: Azure Function App >> + href: /azure/azure-functions/functions-create-your-first-function-visual-studio +- name: Continuous integration + expanded: true + items: + - name: GitHub Actions items: + - name: Overview + href: overview-github-actions.md + - name: Deploy to Azure using GitHub Actions + href: azure-deployment-using-github-actions.md + - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions + href: end-to-end-deployment-entity-framework-core-github-actions.md - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core href: /azure/app-service/deploy-continuous-deployment - name: Continuous deployment to Azure with Azure Pipelines href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true - expanded: false -- name: Azure Function Apps - items: - - name: Azure Function App >> - href: /azure/azure-functions/functions-create-your-first-function-visual-studio -- name: GitHub Actions - items: - - name: Overview - href: overview-github-actions.md - - name: Deploy to Azure using GitHub Actions - href: azure-deployment-using-github-actions.md - - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions - href: end-to-end-deployment-entity-framework-core-github-actions.md - name: How to items: - name: Get publish profile from Azure App Service From 24214c9036144bec199965b2d4a8140e490139fa Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 14:57:00 -0700 Subject: [PATCH 06/42] reorganize deployment toc --- docs/deployment/toc.yml | 248 +++++++++++++++++++--------------------- 1 file changed, 118 insertions(+), 130 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 176e68df7c9..7fa476575fb 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -6,29 +6,14 @@ href: deploying-applications-services-and-components.md - name: Overview of Publish href: publish-overview.md -- name: Quickstarts +- name: Deploy .NET desktop apps (ClickOnce) items: - - name: Deploy ASP.NET web app - href: quickstart-deploy-aspnet-web-app.md -- name: Tutorials - items: - - name: .NET - items: - - name: ASP.NET - items: - - name: Publish an ASP.NET Core app to Azure >> - href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app - - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> - href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions - - name: Get publish settings from IIS - href: tutorial-import-publish-settings-iis.md - - name: Get publish settings from Azure - href: tutorial-import-publish-settings-azure.md - - name: Continuous deployment of ASP.NET Core to Azure with Git >> - href: /azure/app-service/deploy-continuous-deployment - - name: Desktop + - name: Overview of ClickOnce security and deployment + href: clickonce-security-and-deployment.md + - name: Tutorials + expanded: true items: - - name: Deploy a .NET Windows application using ClickOnce + - name: Deploy a .NET Windows application using ClickOnce href: quickstart-deploy-using-clickonce-folder.md - name: Deploy a .NET Framework desktop app using ClickOnce href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md @@ -40,29 +25,6 @@ href: building-dotnet-clickonce-applications-from-the-command-line.md - name: Build .NET Framework ClickOnce applications from the Command Line href: building-clickonce-applications-from-the-command-line.md - - name: C++ - items: - - name: Create an installer package - href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop - - name: Package a desktop app for Microsoft Store >> - href: /windows/msix/package/packaging-uwp-apps - - name: Deploy a C++/CLR app using ClickOnce >> - href: /cpp/windows/clickonce-deployment-for-visual-cpp-applications - - name: Node.js - items: - - name: Publish to Linux App Service >> - href: ../javascript/publish-nodejs-app-azure.md - - name: Python -- name: How-to guides - items: - - name: GitHub Actions CI/CD Publish - items: - - name: Deploy to Azure using GitHub Actions >> - href: /visualstudio/azure/azure-deployment-using-github-actions - - name: ClickOnce - items: - - name: Overview of ClickOnce security and deployment - href: clickonce-security-and-deployment.md - name: ClickOnce for .NET items: - name: ClickOnce for .NET on Windows @@ -223,95 +185,121 @@ href: /troubleshoot/developer/visualstudio/ide/troubleshoot-clickonce-deployments?toc=%2Fvisualstudio%2Fdeployment%2Ftoc.json - name: Debug ClickOnce applications that use System.Deployment.application href: debugging-clickonce-applications-that-use-system-deployment-application.md - - name: Visual Studio Installer projects - items: - - name: Visual Studio Installer Projects Extension and .NET 6.0 - href: installer-projects-net-core.md - - name: Custom bootstrapper - items: - - name: Application deployment prerequisites - href: application-deployment-prerequisites.md - - name: Deploy prerequisites for 64-bit applications - href: deploying-prerequisites-for-64-bit-applications.md - - name: Create bootstrapper packages - href: creating-bootstrapper-packages.md - - name: Create a product manifest - href: how-to-create-a-product-manifest.md - - name: Create a package manifest - href: how-to-create-a-package-manifest.md - - name: Create a localized bootstrapper package - href: how-to-create-a-localized-bootstrapper-package.md - - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' - href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md - - name: Product and Package Schema Reference + - name: Custom bootstrapper items: - - name: Overview of Product and Package Schema Reference - href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md -- name: Reference + - name: Application deployment prerequisites + href: application-deployment-prerequisites.md + - name: Deploy prerequisites for 64-bit applications + href: deploying-prerequisites-for-64-bit-applications.md + - name: Create bootstrapper packages + href: creating-bootstrapper-packages.md + - name: Create a product manifest + href: how-to-create-a-product-manifest.md + - name: Create a package manifest + href: how-to-create-a-package-manifest.md + - name: Create a localized bootstrapper package + href: how-to-create-a-localized-bootstrapper-package.md + - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' + href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md + - name: Product and Package Schema Reference + items: + - name: Overview of Product and Package Schema Reference + href: product-and-package-schema-reference.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md + - name: ClickOnce Reference + items: + - name: Overview of ClickOnce Reference + href: clickonce-reference.md + - name: ClickOnce application Manifest + items: + - name: Overview of ClickOnce application Manifest + href: clickonce-application-manifest.md + - name: Element (ClickOnce application) + href: assembly-element-clickonce-application.md + - name: Element (ClickOnce application) + href: assemblyidentity-element-clickonce-application.md + - name: Element (ClickOnce application) + href: trustinfo-element-clickonce-application.md + - name: Element (ClickOnce application) + href: entrypoint-element-clickonce-application.md + - name: Element (ClickOnce application) + href: dependency-element-clickonce-application.md + - name: Element (ClickOnce application) + href: file-element-clickonce-application.md + - name: Element (ClickOnce application) + href: fileassociation-element-clickonce-application.md + - name: ClickOnce Deployment Manifest + items: + - name: Overview of ClickOnce Deployment Manifest + href: clickonce-deployment-manifest.md + - name: Element (ClickOnce Deployment) + href: assembly-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: assemblyidentity-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: description-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: deployment-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: compatibleframeworks-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: dependency-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: publisheridentity-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: signature-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: customerrorreporting-element-clickonce-deployment.md + - name: ClickOnce Unmanaged API Reference + href: clickonce-unmanaged-api-reference.md +- name: Deploy .NET web apps items: - - name: Deploy to a folder, IIS, or Azure + - name: Deploy ASP.NET web app + href: quickstart-deploy-aspnet-web-app.md + - name: Deploy to a folder, IIS, or Azure href: deploying-applications-services-and-components-resources.md - - name: ClickOnce Reference + - name: Publish an ASP.NET Core app to Azure >> + href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app + - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> + href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions + - name: Get publish settings from IIS + href: tutorial-import-publish-settings-iis.md + - name: Get publish settings from Azure + href: tutorial-import-publish-settings-azure.md + - name: Continuous deployment of ASP.NET Core to Azure with Git >> + href: /azure/app-service/deploy-continuous-deployment +- name: Deploy C++ apps + items: + - name: Create an installer package + href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop + - name: Package a desktop app for Microsoft Store >> + href: /windows/msix/package/packaging-uwp-apps + - name: Deploy a C++/CLR app using ClickOnce >> + href: /cpp/windows/clickonce-deployment-for-visual-cpp-applications + - name: Deploy Node.js apps items: - - name: Overview of ClickOnce Reference - href: clickonce-reference.md - - name: ClickOnce application Manifest - items: - - name: Overview of ClickOnce application Manifest - href: clickonce-application-manifest.md - - name: Element (ClickOnce application) - href: assembly-element-clickonce-application.md - - name: Element (ClickOnce application) - href: assemblyidentity-element-clickonce-application.md - - name: Element (ClickOnce application) - href: trustinfo-element-clickonce-application.md - - name: Element (ClickOnce application) - href: entrypoint-element-clickonce-application.md - - name: Element (ClickOnce application) - href: dependency-element-clickonce-application.md - - name: Element (ClickOnce application) - href: file-element-clickonce-application.md - - name: Element (ClickOnce application) - href: fileassociation-element-clickonce-application.md - - name: ClickOnce Deployment Manifest - items: - - name: Overview of ClickOnce Deployment Manifest - href: clickonce-deployment-manifest.md - - name: Element (ClickOnce Deployment) - href: assembly-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: assemblyidentity-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: description-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: deployment-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: compatibleframeworks-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: dependency-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: publisheridentity-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: signature-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: customerrorreporting-element-clickonce-deployment.md - - name: ClickOnce Unmanaged API Reference - href: clickonce-unmanaged-api-reference.md + - name: Publish to Linux App Service >> + href: ../javascript/publish-nodejs-app-azure.md +- name: Visual Studio Installer projects + items: + name: Visual Studio Installer Projects Extension and .NET 6.0 + href: installer-projects-net-core.md +- name: Reference + items: - name: Error - Project type not found href: error-project-type-not-found.md From 4e44d2a4ef23009230593edba448349660322a3a Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:22:50 -0700 Subject: [PATCH 07/42] Update TOC --- docs/deployment/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 7fa476575fb..b9266fd40b9 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -13,7 +13,7 @@ - name: Tutorials expanded: true items: - - name: Deploy a .NET Windows application using ClickOnce + - name: Deploy a .NET Windows application using ClickOnce href: quickstart-deploy-using-clickonce-folder.md - name: Deploy a .NET Framework desktop app using ClickOnce href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md From 80a16b1c5ba26aa67d66ab1fcf890bd74312a93c Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:23:03 -0700 Subject: [PATCH 08/42] move one image file --- .../summary-one-github-secret.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{deployment/media => azure/media/azure-deployment-using-github-actions}/summary-one-github-secret.png (100%) diff --git a/docs/deployment/media/summary-one-github-secret.png b/docs/azure/media/azure-deployment-using-github-actions/summary-one-github-secret.png similarity index 100% rename from docs/deployment/media/summary-one-github-secret.png rename to docs/azure/media/azure-deployment-using-github-actions/summary-one-github-secret.png From 46a58b0102d8fbb2daa4e27e08d0631c2d8abda2 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:28:18 -0700 Subject: [PATCH 09/42] fix toc --- docs/deployment/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index b9266fd40b9..477d73489f6 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -271,7 +271,7 @@ items: - name: Deploy ASP.NET web app href: quickstart-deploy-aspnet-web-app.md - - name: Deploy to a folder, IIS, or Azure + - name: Deploy to a folder, IIS, or Azure href: deploying-applications-services-and-components-resources.md - name: Publish an ASP.NET Core app to Azure >> href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app From 3e1c3b7859064221aa2c98406d2a453b43624151 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:44:07 -0700 Subject: [PATCH 10/42] fix toc --- docs/deployment/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 477d73489f6..1044b716e37 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -297,7 +297,7 @@ href: ../javascript/publish-nodejs-app-azure.md - name: Visual Studio Installer projects items: - name: Visual Studio Installer Projects Extension and .NET 6.0 + - name: Visual Studio Installer Projects Extension and .NET 6.0 href: installer-projects-net-core.md - name: Reference items: From f369f178e32418facfee7a5c5a41a7d44423393f Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:55:54 -0700 Subject: [PATCH 11/42] reorder and move Custom bootstrapper --- docs/deployment/toc.yml | 104 ++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 1044b716e37..7244df957a8 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -6,6 +6,22 @@ href: deploying-applications-services-and-components.md - name: Overview of Publish href: publish-overview.md +- name: Deploy .NET web apps + items: + - name: Deploy ASP.NET web app + href: quickstart-deploy-aspnet-web-app.md + - name: Deploy to a folder, IIS, or Azure + href: deploying-applications-services-and-components-resources.md + - name: Publish an ASP.NET Core app to Azure >> + href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app + - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> + href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions + - name: Get publish settings from IIS + href: tutorial-import-publish-settings-iis.md + - name: Get publish settings from Azure + href: tutorial-import-publish-settings-azure.md + - name: Continuous deployment of ASP.NET Core to Azure with Git >> + href: /azure/app-service/deploy-continuous-deployment - name: Deploy .NET desktop apps (ClickOnce) items: - name: Overview of ClickOnce security and deployment @@ -185,42 +201,6 @@ href: /troubleshoot/developer/visualstudio/ide/troubleshoot-clickonce-deployments?toc=%2Fvisualstudio%2Fdeployment%2Ftoc.json - name: Debug ClickOnce applications that use System.Deployment.application href: debugging-clickonce-applications-that-use-system-deployment-application.md - - name: Custom bootstrapper - items: - - name: Application deployment prerequisites - href: application-deployment-prerequisites.md - - name: Deploy prerequisites for 64-bit applications - href: deploying-prerequisites-for-64-bit-applications.md - - name: Create bootstrapper packages - href: creating-bootstrapper-packages.md - - name: Create a product manifest - href: how-to-create-a-product-manifest.md - - name: Create a package manifest - href: how-to-create-a-package-manifest.md - - name: Create a localized bootstrapper package - href: how-to-create-a-localized-bootstrapper-package.md - - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' - href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md - - name: Product and Package Schema Reference - items: - - name: Overview of Product and Package Schema Reference - href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md - name: ClickOnce Reference items: - name: Overview of ClickOnce Reference @@ -267,22 +247,6 @@ href: customerrorreporting-element-clickonce-deployment.md - name: ClickOnce Unmanaged API Reference href: clickonce-unmanaged-api-reference.md -- name: Deploy .NET web apps - items: - - name: Deploy ASP.NET web app - href: quickstart-deploy-aspnet-web-app.md - - name: Deploy to a folder, IIS, or Azure - href: deploying-applications-services-and-components-resources.md - - name: Publish an ASP.NET Core app to Azure >> - href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app - - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> - href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions - - name: Get publish settings from IIS - href: tutorial-import-publish-settings-iis.md - - name: Get publish settings from Azure - href: tutorial-import-publish-settings-azure.md - - name: Continuous deployment of ASP.NET Core to Azure with Git >> - href: /azure/app-service/deploy-continuous-deployment - name: Deploy C++ apps items: - name: Create an installer package @@ -299,6 +263,42 @@ items: - name: Visual Studio Installer Projects Extension and .NET 6.0 href: installer-projects-net-core.md + - name: Custom bootstrapper + items: + - name: Application deployment prerequisites + href: application-deployment-prerequisites.md + - name: Deploy prerequisites for 64-bit applications + href: deploying-prerequisites-for-64-bit-applications.md + - name: Create bootstrapper packages + href: creating-bootstrapper-packages.md + - name: Create a product manifest + href: how-to-create-a-product-manifest.md + - name: Create a package manifest + href: how-to-create-a-package-manifest.md + - name: Create a localized bootstrapper package + href: how-to-create-a-localized-bootstrapper-package.md + - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' + href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md + - name: Product and Package Schema Reference + items: + - name: Overview of Product and Package Schema Reference + href: product-and-package-schema-reference.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md - name: Reference items: - name: Error - Project type not found From 4ee25b539a11e27499d3f6b3c62df81a34d9893d Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 15:56:34 -0700 Subject: [PATCH 12/42] move Node.js --- docs/deployment/toc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 7244df957a8..d9b86bc58d7 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -255,10 +255,10 @@ href: /windows/msix/package/packaging-uwp-apps - name: Deploy a C++/CLR app using ClickOnce >> href: /cpp/windows/clickonce-deployment-for-visual-cpp-applications - - name: Deploy Node.js apps - items: - - name: Publish to Linux App Service >> - href: ../javascript/publish-nodejs-app-azure.md +- name: Deploy Node.js apps + items: + - name: Publish to Linux App Service >> + href: ../javascript/publish-nodejs-app-azure.md - name: Visual Studio Installer projects items: - name: Visual Studio Installer Projects Extension and .NET 6.0 From 558ab2a526db060c2d89fb759fe38ce1474198a2 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 16:18:06 -0700 Subject: [PATCH 13/42] fix indent --- docs/deployment/toc.yml | 70 ++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index d9b86bc58d7..f128f0e70c3 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -263,42 +263,42 @@ items: - name: Visual Studio Installer Projects Extension and .NET 6.0 href: installer-projects-net-core.md - - name: Custom bootstrapper +- name: Custom bootstrapper + items: + - name: Application deployment prerequisites + href: application-deployment-prerequisites.md + - name: Deploy prerequisites for 64-bit applications + href: deploying-prerequisites-for-64-bit-applications.md + - name: Create bootstrapper packages + href: creating-bootstrapper-packages.md + - name: Create a product manifest + href: how-to-create-a-product-manifest.md + - name: Create a package manifest + href: how-to-create-a-package-manifest.md + - name: Create a localized bootstrapper package + href: how-to-create-a-localized-bootstrapper-package.md + - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' + href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md + - name: Product and Package Schema Reference items: - - name: Application deployment prerequisites - href: application-deployment-prerequisites.md - - name: Deploy prerequisites for 64-bit applications - href: deploying-prerequisites-for-64-bit-applications.md - - name: Create bootstrapper packages - href: creating-bootstrapper-packages.md - - name: Create a product manifest - href: how-to-create-a-product-manifest.md - - name: Create a package manifest - href: how-to-create-a-package-manifest.md - - name: Create a localized bootstrapper package - href: how-to-create-a-localized-bootstrapper-package.md - - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' - href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md - - name: Product and Package Schema Reference - items: - - name: Overview of Product and Package Schema Reference - href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md + - name: Overview of Product and Package Schema Reference + href: product-and-package-schema-reference.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md - name: Reference items: - name: Error - Project type not found From 327fa1c9a36abe1ad04da266f29355f04f9aeb10 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 16:33:30 -0700 Subject: [PATCH 14/42] fix toc --- docs/deployment/toc.yml | 68 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index f128f0e70c3..e987d7b8114 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -264,41 +264,41 @@ - name: Visual Studio Installer Projects Extension and .NET 6.0 href: installer-projects-net-core.md - name: Custom bootstrapper + items: + - name: Application deployment prerequisites + href: application-deployment-prerequisites.md + - name: Deploy prerequisites for 64-bit applications + href: deploying-prerequisites-for-64-bit-applications.md + - name: Create bootstrapper packages + href: creating-bootstrapper-packages.md + - name: Create a product manifest + href: how-to-create-a-product-manifest.md + - name: Create a package manifest + href: how-to-create-a-package-manifest.md + - name: Create a localized bootstrapper package + href: how-to-create-a-localized-bootstrapper-package.md + - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' + href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md + - name: Product and Package Schema Reference items: - - name: Application deployment prerequisites - href: application-deployment-prerequisites.md - - name: Deploy prerequisites for 64-bit applications - href: deploying-prerequisites-for-64-bit-applications.md - - name: Create bootstrapper packages - href: creating-bootstrapper-packages.md - - name: Create a product manifest - href: how-to-create-a-product-manifest.md - - name: Create a package manifest - href: how-to-create-a-package-manifest.md - - name: Create a localized bootstrapper package - href: how-to-create-a-localized-bootstrapper-package.md - - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' - href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md - - name: Product and Package Schema Reference - items: - - name: Overview of Product and Package Schema Reference - href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md + - name: Overview of Product and Package Schema Reference + href: product-and-package-schema-reference.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md - name: Reference items: - name: Error - Project type not found From 9cfbff444c777cdc81d070308dacbf0649332566 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 19 Jul 2023 16:54:04 -0700 Subject: [PATCH 15/42] fix toc again --- docs/deployment/toc.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index e987d7b8114..5ead1fb06a9 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -283,22 +283,22 @@ items: - name: Overview of Product and Package Schema Reference href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md - name: Reference items: - name: Error - Project type not found From 95fdc53c9e35828d6b90223c255ebc059bb8f913 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:15:04 -0700 Subject: [PATCH 16/42] Azure toc and index changes --- docs/azure/index.yml | 83 ++++++++++++++------------------------------ docs/azure/toc.yml | 4 +-- 2 files changed, 28 insertions(+), 59 deletions(-) diff --git a/docs/azure/index.yml b/docs/azure/index.yml index 96e6cbebb47..8934af15fef 100644 --- a/docs/azure/index.yml +++ b/docs/azure/index.yml @@ -18,7 +18,7 @@ landingContent: links: - text: Azure in Visual Studio url: overview-azure-integration.md - - text: Azure SDK for .NET and .NET Core Developers + - text: Azure SDK for .NET url: /dotnet/azure - title: Connect to Azure services linkLists: @@ -28,56 +28,47 @@ landingContent: url: overview-connected-services.md - linkListType: tutorial links: - - text: Azure Active Directory + - text: Active Directory url: /azure/active-directory/develop/vs-active-directory-add-connected-service - - text: Azure Cache for Redis + - text: Redis Cache url: azure-cache-for-redis-add-connected-service.md - - text: Azure Cosmos DB + - text: Cosmos DB url: azure-cosmosdb-add-connected-service.md - - text: Azure Key Vault + - text: Key Vault url: /azure/key-vault/vs-key-vault-add-connected-service - - text: Azure SignalR + - text: SignalR url: azure-signalr-add-connected-service.md - - text: Azure SQL Database + - text: SQL Database url: azure-sql-database-add-connected-service.md - - text: Azure Storage + - text: Storage url: vs-azure-tools-connected-services-storage.md - title: Deploy to Azure linkLists: - linkListType: tutorial links: - - text: Deploy an ASP.NET Core app to Azure - url: /azure/app-service/app-service-web-get-started-dotnet-framework - - text: Deploy an ASP.NET web app to Azure + - text: ASP.NET Core to App Service + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET to App Service (.NET Framework) + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET web app to Azure Web Apps url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - - text: Deploy an ASP.NET Core web app to Azure Container Apps + - text: ASP.NET Core web app to Azure Container Apps url: /azure/container-apps/deploy-visual-studio + - text: Azure Logic Apps + url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio + - text: Azure Functions + url: /azure/azure-functions/functions-create-your-first-function-visual-studio + + + - title: Continuous integration + linkLists: + - linkListType: tutorial + links: - text: Continuous deployment to Azure with Visual Studio and Git url: /azure/app-service/deploy-continuous-deployment - text: Continuous deployment to Azure with Azure Pipelines url: /azure/devops/pipelines/get-started-yaml - - title: Azure Web Apps, App Service, and Azure Functions - linkLists: - - linkListType: tutorial - links: - - text: Build and host a web app with Azure App Service - url: /azure/app-service/app-service-web-get-started-dotnet - - text: Build automated, scalable workflows with Azure Logic Apps - url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio - - text: Process events with Azure Functions - url: /azure/azure-functions/functions-create-your-first-function-visual-studio - - - title: Container development - linkLists: - - linkListType: overview - links: - - text: Container development - url: ../containers/index.yml - - text: Container tools in Visual Studio - url: ../containers/overview.md - - text: Kubernetes tools - url: /visualstudio/bridge/overview-bridge-to-kubernetes - + - title: Debug Azure services and analyze performance linkLists: - linkListType: tutorial @@ -90,32 +81,10 @@ landingContent: url: vs-azure-tools-debug-cloud-services-virtual-machines.md - text: Measure performance for cloud services in Azure url: vs-azure-tools-performance-profiling-cloud-services.md + - title: Azure Cloud Services linkLists: - linkListType: how-to-guide links: - text: Create and deploy to Cloud Services (extended support) url: cloud-services-extended-support.md - - text: Create and configure Azure cloud service projects - url: vs-azure-tools-azure-project-create.md - - text: Debug cloud services locally and in Azure - url: vs-azure-tools-debugging-cloud-services-overview.md - - text: Analyze performance with the Visual Studio profiler - url: vs-azure-tools-performance-profiling-cloud-services.md - - text: Deploy a cloud service to Azure - url: vs-azure-tools-publishing-a-cloud-service.md - - text: Monitor and diagnose cloud services and virtual machines running in Azure - url: vs-azure-tools-diagnostics-for-cloud-services-and-virtual-machines.md - - - title: Other Resources - linkLists: - - linkListType: how-to-guide - links: - - text: Azure Resource Group - url: /azure/azure-resource-manager/vs-azure-tools-resource-groups-deployment-projects-create-deploy - - text: Data Lake Analytics - url: /azure/data-lake-analytics/data-lake-analytics-data-lake-tools-get-started - - text: Stream Analytics - url: /azure/stream-analytics/stream-analytics-quick-create-vs - - text: Service Fabric - url: /azure/service-fabric/service-fabric-get-started diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 3e4e7fdc20f..9500d9c6cfb 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -63,10 +63,10 @@ href: how-to-sign-in-with-azure-subscription.md - name: Azure Cloud Services development items: + - name: Use Cloud Services (extended support) + href: cloud-services-extended-support.md - name: Work with cloud service projects items: - - name: Use Cloud Services (extended support) - href: cloud-services-extended-support.md - name: Create an Azure cloud service project href: vs-azure-tools-azure-project-create.md - name: Manage roles in Azure cloud services From fa9b6e071581b1f76acdbc0d5e4ea9d7f751aefc Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:17:03 -0700 Subject: [PATCH 17/42] About Azure development --- docs/azure/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azure/index.yml b/docs/azure/index.yml index 8934af15fef..dad4c5db03e 100644 --- a/docs/azure/index.yml +++ b/docs/azure/index.yml @@ -12,7 +12,7 @@ metadata: ms.author: ghogen landingContent: - - title: Work with Azure in Visual Studio + - title: About Azure development linkLists: - linkListType: overview links: From dd2d27769a4b970ba8e32ddbf4ba276313e83f0b Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:27:14 -0700 Subject: [PATCH 18/42] Add Azure card to Deployment landing page --- docs/deployment/index.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/deployment/index.yml b/docs/deployment/index.yml index 71782653af3..a11ed47a929 100644 --- a/docs/deployment/index.yml +++ b/docs/deployment/index.yml @@ -89,3 +89,24 @@ landingContent: url: ../containers/index.yml - text: Publish NuGet packages url: /nuget + + # Card + - title: Deploy to Azure + linkLists: tutorial + links: + - text: ASP.NET Core app to App Service >> + href: /azure/app-service/quickstart-dotnetcore?tabs=net70&pivots=development-environment-vs#publish-your-web-app + - text: ASP.NET to App Service (.NET Framework) + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET web app to Azure Web Apps + url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs + - text: ASP.NET Core web app to Azure Container Apps + url: /azure/container-apps/deploy-visual-studio + - text: Azure Logic Apps + url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio + - text: Azure Functions + url: /azure/azure-functions/functions-create-your-first-function-visual-studio + - text: Deploy with GitHub Actions + href: ../azure/azure-deployment-using-github-actions.md + - text: Deploy Entity Framework Core app with GitHub Actions + href: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file From 54f96c856c36d014b9b10a0ee1df898ad4312e56 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:30:22 -0700 Subject: [PATCH 19/42] fix yaml syntax --- docs/deployment/index.yml | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/docs/deployment/index.yml b/docs/deployment/index.yml index a11ed47a929..0fd1621ab77 100644 --- a/docs/deployment/index.yml +++ b/docs/deployment/index.yml @@ -92,21 +92,22 @@ landingContent: # Card - title: Deploy to Azure - linkLists: tutorial - links: - - text: ASP.NET Core app to App Service >> - href: /azure/app-service/quickstart-dotnetcore?tabs=net70&pivots=development-environment-vs#publish-your-web-app - - text: ASP.NET to App Service (.NET Framework) - url: /azure/app-service/app-service-web-get-started-dotnet - - text: ASP.NET web app to Azure Web Apps - url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - - text: ASP.NET Core web app to Azure Container Apps - url: /azure/container-apps/deploy-visual-studio - - text: Azure Logic Apps - url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio - - text: Azure Functions - url: /azure/azure-functions/functions-create-your-first-function-visual-studio - - text: Deploy with GitHub Actions - href: ../azure/azure-deployment-using-github-actions.md - - text: Deploy Entity Framework Core app with GitHub Actions - href: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file + linkLists: + - linkListType: tutorial + links: + - text: ASP.NET Core app to App Service >> + url: /azure/app-service/quickstart-dotnetcore?tabs=net70&pivots=development-environment-vs#publish-your-web-app + - text: ASP.NET to App Service (.NET Framework) + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET web app to Azure Web Apps + url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs + - text: ASP.NET Core web app to Azure Container Apps + url: /azure/container-apps/deploy-visual-studio + - text: Azure Logic Apps + url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio + - text: Azure Functions + url: /azure/azure-functions/functions-create-your-first-function-visual-studio + - text: Deploy with GitHub Actions + url: ../azure/azure-deployment-using-github-actions.md + - text: Deploy Entity Framework Core app with GitHub Actions + url: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file From eb7cdf13515b3d121b283daf9534cbb2af58baaf Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:43:08 -0700 Subject: [PATCH 20/42] set contextual toc --- docs/azure/toc.yml | 10 ++++------ docs/deployment/index.yml | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 9500d9c6cfb..251eb18f2d3 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -1,7 +1,7 @@ - name: Azure Development with Visual Studio href: index.yml expanded: true -- name: Overview +- name: Overview of Azure Deployment href: overview-azure-integration.md - name: Connect to Azure services items: @@ -31,11 +31,9 @@ - name: Azure Container Apps >> href: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - name: Azure App Service >> - href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?view=aspnetcore-2.1&preserve-view=true + href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - name: Azure Container Registry href: ../containers/hosting-web-apps-in-docker.md - - name: Azure Virtual Machine - href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - name: Publish Azure Function Apps items: - name: Azure Function App >> @@ -52,9 +50,9 @@ - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions href: end-to-end-deployment-entity-framework-core-github-actions.md - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core - href: /azure/app-service/deploy-continuous-deployment + href: /azure/app-service/deploy-continuous-deployment?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - name: Continuous deployment to Azure with Azure Pipelines - href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true + href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true&toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - name: How to items: - name: Get publish profile from Azure App Service diff --git a/docs/deployment/index.yml b/docs/deployment/index.yml index 0fd1621ab77..428ecf32de3 100644 --- a/docs/deployment/index.yml +++ b/docs/deployment/index.yml @@ -96,18 +96,18 @@ landingContent: - linkListType: tutorial links: - text: ASP.NET Core app to App Service >> - url: /azure/app-service/quickstart-dotnetcore?tabs=net70&pivots=development-environment-vs#publish-your-web-app - - text: ASP.NET to App Service (.NET Framework) - url: /azure/app-service/app-service-web-get-started-dotnet - - text: ASP.NET web app to Azure Web Apps - url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - - text: ASP.NET Core web app to Azure Container Apps - url: /azure/container-apps/deploy-visual-studio - - text: Azure Logic Apps - url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio - - text: Azure Functions - url: /azure/azure-functions/functions-create-your-first-function-visual-studio - - text: Deploy with GitHub Actions - url: ../azure/azure-deployment-using-github-actions.md - - text: Deploy Entity Framework Core app with GitHub Actions - url: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file + url: /azure/app-service/quickstart-dotnetcore?tabs=net70&pivots=development-environment-vs&toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json#publish-your-web-app + - text: ASP.NET to App Service (.NET Framework) >> + url: /azure/app-service/app-service-web-get-started-dotnet?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - text: ASP.NET web app to Azure Web Apps >> + url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - text: ASP.NET Core web app to Azure Container Apps >> + url: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - text: Azure Logic Apps >> + url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - text: Azure Functions >> + url: /azure/azure-functions/functions-create-your-first-function-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + - text: Deploy with GitHub Actions >> + url: /visualstudio/azure/azure-deployment-using-github-actions.md + - text: Deploy Entity Framework Core app with GitHub Actions >> + url: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file From 19a9fbfafc2f162ddebf62e5482fb183b836850c Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 12:47:17 -0700 Subject: [PATCH 21/42] remove .md --- docs/deployment/index.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/deployment/index.yml b/docs/deployment/index.yml index 428ecf32de3..feee91d58f2 100644 --- a/docs/deployment/index.yml +++ b/docs/deployment/index.yml @@ -108,6 +108,6 @@ landingContent: - text: Azure Functions >> url: /azure/azure-functions/functions-create-your-first-function-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - text: Deploy with GitHub Actions >> - url: /visualstudio/azure/azure-deployment-using-github-actions.md + url: /visualstudio/azure/azure-deployment-using-github-actions - text: Deploy Entity Framework Core app with GitHub Actions >> - url: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file + url: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions \ No newline at end of file From c3143bc0a89b7a1fa2462f84b8de26d0ccc5e0e6 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 13:36:59 -0700 Subject: [PATCH 22/42] for now, remove contextual toc markup --- docs/azure/index.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/azure/index.yml b/docs/azure/index.yml index dad4c5db03e..b51e19e2928 100644 --- a/docs/azure/index.yml +++ b/docs/azure/index.yml @@ -20,6 +20,23 @@ landingContent: url: overview-azure-integration.md - text: Azure SDK for .NET url: /dotnet/azure + - title: Deploy to Azure + linkLists: + - linkListType: tutorial + links: + - text: ASP.NET Core to App Service + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET to App Service (.NET Framework) + url: /azure/app-service/app-service-web-get-started-dotnet + - text: ASP.NET web app to Azure Web Apps + url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs + - text: ASP.NET Core web app to Azure Container Apps + url: /azure/container-apps/deploy-visual-studio + - text: Azure Logic Apps + url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio + - text: Azure Functions + url: /azure/azure-functions/functions-create-your-first-function-visual-studio + - title: Connect to Azure services linkLists: - linkListType: overview @@ -42,23 +59,6 @@ landingContent: url: azure-sql-database-add-connected-service.md - text: Storage url: vs-azure-tools-connected-services-storage.md - - title: Deploy to Azure - linkLists: - - linkListType: tutorial - links: - - text: ASP.NET Core to App Service - url: /azure/app-service/app-service-web-get-started-dotnet - - text: ASP.NET to App Service (.NET Framework) - url: /azure/app-service/app-service-web-get-started-dotnet - - text: ASP.NET web app to Azure Web Apps - url: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - - text: ASP.NET Core web app to Azure Container Apps - url: /azure/container-apps/deploy-visual-studio - - text: Azure Logic Apps - url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio - - text: Azure Functions - url: /azure/azure-functions/functions-create-your-first-function-visual-studio - - title: Continuous integration linkLists: From 6a71293655cd2f76b42711c72e8254ef6f049038 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 13:51:33 -0700 Subject: [PATCH 23/42] incorp Mike's feedback --- docs/deployment/toc.yml | 511 ++++++++++++++++++++-------------------- 1 file changed, 258 insertions(+), 253 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 5ead1fb06a9..199f8f4a682 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -22,231 +22,276 @@ href: tutorial-import-publish-settings-azure.md - name: Continuous deployment of ASP.NET Core to Azure with Git >> href: /azure/app-service/deploy-continuous-deployment -- name: Deploy .NET desktop apps (ClickOnce) +- name: Deploy .NET desktop apps items: - - name: Overview of ClickOnce security and deployment - href: clickonce-security-and-deployment.md - - name: Tutorials + - name: ClickOnce expanded: true items: - - name: Deploy a .NET Windows application using ClickOnce - href: quickstart-deploy-using-clickonce-folder.md - - name: Deploy a .NET Framework desktop app using ClickOnce - href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md - - name: Create an installer package (Windows desktop) - href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop - - name: Package a desktop app for Microsoft Store >> - href: /windows/msix/desktop/desktop-to-uwp-packaging-dot-net - - name: Build .NET Windows ClickOnce applications from the command line - href: building-dotnet-clickonce-applications-from-the-command-line.md - - name: Build .NET Framework ClickOnce applications from the Command Line - href: building-clickonce-applications-from-the-command-line.md - - name: ClickOnce for .NET - items: - - name: ClickOnce for .NET on Windows - href: clickonce-deployment-dotnet.md - - name: Access ClickOnce deployment properties for .NET - href: access-clickonce-deployment-properties-dotnet.md - - name: Choose a ClickOnce deployment strategy - href: choosing-a-clickonce-deployment-strategy.md - - name: ClickOnce cache overview - href: clickonce-cache-overview.md - - name: ClickOnce and application settings - href: clickonce-and-application-settings.md - - name: ClickOnce deployment on Windows Vista - href: clickonce-deployment-on-windows-vista.md - - name: Localization - items: - - name: Localize ClickOnce applications - href: localizing-clickonce-applications.md - - name: Publish a Project that has a specific locale - href: how-to-publish-a-project-that-has-a-specific-locale.md - - name: Security - items: - - name: Secure ClickOnce applications - href: securing-clickonce-applications.md - - name: ClickOnce and Authenticode - href: clickonce-and-authenticode.md - - name: Trusted application deployment overview - href: trusted-application-deployment-overview.md - - name: Code access security for ClickOnce applications - href: code-access-security-for-clickonce-applications.md - - name: Enable ClickOnce security settings - href: how-to-enable-clickonce-security-settings.md - - name: Set a security zone for a ClickOnce application - href: how-to-set-a-security-zone-for-a-clickonce-application.md - - name: Set custom permissions for a ClickOnce application - href: how-to-set-custom-permissions-for-a-clickonce-application.md - - name: Add a trusted publisher to a client computer - href: how-to-add-a-trusted-publisher-to-a-client-computer-for-clickonce-applications.md - - name: Re-sign application and deployment manifests - href: how-to-re-sign-application-and-deployment-manifests.md - - name: Configure the ClickOnce trust prompt behavior - href: how-to-configure-the-clickonce-trust-prompt-behavior.md - - name: Sign setup files with SignTool.exe (ClickOnce) - href: how-to-sign-setup-files-with-signtool-exe-clickonce.md - - name: Publish - items: - - name: Publish ClickOnce applications - href: publishing-clickonce-applications.md - - name: Publish a ClickOnce application using the Publish Wizard - href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md - - name: Create ClickOnce applications for others to deploy - href: creating-clickonce-applications-for-others-to-deploy.md - - name: Deploy apps for test and production servers without resigning - href: deploying-clickonce-applications-for-testing-and-production-without-resigning.md - - name: Access local and remote data in ClickOnce applications - href: accessing-local-and-remote-data-in-clickonce-applications.md - - name: Deploy COM components with ClickOnce - href: deploying-com-components-with-clickonce.md - - name: Build ClickOnce applications from the command line - href: building-clickonce-applications-from-the-command-line.md - - name: Specify where Visual Studio copies the files - href: how-to-specify-where-visual-studio-copies-the-files.md - - name: Specify the location where end users will install from - href: how-to-specify-the-location-where-end-users-will-install-from.md - - name: Specify the ClickOnce offline or online install mode - href: how-to-specify-the-clickonce-offline-or-online-install-mode.md - - name: Set the ClickOnce publish version - href: how-to-set-the-clickonce-publish-version.md - - name: Automatically increment the ClickOnce publish version - href: how-to-automatically-increment-the-clickonce-publish-version.md - - name: Specify files + - name: Overview of ClickOnce security and deployment + href: clickonce-security-and-deployment.md + - name: Tutorials + expanded: true items: - - name: Specify which files are published by ClickOnce - href: how-to-specify-which-files-are-published-by-clickonce.md - - name: Include a data file in a ClickOnce application - href: how-to-include-a-data-file-in-a-clickonce-application.md - - name: Install prerequisites with a ClickOnce application - href: how-to-install-prerequisites-with-a-clickonce-application.md - - name: Include prerequisites with a ClickOnce application - href: how-to-include-prerequisites-with-a-clickonce-application.md - - name: Manage updates for a ClickOnce application - href: how-to-manage-updates-for-a-clickonce-application.md - - name: Change the publish language for a ClickOnce application - href: how-to-change-the-publish-language-for-a-clickonce-application.md - - name: Specify a Start Menu name for a ClickOnce application - href: how-to-specify-a-start-menu-name-for-a-clickonce-application.md - - name: Specify Technical Support + - name: Deploy a .NET Windows application using ClickOnce + href: quickstart-deploy-using-clickonce-folder.md + - name: Deploy a .NET Framework desktop app using ClickOnce + href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md + - name: Create an installer package (Windows desktop) + href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop + - name: Build .NET Windows ClickOnce applications from the command line + href: building-dotnet-clickonce-applications-from-the-command-line.md + - name: Build .NET Framework ClickOnce applications from the Command Line + href: building-clickonce-applications-from-the-command-line.md + - name: ClickOnce for .NET items: - - name: Specify a link for Technical Support - href: how-to-specify-a-link-for-technical-support.md - - name: Specify a support URL for individual prerequisites - href: how-to-specify-a-support-url-for-individual-prerequisites-in-a-clickonce-deployment.md - - name: Publish Page + - name: ClickOnce for .NET on Windows + href: clickonce-deployment-dotnet.md + - name: Access ClickOnce deployment properties for .NET + href: access-clickonce-deployment-properties-dotnet.md + - name: Choose a ClickOnce deployment strategy + href: choosing-a-clickonce-deployment-strategy.md + - name: ClickOnce cache overview + href: clickonce-cache-overview.md + - name: ClickOnce and application settings + href: clickonce-and-application-settings.md + - name: ClickOnce deployment on Windows Vista + href: clickonce-deployment-on-windows-vista.md + - name: Localization items: - - name: Specify a publish page for a ClickOnce application - href: how-to-specify-a-publish-page-for-a-clickonce-application.md - - name: Customize the default web page for a ClickOnce application - href: how-to-customize-the-default-web-page-for-a-clickonce-application.md - - name: Enable AutoStart for CD Installations - href: how-to-enable-autostart-for-cd-installations.md - - name: Create file associations For a ClickOnce application - href: how-to-create-file-associations-for-a-clickonce-application.md - - name: Retrieve query string information in an online ClickOnce application - href: how-to-retrieve-query-string-information-in-an-online-clickonce-application.md - - name: Disable URL activation + - name: Localize ClickOnce applications + href: localizing-clickonce-applications.md + - name: Publish a Project that has a specific locale + href: how-to-publish-a-project-that-has-a-specific-locale.md + - name: Security items: - - name: Disable URL activation of ClickOnce applications by using the Designer - href: how-to-disable-url-activation-of-clickonce-applications-by-using-the-designer.md - - name: Disable URL activation of ClickOnce applications - href: how-to-disable-url-activation-of-clickonce-applications.md - - name: Deploy apps that can run on multiple versions of the .NET Framework - href: how-to-use-clickonce-to-deploy-applications-that-can-run-on-multiple-versions-of-the-dotnet-framework.md - - name: Publish a WPF application with visual styles enabled - href: how-to-publish-a-wpf-application-with-visual-styles-enabled.md - - name: Download Assemblies on Demand + - name: Secure ClickOnce applications + href: securing-clickonce-applications.md + - name: ClickOnce and Authenticode + href: clickonce-and-authenticode.md + - name: Trusted application deployment overview + href: trusted-application-deployment-overview.md + - name: Code access security for ClickOnce applications + href: code-access-security-for-clickonce-applications.md + - name: Enable ClickOnce security settings + href: how -to-enable-clickonce-security-settings.md + - name: Set a security zone for a ClickOnce application + href: how-to-set-a-security-zone-for-a-clickonce-application.md + - name: Set custom permissions for a ClickOnce application + href: how-to-set-custom-permissions-for-a-clickonce-application.md + - name: Add a trusted publisher to a client computer + href: how-to-add-a-trusted-publisher-to-a-client-computer-for-clickonce-applications.md + - name: Re-sign application and deployment manifests + href: how-to-re-sign-application-and-deployment-manifests.md + - name: Configure the ClickOnce trust prompt behavior + href: how-to-configure-the-clickonce-trust-prompt-behavior.md + - name: Sign setup files with SignTool.exe (ClickOnce) + href: how-to-sign-setup-files-with-signtool-exe-clickonce.md + - name: Publish items: - - name: 'Walkthrough: Download assemblies on demand using the Designer' - href: walkthrough-downloading-assemblies-on-demand-with-the-clickonce-deployment-api-using-the-designer.md - - name: 'Walkthrough: Download assemblies on demand' - href: walkthrough-downloading-assemblies-on-demand-with-the-clickonce-deployment-api.md - - name: 'Walkthrough: Download satellite assemblies on demand using the Designer' - href: walkthrough-downloading-satellite-assemblies-on-demand-with-the-clickonce-deployment-api-using-the-designer.md - - name: Manual Deployment + - name: Publish ClickOnce applications + href: publishing-clickonce-applications.md + - name: Publish a ClickOnce application using the Publish Wizard + href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md + - name: Create ClickOnce applications for others to deploy + href: creating-clickonce-applications-for-others-to-deploy.md + - name: Deploy apps for test and production servers without resigning + href: deploying-clickonce-applications-for-testing-and-production-without-resigning.md + - name: Access local and remote data in ClickOnce applications + href: accessing-local-and-remote-data-in-clickonce-applications.md + - name: Deploy COM components with ClickOnce + href: deploying-com-components-with-clickonce.md + - name: Build ClickOnce applications from the command line + href: building-clickonce-applications-from-the-command-line.md + - name: Specify where Visual Studio copies the files + href: how-to-specify-where-visual-studio-copies-the-files.md + - name: Specify the location where end users will install from + href: how-to-specify-the-location-where-end-users-will-install-from.md + - name: Specify the ClickOnce offline or online install mode + href: how-to-specify-the-clickonce-offline-or-online-install-mode.md + - name: Set the ClickOnce publish version + href: how-to-set-the-clickonce-publish-version.md + - name: Automatically increment the ClickOnce publish version + href: how-to-automatically-increment-the-clickonce-publish-version.md + - name: Specify files + items: + - name: Specify which files are published by ClickOnce + href: how-to-specify-which-files-are-published-by-clickonce.md + - name: Include a data file in a ClickOnce application + href: how-to-include-a-data-file-in-a-clickonce-application.md + - name: Install prerequisites with a ClickOnce application + href: how-to-install-prerequisites-with-a-clickonce-application.md + - name: Include prerequisites with a ClickOnce application + href: how-to-include-prerequisites-with-a-clickonce-application.md + - name: Manage updates for a ClickOnce application + href: how-to-manage-updates-for-a-clickonce-application.md + - name: Change the publish language for a ClickOnce application + href: how-to-change-the-publish-language-for-a-clickonce-application.md + - name: Specify a Start Menu name for a ClickOnce application + href: how-to-specify-a-start-menu-name-for-a-clickonce-application.md + - name: Specify Technical Support + items: + - name: Specify a link for Technical Support + href: how-to-specify-a-link-for-technical-support.md + - name: Specify a support URL for individual prerequisites + href: how-to-specify-a-support-url-for-individual-prerequisites-in-a-clickonce-deployment.md + - name: Publish Page + items: + - name: Specify a publish page for a ClickOnce application + href: how-to-specify-a-publish-page-for-a-clickonce-application.md + - name: Customize the default web page for a ClickOnce application + href: how-to-customize-the-default-web-page-for-a-clickonce-application.md + - name: Enable AutoStart for CD Installations + href: how-to-enable-autostart-for-cd-installations.md + - name: Create file associations For a ClickOnce application + href: how-to-create-file-associations-for-a-clickonce-application.md + - name: Retrieve query string information in an online ClickOnce application + href: how-to-retrieve-query-string-information-in-an-online-clickonce-application.md + - name: Disable URL activation + items: + - name: Disable URL activation of ClickOnce applications by using the Designer + href: how-to-disable-url-activation-of-clickonce-applications-by-using-the-designer.md + - name: Disable URL activation of ClickOnce applications + href: how-to-disable-url-activation-of-clickonce-applications.md + - name: Deploy apps that can run on multiple versions of the .NET Framework + href: how-to-use-clickonce-to-deploy-applications-that-can-run-on-multiple-versions-of-the-dotnet-framework.md + - name: Publish a WPF application with visual styles enabled + href: how-to-publish-a-wpf-application-with-visual-styles-enabled.md + - name: Download Assemblies on Demand + items: + - name: 'Walkthrough: Download assemblies on demand using the Designer' + href: walkthrough-downloading-assemblies-on-demand-with-the-clickonce-deployment-api-using-the-designer.md + - name: 'Walkthrough: Download assemblies on demand' + href: walkthrough-downloading-assemblies-on-demand-with-the-clickonce-deployment-api.md + - name: 'Walkthrough: Download satellite assemblies on demand using the Designer' + href: walkthrough-downloading-satellite-assemblies-on-demand-with-the-clickonce-deployment-api-using-the-designer.md + - name: Manual Deployment + items: + - name: 'Walkthrough: Manually deploy a ClickOnce application' + href: walkthrough-manually-deploying-a-clickonce-application.md + - name: 'Walkthrough: Manually deploy an app that does not require re-signing' + href: walkthrough-manually-deploying-a-clickonce-app-no-re-signing-required.md + - name: 'Walkthrough: Download satellite assemblies on demand' + href: walkthrough-downloading-satellite-assemblies-on-demand-with-the-clickonce-deployment-api.md + - name: 'Walkthrough: Create a custom installer' + href: walkthrough-creating-a-custom-installer-for-a-clickonce-application.md + - name: Update Strategy items: - - name: 'Walkthrough: Manually deploy a ClickOnce application' - href: walkthrough-manually-deploying-a-clickonce-application.md - - name: 'Walkthrough: Manually deploy an app that does not require re-signing' - href: walkthrough-manually-deploying-a-clickonce-app-no-re-signing-required.md - - name: 'Walkthrough: Download satellite assemblies on demand' - href: walkthrough-downloading-satellite-assemblies-on-demand-with-the-clickonce-deployment-api.md - - name: 'Walkthrough: Create a custom installer' - href: walkthrough-creating-a-custom-installer-for-a-clickonce-application.md - - name: Update Strategy - items: - - name: Choose a ClickOnce update strategy - href: choosing-a-clickonce-update-strategy.md - - name: How ClickOnce performs application updates - href: how-clickonce-performs-application-updates.md - - name: Check for application updates programmatically - href: how-to-check-for-application-updates-programmatically-using-the-clickonce-deployment-api.md - - name: Specify an alternate location for deployment updates - href: how-to-specify-an-alternate-location-for-deployment-updates.md - - name: ClickOnce deployment samples and walkthroughs - href: clickonce-deployment-samples-and-walkthroughs.md - - name: Troubleshooting + - name: Choose a ClickOnce update strategy + href: choosing-a-clickonce-update-strategy.md + - name: How ClickOnce performs application updates + href: how-clickonce-performs-application-updates.md + - name: Check for application updates programmatically + href: how-to-check-for-application-updates-programmatically-using-the-clickonce-deployment-api.md + - name: Specify an alternate location for deployment updates + href: how-to-specify-an-alternate-location-for-deployment-updates.md + - name: ClickOnce deployment samples and walkthroughs + href: clickonce-deployment-samples-and-walkthroughs.md + - name: Troubleshooting + items: + - name: Troubleshoot ClickOnce deployments + href: troubleshooting-clickonce-deployments.md + - name: Set a custom log file location for ClickOnce deployment errors + href: how-to-set-a-custom-log-file-location-for-clickonce-deployment-errors.md + - name: Specify verbose log files for ClickOnce deployments + href: how-to-specify-verbose-log-files-for-clickonce-deployments.md + - name: Server and client configuration issues in ClickOnce deployments + href: server-and-client-configuration-issues-in-clickonce-deployments.md + - name: Security, versioning, and manifest issues in ClickOnce deployments + href: security-versioning-and-manifest-issues-in-clickonce-deployments.md + - name: Troubleshoot specific errors in ClickOnce deployments + href: /troubleshoot/developer/visualstudio/ide/troubleshoot-clickonce-deployments?toc=%2Fvisualstudio%2Fdeployment%2Ftoc.json + - name: Debug ClickOnce applications that use System.Deployment.application + href: debugging-clickonce-applications-that-use-system-deployment-application.md + - name: ClickOnce Reference + items: + - name: Overview of ClickOnce Reference + href: clickonce-reference.md + - name: ClickOnce application Manifest + items: + - name: Overview of ClickOnce application Manifest + href: clickonce-application-manifest.md + - name: Element (ClickOnce application) + href: assembly-element-clickonce-application.md + - name: Element (ClickOnce application) + href: assemblyidentity-element-clickonce-application.md + - name: Element (ClickOnce application) + href: trustinfo-element-clickonce-application.md + - name: Element (ClickOnce application) + href: entrypoint-element-clickonce-application.md + - name: Element (ClickOnce application) + href: dependency-element-clickonce-application.md + - name: Element (ClickOnce application) + href: file-element-clickonce-application.md + - name: Element (ClickOnce application) + href: fileassociation-element-clickonce-application.md + - name: ClickOnce Deployment Manifest + items: + - name: Overview of ClickOnce Deployment Manifest + href: clickonce-deployment-manifest.md + - name: Element (ClickOnce Deployment) + href: assembly-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: assemblyidentity-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: description-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: deployment-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: compatibleframeworks-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: dependency-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: publisheridentity-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: signature-element-clickonce-deployment.md + - name: Element (ClickOnce Deployment) + href: customerrorreporting-element-clickonce-deployment.md + - name: ClickOnce Unmanaged API Reference + href: clickonce-unmanaged-api-reference.md + - name: Visual Studio Installer projects items: - - name: Troubleshoot ClickOnce deployments - href: troubleshooting-clickonce-deployments.md - - name: Set a custom log file location for ClickOnce deployment errors - href: how-to-set-a-custom-log-file-location-for-clickonce-deployment-errors.md - - name: Specify verbose log files for ClickOnce deployments - href: how-to-specify-verbose-log-files-for-clickonce-deployments.md - - name: Server and client configuration issues in ClickOnce deployments - href: server-and-client-configuration-issues-in-clickonce-deployments.md - - name: Security, versioning, and manifest issues in ClickOnce deployments - href: security-versioning-and-manifest-issues-in-clickonce-deployments.md - - name: Troubleshoot specific errors in ClickOnce deployments - href: /troubleshoot/developer/visualstudio/ide/troubleshoot-clickonce-deployments?toc=%2Fvisualstudio%2Fdeployment%2Ftoc.json - - name: Debug ClickOnce applications that use System.Deployment.application - href: debugging-clickonce-applications-that-use-system-deployment-application.md - - name: ClickOnce Reference + - name: Visual Studio Installer Projects Extension and .NET 6.0 + href: installer-projects-net-core.md + - name: Custom bootstrapper items: - - name: Overview of ClickOnce Reference - href: clickonce-reference.md - - name: ClickOnce application Manifest - items: - - name: Overview of ClickOnce application Manifest - href: clickonce-application-manifest.md - - name: Element (ClickOnce application) - href: assembly-element-clickonce-application.md - - name: Element (ClickOnce application) - href: assemblyidentity-element-clickonce-application.md - - name: Element (ClickOnce application) - href: trustinfo-element-clickonce-application.md - - name: Element (ClickOnce application) - href: entrypoint-element-clickonce-application.md - - name: Element (ClickOnce application) - href: dependency-element-clickonce-application.md - - name: Element (ClickOnce application) - href: file-element-clickonce-application.md - - name: Element (ClickOnce application) - href: fileassociation-element-clickonce-application.md - - name: ClickOnce Deployment Manifest + - name: Application deployment prerequisites + href: application-deployment-prerequisites.md + - name: Deploy prerequisites for 64-bit applications + href: deploying-prerequisites-for-64-bit-applications.md + - name: Create bootstrapper packages + href: creating-bootstrapper-packages.md + - name: Create a product manifest + href: how-to-create-a-product-manifest.md + - name: Create a package manifest + href: how-to-create-a-package-manifest.md + - name: Create a localized bootstrapper package + href: how-to-create-a-localized-bootstrapper-package.md + - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' + href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md + - name: Product and Package Schema Reference items: - - name: Overview of ClickOnce Deployment Manifest - href: clickonce-deployment-manifest.md - - name: Element (ClickOnce Deployment) - href: assembly-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: assemblyidentity-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: description-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: deployment-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: compatibleframeworks-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: dependency-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: publisheridentity-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: signature-element-clickonce-deployment.md - - name: Element (ClickOnce Deployment) - href: customerrorreporting-element-clickonce-deployment.md - - name: ClickOnce Unmanaged API Reference - href: clickonce-unmanaged-api-reference.md + - name: Overview of Product and Package Schema Reference + href: product-and-package-schema-reference.md + - name: Element (Bootstrapper) + href: product-element-bootstrapper.md + - name: Element (Bootstrapper) + href: package-element-bootstrapper.md + - name: Element (Bootstrapper) + href: relatedproducts-element-bootstrapper.md + - name: Element (Bootstrapper) + href: installchecks-element-bootstrapper.md + - name: Element (Bootstrapper) + href: commands-element-bootstrapper.md + - name: Element (Bootstrapper) + href: packagefiles-element-bootstrapper.md + - name: Element (Bootstrapper) + href: strings-element-bootstrapper.md + - name: Element (Bootstrapper) + href: schedules-element-bootstrapper.md + - name: Microsoft Store + items: + - name: Package a desktop app for Microsoft Store >> + href: /windows/msix/desktop/desktop-to-uwp-packaging-dot-net - name: Deploy C++ apps items: - name: Create an installer package @@ -259,46 +304,6 @@ items: - name: Publish to Linux App Service >> href: ../javascript/publish-nodejs-app-azure.md -- name: Visual Studio Installer projects - items: - - name: Visual Studio Installer Projects Extension and .NET 6.0 - href: installer-projects-net-core.md -- name: Custom bootstrapper - items: - - name: Application deployment prerequisites - href: application-deployment-prerequisites.md - - name: Deploy prerequisites for 64-bit applications - href: deploying-prerequisites-for-64-bit-applications.md - - name: Create bootstrapper packages - href: creating-bootstrapper-packages.md - - name: Create a product manifest - href: how-to-create-a-product-manifest.md - - name: Create a package manifest - href: how-to-create-a-package-manifest.md - - name: Create a localized bootstrapper package - href: how-to-create-a-localized-bootstrapper-package.md - - name: 'Walkthrough: Create a custom bootstrapper with a privacy prompt' - href: walkthrough-creating-a-custom-bootstrapper-to-show-a-privacy-prompt.md - - name: Product and Package Schema Reference - items: - - name: Overview of Product and Package Schema Reference - href: product-and-package-schema-reference.md - - name: Element (Bootstrapper) - href: product-element-bootstrapper.md - - name: Element (Bootstrapper) - href: package-element-bootstrapper.md - - name: Element (Bootstrapper) - href: relatedproducts-element-bootstrapper.md - - name: Element (Bootstrapper) - href: installchecks-element-bootstrapper.md - - name: Element (Bootstrapper) - href: commands-element-bootstrapper.md - - name: Element (Bootstrapper) - href: packagefiles-element-bootstrapper.md - - name: Element (Bootstrapper) - href: strings-element-bootstrapper.md - - name: Element (Bootstrapper) - href: schedules-element-bootstrapper.md - name: Reference items: - name: Error - Project type not found From 590ab0da3db932750eaa02283e90309bc7ab47f0 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 13:55:29 -0700 Subject: [PATCH 24/42] incorp Mike's feedback 2 --- docs/deployment/toc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 199f8f4a682..5b887d4ca6c 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -36,8 +36,6 @@ href: quickstart-deploy-using-clickonce-folder.md - name: Deploy a .NET Framework desktop app using ClickOnce href: how-to-publish-a-clickonce-application-using-the-publish-wizard.md - - name: Create an installer package (Windows desktop) - href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop - name: Build .NET Windows ClickOnce applications from the command line href: building-dotnet-clickonce-applications-from-the-command-line.md - name: Build .NET Framework ClickOnce applications from the Command Line @@ -250,8 +248,10 @@ href: clickonce-unmanaged-api-reference.md - name: Visual Studio Installer projects items: - - name: Visual Studio Installer Projects Extension and .NET 6.0 - href: installer-projects-net-core.md + - name: Visual Studio Installer Projects Extension and .NET 6.0 + href: installer-projects-net-core.md + - name: Create an installer package (Windows desktop) + href: deploying-applications-services-and-components.md#create-an-installer-package-windows-desktop - name: Custom bootstrapper items: - name: Application deployment prerequisites From 6b4ede876a4a551b599d472c3d10ca61be2cab61 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 13:56:10 -0700 Subject: [PATCH 25/42] remove contextual toc markup --- docs/azure/toc.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 251eb18f2d3..8dedecfb8ed 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -16,7 +16,7 @@ - name: Add Azure CosmosDB href: azure-cosmosdb-add-connected-service.md - name: Add Azure Key Vault - href: /azure/key-vault/vs-key-vault-add-connected-service?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/key-vault/vs-key-vault-add-connected-service - name: Add Azure SignalR href: azure-signalr-add-connected-service.md - name: Add Azure SQL Database @@ -29,9 +29,9 @@ - name: Publish ASP.NET web app items: - name: Azure Container Apps >> - href: /azure/container-apps/deploy-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/container-apps/deploy-visual-studio - name: Azure App Service >> - href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - name: Azure Container Registry href: ../containers/hosting-web-apps-in-docker.md - name: Publish Azure Function Apps @@ -50,9 +50,9 @@ - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions href: end-to-end-deployment-entity-framework-core-github-actions.md - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core - href: /azure/app-service/deploy-continuous-deployment?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/app-service/deploy-continuous-deployment - name: Continuous deployment to Azure with Azure Pipelines - href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true&toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true - name: How to items: - name: Get publish profile from Azure App Service @@ -122,19 +122,19 @@ - name: Work with Azure storage items: - name: Get started with Storage Explorer - href: /azure/vs-azure-tools-storage-manage-with-storage-explorer?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-manage-with-storage-explorer - name: Configure and Use the Storage Emulator with Visual Studio - href: /azure/vs-azure-tools-storage-emulator-using?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-emulator-using - name: Constructing filter strings for the Table Designer href: vs-azure-tools-table-designer-construct-filter-strings.md - name: Manage Azure blob storage resources with Storage Explorer - href: /azure/vs-azure-tools-storage-explorer-blobs?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-explorer-blobs - name: Use Storage Explorer with Azure file storage - href: /azure/vs-azure-tools-storage-explorer-files?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-explorer-files - name: Microsoft Azure Storage Explorer release notes - href: /azure/vs-azure-tools-storage-explorer-relnotes?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-explorer-relnotes - name: Storage Explorer accessibility - href: /azure/vs-azure-tools-storage-explorer-accessibility?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json + href: /azure/vs-azure-tools-storage-explorer-accessibility - name: Cloud Explorer items: - name: Browse and manage storage resources by using Server Explorer From d60f40f72813f30b8414413d13992cdaa02cc64a Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 14:04:03 -0700 Subject: [PATCH 26/42] fix typo --- docs/deployment/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 5b887d4ca6c..0c1fa0e510c 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -71,7 +71,7 @@ - name: Code access security for ClickOnce applications href: code-access-security-for-clickonce-applications.md - name: Enable ClickOnce security settings - href: how -to-enable-clickonce-security-settings.md + href: how-to-enable-clickonce-security-settings.md - name: Set a security zone for a ClickOnce application href: how-to-set-a-security-zone-for-a-clickonce-application.md - name: Set custom permissions for a ClickOnce application From c2d97e3e9de39360f3aa650894f1417fb53b5618 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 15:46:18 -0700 Subject: [PATCH 27/42] tweak toc --- docs/azure/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 8dedecfb8ed..f2379a5a7d5 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -34,9 +34,9 @@ href: /aspnet/core/tutorials/publish-to-azure-webapp-using-vs - name: Azure Container Registry href: ../containers/hosting-web-apps-in-docker.md -- name: Publish Azure Function Apps +- name: Publish Azure Function app items: - - name: Azure Function App >> + - name: Azure Function Apps >> href: /azure/azure-functions/functions-create-your-first-function-visual-studio - name: Continuous integration expanded: true From 52ba916e690a937c8769c8ae6e53cf77c53ddde3 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Fri, 21 Jul 2023 15:48:58 -0700 Subject: [PATCH 28/42] Move How To section --- docs/azure/toc.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index f2379a5a7d5..b2cbbea0e25 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -53,12 +53,6 @@ href: /azure/app-service/deploy-continuous-deployment - name: Continuous deployment to Azure with Azure Pipelines href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true -- name: How to - items: - - name: Get publish profile from Azure App Service - href: how-to-get-publish-profile-from-azure-app-service.md - - name: Sign in with your Azure subscription - href: how-to-sign-in-with-azure-subscription.md - name: Azure Cloud Services development items: - name: Use Cloud Services (extended support) @@ -156,3 +150,9 @@ href: vs-active-directory-webapi-what-happened.md - name: Diagnose errors during authentication href: vs-active-directory-error.md +- name: How to + items: + - name: Get publish profile from Azure App Service + href: how-to-get-publish-profile-from-azure-app-service.md + - name: Sign in with your Azure subscription + href: how-to-sign-in-with-azure-subscription.md From 9ba55af5c03ca871850e38c95a7cc6224e51744a Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 24 Jul 2023 12:29:52 -0700 Subject: [PATCH 29/42] incorporate feedback --- docs/azure/toc.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index b2cbbea0e25..47cd7f0df03 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -47,12 +47,10 @@ href: overview-github-actions.md - name: Deploy to Azure using GitHub Actions href: azure-deployment-using-github-actions.md - - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions - href: end-to-end-deployment-entity-framework-core-github-actions.md - - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core - href: /azure/app-service/deploy-continuous-deployment - - name: Continuous deployment to Azure with Azure Pipelines - href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true + - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core + href: /azure/app-service/deploy-continuous-deployment + - name: Continuous deployment to Azure with Azure Pipelines + href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true - name: Azure Cloud Services development items: - name: Use Cloud Services (extended support) @@ -156,3 +154,5 @@ href: how-to-get-publish-profile-from-azure-app-service.md - name: Sign in with your Azure subscription href: how-to-sign-in-with-azure-subscription.md + - name: Deploy an ASP.NET Core app with Entity Framework to Azure with GitHub Actions + href: end-to-end-deployment-entity-framework-core-github-actions.md From 0cbae7ed53ef421b817471c1a1ca5afc0ce135d0 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 24 Jul 2023 14:21:05 -0700 Subject: [PATCH 30/42] fix warnings --- docs/deployment/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/deployment/toc.yml b/docs/deployment/toc.yml index 0c1fa0e510c..19f6d3a9980 100644 --- a/docs/deployment/toc.yml +++ b/docs/deployment/toc.yml @@ -14,8 +14,8 @@ href: deploying-applications-services-and-components-resources.md - name: Publish an ASP.NET Core app to Azure >> href: /azure/app-service/quickstart-dotnetcore?tabs=net60&pivots=development-environment-vs#publish-your-web-app - - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions >> - href: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions + - name: Deploy an ASP.NET Core app with Entity Framework to Azure using GitHub Actions + href: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md - name: Get publish settings from IIS href: tutorial-import-publish-settings-iis.md - name: Get publish settings from Azure From d32f8ace992e907a1da83086ca426e8197306060 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 24 Jul 2023 14:21:18 -0700 Subject: [PATCH 31/42] fix warnings --- docs/deployment/index.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/deployment/index.yml b/docs/deployment/index.yml index feee91d58f2..b81b65cd270 100644 --- a/docs/deployment/index.yml +++ b/docs/deployment/index.yml @@ -107,7 +107,7 @@ landingContent: url: /azure/logic-apps/quickstart-create-logic-apps-with-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - text: Azure Functions >> url: /azure/azure-functions/functions-create-your-first-function-visual-studio?toc=/visualstudio/azure/toc.json&bc=/visualstudio/azure/breadcrumb/toc.json - - text: Deploy with GitHub Actions >> - url: /visualstudio/azure/azure-deployment-using-github-actions + - text: Deploy with GitHub Actions + url: ../azure/azure-deployment-using-github-actions.md - text: Deploy Entity Framework Core app with GitHub Actions >> - url: /visualstudio/azure/end-to-end-deployment-entity-framework-core-github-actions \ No newline at end of file + url: ../azure/end-to-end-deployment-entity-framework-core-github-actions.md \ No newline at end of file From 38b49ac4babb6cdc2edcf9b11e8ea68153e823a9 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 24 Jul 2023 14:55:15 -0700 Subject: [PATCH 32/42] simplify toc --- docs/azure/toc.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index 47cd7f0df03..a6b4ee0c87e 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -1,8 +1,11 @@ - name: Azure Development with Visual Studio href: index.yml expanded: true -- name: Overview of Azure Deployment - href: overview-azure-integration.md +- name: Overview + expanded: true + items: + - name: Publish to Azure + href: overview-azure-integration.md - name: Connect to Azure services items: - name: Connected Services overview @@ -47,9 +50,9 @@ href: overview-github-actions.md - name: Deploy to Azure using GitHub Actions href: azure-deployment-using-github-actions.md - - name: Continuous deployment to Azure with Visual Studio and Git with ASP.NET Core + - name: ASP.NET Core and Git >> href: /azure/app-service/deploy-continuous-deployment - - name: Continuous deployment to Azure with Azure Pipelines + - name: Azure Pipelines >> href: /azure/devops/pipelines/get-started-yaml?view=vsts&preserve-view=true - name: Azure Cloud Services development items: From ee712a201d2180d5d353cd58eba68292d2282598 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 24 Jul 2023 15:32:33 -0700 Subject: [PATCH 33/42] move CS overview --- docs/azure/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/azure/toc.yml b/docs/azure/toc.yml index a6b4ee0c87e..10e69415fae 100644 --- a/docs/azure/toc.yml +++ b/docs/azure/toc.yml @@ -4,12 +4,12 @@ - name: Overview expanded: true items: + - name: Connected Services + href: overview-connected-services.md - name: Publish to Azure href: overview-azure-integration.md - name: Connect to Azure services items: - - name: Connected Services overview - href: overview-connected-services.md - name: Add Azure Active Directory (Azure AD) href: vs-active-directory-add-connected-service.md - name: Add Azure App Insights From 0f8502aed9a83cedca645f5596c1a3e7a781a892 Mon Sep 17 00:00:00 2001 From: evanwindom Date: Wed, 26 Jul 2023 10:30:15 -0700 Subject: [PATCH 34/42] Merge text of admin-inventory.md into admin-responsibilities.md --- subscriptions/admin-responsibilities.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/subscriptions/admin-responsibilities.md b/subscriptions/admin-responsibilities.md index 1e7b8da253c..7f767688cd3 100644 --- a/subscriptions/admin-responsibilities.md +++ b/subscriptions/admin-responsibilities.md @@ -4,7 +4,7 @@ author: evanwindom ms.author: amast manager: shve ms.assetid: b26b31dc-1eeb-4871-9ce6-2c980e703f1e -ms.date: 07/07/2022 +ms.date: 07/26/2023 ms.topic: conceptual description: Learn about responsibilities of subscriptions admins. --- @@ -21,6 +21,21 @@ A Visual Studio subscriptions admin has four key responsibilities: 3. **Accurately inventory your pre-production environment.** This is essential to ensure all users who interact with Visual Studio-licensed software are appropriately licensed with their own Visual Studio subscription. 4. **Track user assignment changes and acquire additional licenses on schedule.** Microsoft Volume Licensing (VL) Agreements and MPSA give you flexibility in how you use and assign Visual Studio subscriptions. In return, you're expected to track changes to software usage and user assignments and process orders for additional licenses on the schedule outlined in the agreement. To help with this responsibility, there is a [Maximum Usage report](maximum-usage.md) you can run in the Visual Studio Subscription Administration Portal. +### Inventory of preproduction environment + +Visual Studio subscriptions simplify asset management by counting users rather than devices. + +Visual Studio admins must assign Visual Studio Subscriptions to **specific, named individuals**. Names that don't identify individual subscribers such as Dev1, Dev2, or the use of team names such as "FeatureTeam" are **not allowed**. + +Here are some ways to simplify taking inventory of your preproduction environment: ++ Review your user assignments. Microsoft provides a website called the [Visual Studio Administration Portal](https://manage.visualstudio.com/) to help you manage and track Visual Studio subscription assignments. ++ Use your on-premises or cloud-based Active Directory to list users. If you use Active Directory to manage user access, you may be able to identify development and test users by their directory membership. ++ Use automated tools to inventory systems. You may also need to use a software inventory tool to help manage your software assets and distinguish preproduction environments from production ones. Many customers with Microsoft System Center create naming conventions to help automate this part of the inventory process. ++ Get help with manual reconciliation. Enlist your staff to help reconcile your dev/test users with your development and test environment. + +> [!NOTE] +> Visual Studio subscriptions software is not licensed for production environments, including any environment accessed by end users for more than acceptance testing or feedback, an environment connecting to a production database, supporting disaster recovery or production backup, or used for production during peak periods of activity. Exceptions to this include specific benefits for certain subscription levels, outlined in the [Visual Studio Licensing White Paper](https://aka.ms/vslicensing). + ## Benefits and limitations Visual Studio subscriptions allow developers to install and use software to design, develop, test, evaluate, and demonstrate other software. Visual Studio Subscriptions software is not licensed for production environments. From 08629e8066c7c7fa7f4b377cdef38124ba9f7188 Mon Sep 17 00:00:00 2001 From: evanwindom Date: Wed, 26 Jul 2023 10:33:27 -0700 Subject: [PATCH 35/42] Remove admin-inventory.md from TOC and repo --- subscriptions/admin-inventory.md | 46 -------------------------------- subscriptions/toc.yml | 2 -- 2 files changed, 48 deletions(-) delete mode 100644 subscriptions/admin-inventory.md diff --git a/subscriptions/admin-inventory.md b/subscriptions/admin-inventory.md deleted file mode 100644 index eadc1745efb..00000000000 --- a/subscriptions/admin-inventory.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Preproduction inventory in Visual Studio subscription | Visual Studio Marketplace -author: evanwindom -ms.author: amast -manager: shve -ms.assetid: 7d74e113-8fb2-490e-8502-48cce7b1327a -ms.date: 03/17/2023 -ms.topic: conceptual -description: Learn about admins' responsibility to conduct preproduction inventories ---- - -# Inventory of preproduction environment - -Visual Studio subscriptions simplify asset management by counting users rather than devices. - -Visual Studio admins must assign Visual Studio Subscriptions to **specific, named individuals**. Names that don't identify individual subscribers such as Dev1, Dev2, or the use of team names such as "FeatureTeam" are **not allowed**. - -Here are some ways to simplify taking inventory of your preproduction environment: -+ Review your user assignments. Microsoft provides a website called the [Visual Studio Administration Portal](https://manage.visualstudio.com/) to help you manage and track Visual Studio subscription assignments. -+ Use your on-premises or cloud-based Active Directory to list users. If you use Active Directory to manage user access, you may be able to identify development and test users by their directory membership. -+ Use automated tools to inventory systems. You may also need to use a software inventory tool to help manage your software assets and distinguish preproduction environments from production ones. Many customers with Microsoft System Center create naming conventions to help automate this part of the inventory process. -+ Get help with manual reconciliation. Enlist your staff to help reconcile your dev/test users with your development and test environment. - -> [!NOTE] -> Visual Studio subscriptions software is not licensed for production environments, including any environment accessed by end users for more than acceptance testing or feedback, an environment connecting to a production database, supporting disaster recovery or production backup, or used for production during peak periods of activity. Exceptions to this include specific benefits for certain subscription levels, outlined in the [Visual Studio Licensing White Paper](https://aka.ms/vslicensing). - -## Resources - -+ [Visual Studio licensing white paper](https://visualstudio.microsoft.com/wp-content/uploads/2019/06/Visual-Studio-Licensing-Whitepaper-May-2019.pdf) -+ [Visual Studio subscriptions support](https://aka.ms/vsadminhelp) -+ [Volume Licensing terms](https://www.microsoft.com/licensing/product-licensing/products.aspx) - -## See also - -+ [Visual Studio documentation](/visualstudio/) -+ [Azure DevOps Services documentation](/azure/devops/) -+ [Azure documentation](/azure/) -+ [Microsoft 365 documentation](/microsoft-365/) - -## Next steps - -Learn more about responsibilities for admins: -+ [Admin responsibilities](admin-responsibilities.md) -+ [Manage large teams and external contractors](manage-teams.md) -+ [Track user assignments and process orders](assignments-orders.md) -+ Use [Maximum Usage](maximum-usage.md) to track purchase commitments \ No newline at end of file diff --git a/subscriptions/toc.yml b/subscriptions/toc.yml index e436c557612..09078a5eab3 100644 --- a/subscriptions/toc.yml +++ b/subscriptions/toc.yml @@ -132,8 +132,6 @@ items: - name: Administrator responsibilities href: admin-responsibilities.md - - name: Pre-production inventory - href: admin-inventory.md - name: Manage large teams and external contractors href: manage-teams.md - name: Track user assignments and process orders From a935c6026cb69f2cdf3ebfe8b4a187d4bc0fb1e7 Mon Sep 17 00:00:00 2001 From: evanwindom Date: Wed, 26 Jul 2023 10:35:25 -0700 Subject: [PATCH 36/42] Add redirection for admin-inventory.md to admin-responsibilities --- .openpublishing.redirection.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 803a045f7be..0c67caae90d 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -18013,6 +18013,11 @@ "source_path": "subscriptions/search-license.md", "redirect_url": "/visualstudio/subscriptions", "redirect_document_id": false - } + }, + { + "source_path": "subscriptions/admin-inventory.md", + "redirect_url": "/visualstudio/subscriptions/admin-responsibilities", + "redirect_document_id": false + } ] } From 2f9b68663dd91a3117df1f46af0049be454f165d Mon Sep 17 00:00:00 2001 From: evanwindom Date: Wed, 26 Jul 2023 10:51:03 -0700 Subject: [PATCH 37/42] Minor tweaks to admin-responsibilities for acrolinx scoring --- subscriptions/admin-responsibilities.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/subscriptions/admin-responsibilities.md b/subscriptions/admin-responsibilities.md index 7f767688cd3..fe4036527fc 100644 --- a/subscriptions/admin-responsibilities.md +++ b/subscriptions/admin-responsibilities.md @@ -16,10 +16,13 @@ As an admin, you can manage subscriptions for your organization. The admin role A Visual Studio subscriptions admin has four key responsibilities: -1. **Understand the benefits and restrictions of Visual Studio subscriptions.** Correctly understanding your benefits can enable you to reduce hardware costs by using cloud services, and reduce software costs with per-user licenses for pre-production environments. +1. **Understand the benefits and restrictions of Visual Studio subscriptions.** Correctly understanding your benefits can enable you to reduce hardware costs by using cloud services, and reduce software costs with per-user licenses for preproduction environments. 2. **Assign Visual Studio subscriptions to specific, named individuals and encourage usage.** Your contract requires that Visual Studio subscriptions be assigned to specific, named individuals. Follow up with your subscribers to ensure they access and take full advantage of the benefits included in their Visual Studio subscription. -3. **Accurately inventory your pre-production environment.** This is essential to ensure all users who interact with Visual Studio-licensed software are appropriately licensed with their own Visual Studio subscription. -4. **Track user assignment changes and acquire additional licenses on schedule.** Microsoft Volume Licensing (VL) Agreements and MPSA give you flexibility in how you use and assign Visual Studio subscriptions. In return, you're expected to track changes to software usage and user assignments and process orders for additional licenses on the schedule outlined in the agreement. To help with this responsibility, there is a [Maximum Usage report](maximum-usage.md) you can run in the Visual Studio Subscription Administration Portal. +3. **Accurately inventory your pre-production environment.** This inventory is essential to ensure all users who interact with Visual Studio-licensed software are appropriately licensed with their own Visual Studio subscription. +4. **Track user assignment changes and acquire additional licenses on schedule.** Microsoft Volume Licensing (VL) Agreements and MPSA give you flexibility in how you use and assign Visual Studio subscriptions. In return, you're expected to: ++ Manage changes to software usage ++ Manage changes to user assignments ++ Process orders for more licenses on the schedule outlined in the agreement. To help with this responsibility, there's a [Maximum Usage report](maximum-usage.md) you can run in the Visual Studio Subscription Administration Portal. ### Inventory of preproduction environment @@ -38,15 +41,15 @@ Here are some ways to simplify taking inventory of your preproduction environmen ## Benefits and limitations -Visual Studio subscriptions allow developers to install and use software to design, develop, test, evaluate, and demonstrate other software. Visual Studio Subscriptions software is not licensed for production environments. +Visual Studio subscriptions allow developers to install and use software to design, develop, test, evaluate, and demonstrate other software. Visual Studio Subscriptions software isn't licensed for production environments. | Category | Benefit or limitation | |-----------|--------------------- | -| User-based licensing | MSDN Platforms and all levels of Visual Studio subscriptions are licensed on a per-user basis. Each development team member that will interact (install, configure, or access) with the software included with these products and services requires their own Visual Studio subscription. | -| Unlimited installations | Each licensed user may install and use the software on any number of devices to design, develop, test, evaluate, and demonstrate software. The exception is Microsoft Office, which is licensed for one desktop. Visual Studio-licensed software can be installed and used at work, home, school, and on devices at a customer’s office or on dedicated hardware hosted by a third party. | -| Not intended for production environments | Visual Studio subscriptions software is not licensed for production environments, including any environment accessed by end users for more than acceptance testing or feedback, an environment connecting to a production database, supporting disaster recovery or production backup, or used for production during peak periods of activity. Exceptions to this include specific benefits for certain subscription levels, outlined in the [Visual Studio Licensing White Paper](https://aka.ms/vslicensing). | -| License reassignment | When a user leaves a team and no longer requires a license, you may reassign the license to another user if at least 90 days have passed since it was assigned to the previous user. When you reassign a license, any product keys that were already used will still be available but will not be replaced. For organizations that have Enterprise Agreements (EA), any benefits that were used by the original user, such as Pluralsight training, will be reset. | -| Exception for end users | At the end of a software development project, end users typically review an application and determine whether it meets the necessary criteria for release. This process is called user acceptance testing (UAT). Team members such as a business sponsor or a product manager can act as proxies for end users. End users who do not have a Visual Studio subscription may access the software for UAT if use of the software otherwise complies with all Visual Studio licensing terms. It's rare that someone whose primary role is designing, developing, or testing the software would also qualify as an “end user”. | +| User-based licensing | MSDN Platforms and all levels of Visual Studio subscriptions are licensed on a per-user basis. Each development team member that interacts (install, configure, or access) with the software included with these products and services requires their own Visual Studio subscription. | +| Unlimited installations | Each licensed user may install and use the software on any number of devices to design, develop, test, evaluate, and demonstrate software. The exception is Microsoft Office, which is licensed for one desktop. Visual Studio-licensed software can be used at work, home, school, and on devices at a customer’s office or on dedicated hardware hosted by a third party. | +| Not intended for production environments | Visual Studio subscriptions software isn't licensed for production environments. This limitation includes: Any environment accessed by end users for more than acceptance testing or feedback, any environment connecting to a production database, supporting disaster recovery or production backup, use for production during peak periods of activity. Exceptions to this include specific benefits for certain subscription levels, outlined in the [Visual Studio Licensing White Paper](https://aka.ms/vslicensing). | +| License reassignment | When a user no longer requires a license, you may reassign the license to another user if at least 90 days have passed since it was assigned to the previous user. When you reassign a license, any product keys that were already used are available but won't be replaced. For organizations that have Enterprise Agreements (EA), any benefits that were used by the original user, such as Pluralsight training, are reset. | +| Exception for end users | At the end of a software development project, end users typically review an application and determine whether it meets the necessary criteria for release. This process is called user acceptance testing (UAT). Team members such as a business sponsor or a product manager can act as proxies for end users. End users who don't have a Visual Studio subscription may access the software for UAT if use of the software otherwise complies with all Visual Studio licensing terms. It's rare that someone whose primary role is designing, developing, or testing the software would also qualify as an “end user”. | ## Resources @@ -62,7 +65,7 @@ Visual Studio subscriptions allow developers to install and use software to desi ## Next steps Learn more about responsibilities for admins: -+ [Inventory of pre-production environment](admin-inventory.md) ++ [Inventory of preproduction environment](admin-inventory.md) + [Manage large teams and external contractors](manage-teams.md) + [Track user assignments and process orders](assignments-orders.md) + Use [Maximum Usage](maximum-usage.md) to track purchase commitments From 1cc3f68c11606b72da6da5e7a7f19c2ec26c3c5f Mon Sep 17 00:00:00 2001 From: Megha Anand <88059806+anandmeg@users.noreply.github.com> Date: Wed, 26 Jul 2023 13:33:45 -0700 Subject: [PATCH 38/42] Add azure images compatible with dev box --- docs/install/using-visual-studio-vm.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/install/using-visual-studio-vm.md b/docs/install/using-visual-studio-vm.md index d517da64534..4702a1879db 100644 --- a/docs/install/using-visual-studio-vm.md +++ b/docs/install/using-visual-studio-vm.md @@ -32,7 +32,8 @@ Images for the most recent major versions, Visual Studio 2022, Visual Studio 201 | Release version | Editions | Product version | |----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-----------------------| | [Visual Studio 2022](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2022?tab=Overview) | Enterprise, Community | Version 17.2 | -| [Visual Studio 2019: Latest (Version 16.11)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019latest?tab=Overview) | Enterprise, Community | Version 16.11 | +| [Visual Studio 2022 (compatible with Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2022?tab=Overview) | Enterprise, Professional | Version 17.5 | +| [Visual Studio 2019: Latest (Version 16.11)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudioplustools?exp=ubp8&tab=Overview) | Enterprise, Community | Version 16.11 | | [Visual Studio 2017: Latest (Version 15.9)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 15.9 | | [Visual Studio 2015: Latest (Update 3)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 14.0.25431.01 | From 79b330d62ac27d5cb9a8d7a6884b8fc3486dfda3 Mon Sep 17 00:00:00 2001 From: evanwindom <32342809+evanwindom@users.noreply.github.com> Date: Wed, 26 Jul 2023 14:14:25 -0700 Subject: [PATCH 39/42] Add anonymization data to subscription-removed.md, update TOC (#11489) * Add anonymization data to subscription-removed.md, update TOC * Minor changes to text of subscription-removed.md for acrolinx * Remove anonymization.md from repo * Add redirection for anonymization.md * Apply missing heading formatting --------- Co-authored-by: Dennis Rea --- .openpublishing.redirection.json | 7 ++- subscriptions/anonymization.md | 63 --------------------------- subscriptions/subscription-removed.md | 22 +++++++++- subscriptions/toc.yml | 2 - 4 files changed, 27 insertions(+), 67 deletions(-) delete mode 100644 subscriptions/anonymization.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 0c67caae90d..28bdd113ed4 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -18018,6 +18018,11 @@ "source_path": "subscriptions/admin-inventory.md", "redirect_url": "/visualstudio/subscriptions/admin-responsibilities", "redirect_document_id": false - } + }, + { + "source_path": "subscriptions/anonymization.md", + "redirect_url": "/visualstudio/subscriptions/subscription-removed", + "redirect_document_id": false + } ] } diff --git a/subscriptions/anonymization.md b/subscriptions/anonymization.md deleted file mode 100644 index d4854c4b3b2..00000000000 --- a/subscriptions/anonymization.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Anonymization of Visual Studio subscriber data | Microsoft Docs -author: evanwindom -ms.author: amast -manager: shve -ms.assetid: ce5fc8a4-484c-4df6-97c3-cb60174fb66b -ms.date: 07/07/2022 -ms.topic: conceptual -description: Learn how subscriber data is anonymized when access to subscriptions is lost. ---- - -# Anonymization of Visual Studio subscriber information - -When an event occurs that blocks a subscriber's use of a subscription, the user's personal information such as name and sign-in account is scrambled to render it unusable. This "anonymization" is done to safeguard the subscriber's personal information. These events can include: -+ Expiration of the subscription -+ Deletion of the subscribers sign-in account - -[!INCLUDE [GDPR-related guidance](includes/gdpr-intro-sentence.md)] - -## When does anonymization occur? - -Events that make a subscription unusable to a subscriber will trigger anonymization. How quickly the anonymization occurs depends on the type of subscription and the triggering event. See the table below for more information. - -| Subscription Type | Event triggering anonymization | When anonymization occurs | -|--------------------|--------------------------------|---------------------------| -| Visual Studio Dev Essentials | Subscriber opts out of the program or doesn't accept the terms of use | 30 days | -| Visual Studio subscriptions purchased through the Microsoft Store (retail) | Subscription expires or isn't activated | 360 days | -| Visual Studio subscriptions acquired through Volume License, Visual Studio Marketplace (cloud subscriptions), or programs such as MPN | Subscription expires or isn't assigned to a user | 180 days | -| All subscriptions | An Azure Active Directory account or Microsoft Account (MSA) used to sign into the subscription is closed | Immediately | -| All subscriptions | A subscriber is removed from the tenant that is associated with the Azure Active Directory account | Immediately | - -## FAQ - -### Q: Does the anonymization of the subscriber's personal information cause them to lose access to the subscription? - -A: No. Anonymization occurs after access to the subscription has already occurred. - -### Q: I'm an admin for my organization's subscriptions. If one of my subscriber's information is anonymized, can I reassign that subscription to another user? - -A: Yes. A subscription can be reassigned if these criteria are met: -+ The subscription hasn't expired. -+ A minimum of 90 days have passed since the subscription was last assigned to a subscriber. For example, if a subscription was assigned to a subscriber on June 1, it can't be reassigned until at least August 30. - -### Q: How can I prevent anonymization caused by deleting a sign-in email address? - -A: There are two ways to prevent the issue: -+ Deploy a single identity management system--either MSA or Azure Active Directory--but not both. -+ Associate the Azure Active Directory and MSA identities via the tenant. - -## Support resources - -For assistance with sales, subscriptions, accounts, and billing for Visual Studio Subscriptions, see Visual Studio [Subscriptions support](https://aka.ms/vssubscriberhelp). - -## See also - -+ [Visual Studio documentation](/visualstudio/) -+ [Azure DevOps documentation](/azure/devops/) -+ [Azure documentation](/azure/) -+ [Microsoft 365 documentation](/microsoft-365/) - -## Next steps - -Learn how to prevent anonymization by [associating MSA and Azure Active Directory identities](/azure/active-directory/b2b/add-users-administrator). \ No newline at end of file diff --git a/subscriptions/subscription-removed.md b/subscriptions/subscription-removed.md index 670564ad12c..9bcc4918c92 100644 --- a/subscriptions/subscription-removed.md +++ b/subscriptions/subscription-removed.md @@ -4,7 +4,7 @@ author: evanwindom ms.author: amast manager: shve ms.assetid: 34eaceda-f5db-41d6-bc23-ecf55fe1768e -ms.date: 07/25/2023 +ms.date: 07/26/2023 ms.topic: troubleshooting ms.custom: kr2b-contr-experiment description: Learn what happens when your admin removes your Visual Studio subscription. This information includes how your benefits change and support resources. @@ -70,6 +70,26 @@ If you're a subscriptions admin, you might occasionally see in your dashboard th If the subscription is removed, the subscriber loses access to the subscription. If a subscriber is removed from an Azure AD group, their subscription information is permanently removed within 180 days. If a subscriber closes their MSA, their information is removed immediately. +### Anonymization of Visual Studio subscriber information + +When an event occurs that blocks a subscriber's use of a subscription, the user's personal information such as name and sign-in account is scrambled to render it unusable. This "anonymization" is done to safeguard the subscriber's personal information. These events can include: ++ Expiration of the subscription ++ Deletion of the subscribers sign-in account + +[!INCLUDE [GDPR-related guidance](includes/gdpr-intro-sentence.md)] + +### When does anonymization occur? + +Events that make a subscription unusable to a subscriber triggers anonymization. How quickly the anonymization occurs depends on the type of subscription and the triggering event. + +| Subscription Type | Event triggering anonymization | When anonymization occurs | +|--------------------|--------------------------------|---------------------------| +| Visual Studio Dev Essentials | Subscriber opts out of the program or doesn't accept the terms of use | 30 days | +| Visual Studio subscriptions purchased through the Microsoft Store (retail) | Subscription expires or isn't activated | 360 days | +| Visual Studio subscriptions acquired through Volume License, Visual Studio Marketplace (cloud subscriptions), or programs such as MPN | Subscription expires or isn't assigned to a user | 180 days | +| All subscriptions | An Azure Active Directory account or Microsoft Account (MSA) used to sign into the subscription is closed | Immediately | +| All subscriptions | A subscriber is removed from the tenant that is associated with the Azure Active Directory account | Immediately | + ## Support resources + For assistance with sales, subscriptions, accounts and billing for Visual Studio Subscriptions, contact [Visual Studio subscriptions support](https://my.visualstudio.com/gethelp). diff --git a/subscriptions/toc.yml b/subscriptions/toc.yml index 09078a5eab3..167208544ba 100644 --- a/subscriptions/toc.yml +++ b/subscriptions/toc.yml @@ -38,8 +38,6 @@ href: use-connected-identities.md - name: Sign in problems href: sign-in-issues.md - - name: Anonymizations of subscriber data - href: anonymization.md - name: Subscriptions portal overview href: using-the-subscriber-portal.md - name: Manage your subscriptions From 20294a7ef92dd03a4e6a83c6404f810291d387b7 Mon Sep 17 00:00:00 2001 From: Megha Anand <88059806+anandmeg@users.noreply.github.com> Date: Wed, 26 Jul 2023 14:27:55 -0700 Subject: [PATCH 40/42] Add VS 2019 azure images compatible with dev box --- docs/install/using-visual-studio-vm.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/install/using-visual-studio-vm.md b/docs/install/using-visual-studio-vm.md index 4702a1879db..d34bbb40b7c 100644 --- a/docs/install/using-visual-studio-vm.md +++ b/docs/install/using-visual-studio-vm.md @@ -32,8 +32,9 @@ Images for the most recent major versions, Visual Studio 2022, Visual Studio 201 | Release version | Editions | Product version | |----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-----------------------| | [Visual Studio 2022](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2022?tab=Overview) | Enterprise, Community | Version 17.2 | -| [Visual Studio 2022 (compatible with Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2022?tab=Overview) | Enterprise, Professional | Version 17.5 | -| [Visual Studio 2019: Latest (Version 16.11)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudioplustools?exp=ubp8&tab=Overview) | Enterprise, Community | Version 16.11 | +| [Visual Studio 2022 (compatible with Microsoft Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudioplustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 17.5 | +| [Visual Studio 2019: Latest (Version 16.11)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019latest?tab=Overview) | Enterprise, Community | Version 16.11 | +| [Visual Studio 2019 (compatible with Microsoft Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019plustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 16.11 | | [Visual Studio 2017: Latest (Version 15.9)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 15.9 | | [Visual Studio 2015: Latest (Update 3)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 14.0.25431.01 | From a6a471edbd9351ba65e519e56c0d91e6e39585d9 Mon Sep 17 00:00:00 2001 From: Megha Anand <88059806+anandmeg@users.noreply.github.com> Date: Wed, 26 Jul 2023 14:32:16 -0700 Subject: [PATCH 41/42] Fix wording --- docs/install/using-visual-studio-vm.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install/using-visual-studio-vm.md b/docs/install/using-visual-studio-vm.md index d34bbb40b7c..4e090d3c27e 100644 --- a/docs/install/using-visual-studio-vm.md +++ b/docs/install/using-visual-studio-vm.md @@ -32,9 +32,9 @@ Images for the most recent major versions, Visual Studio 2022, Visual Studio 201 | Release version | Editions | Product version | |----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|-----------------------| | [Visual Studio 2022](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2022?tab=Overview) | Enterprise, Community | Version 17.2 | -| [Visual Studio 2022 (compatible with Microsoft Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudioplustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 17.5 | +| [Visual Studio 2022 (Microsoft Dev Box compatible)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudioplustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 17.5 | | [Visual Studio 2019: Latest (Version 16.11)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019latest?tab=Overview) | Enterprise, Community | Version 16.11 | -| [Visual Studio 2019 (compatible with Microsoft Dev Box)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019plustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 16.11 | +| [Visual Studio 2019 (Microsoft Dev Box compatible)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio2019plustools?exp=ubp8&tab=Overview) | Enterprise, Professional | Version 16.11 | | [Visual Studio 2017: Latest (Version 15.9)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 15.9 | | [Visual Studio 2015: Latest (Update 3)](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftvisualstudio.visualstudio?tab=Overview) | Enterprise, Community | Version 14.0.25431.01 | From f69288ee720fdfd70e4f21469008e9513b587632 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Wed, 26 Jul 2023 15:04:35 -0700 Subject: [PATCH 42/42] Containers token proxy (#11448) * add token proxy info * first draft * add some explanation * fix link * fix table and monikers * improve text in authentication section * Add diagnostic section and caution note * add moniker * simplify wording * Apply suggestions from code review * Fix Acrolinx error --------- Co-authored-by: Dennis Rea --- docs/containers/container-build.md | 11 +++++- docs/containers/container-tools-configure.md | 34 +++++++++++++++++- .../vs-2022/tools-options-2.png | Bin 0 -> 89837 bytes 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 docs/containers/media/configure-container-tools/vs-2022/tools-options-2.png diff --git a/docs/containers/container-build.md b/docs/containers/container-build.md index 43071477dcd..ad7e9ab1bcb 100644 --- a/docs/containers/container-build.md +++ b/docs/containers/container-build.md @@ -112,10 +112,19 @@ Here are the volumes that are mounted in your container: | **Remote debugger** | Contains the bits required to run the debugger in the container depending on the project type. This is explained in more detail in the [Debugging](#debugging) section.| | **App folder** | Contains the project folder where the Dockerfile is located.| | **Source folder** | Contains the build context that is passed to Docker commands.| -| **NuGet packages folders** | Contains the NuGet packages and fallback folders that is read from the *obj\{project}.csproj.nuget.g.props* file in the project. | +| **NuGet packages folders** | Contains the NuGet packages and fallback folders that are read from the *obj\{project}.csproj.nuget.g.props* file in the project. | For ASP.NET core web apps, there might be two additional folders for the SSL certificate and the user secrets, which is explained in more detail in the next section. +## Enable detailed container tools logs + +For diagnostic purposes, you can enable certain Container Tools logs. These logs are enabled by certain environment variables. For single container projects, the environment variable is `MS_VS_CONTAINERS_TOOLS_LOGGING_ENABLED`, which then logs in `%tmp%\Microsoft.VisualStudio.Containers.Tools`. For Docker Compose projects, it is `MS_VS_DOCKER_TOOLS_LOGGING_ENABLED`, which then logs in `%tmp%\Microsoft.VisualStudio.DockerCompose.Tools`. + +:::moniker range=">=vs-2022" +> [!CAUTION] +> When logging is enabled and you're using a token proxy for Azure authentication, authentication credentials could be logged as plain text. See [Configure Azure authentication](container-tools-configure.md#configure-azure-authentication). +:::moniker-end + ## Debugging When building in **Debug** configuration, there are several optimizations that Visual Studio does that help with the performance of the build process for containerized projects. The build process for containerized apps is not as straightforward as simply following the steps outlined in the Dockerfile. Building in a container is much slower than building on the local machine. So, when you build in the **Debug** configuration, Visual Studio actually builds your projects on the local machine, and then shares the output folder to the container using volume mounting. A build with this optimization enabled is called a *Fast* mode build. diff --git a/docs/containers/container-tools-configure.md b/docs/containers/container-tools-configure.md index 97fd5b6ba7f..8fd0643df5a 100644 --- a/docs/containers/container-tools-configure.md +++ b/docs/containers/container-tools-configure.md @@ -4,7 +4,7 @@ description: Configure the tools available in Visual Studio for working with Doc author: ghogen ms.author: ghogen ms.topic: how-to -ms.date: 09/17/2021 +ms.date: 07/13/2023 ms.technology: vs-container-tools --- # How to configure Visual Studio Container Tools @@ -23,7 +23,12 @@ Container Tools **General** settings: Container Tools **Single Project** and **Docker Compose** settings: +:::moniker range="<=vs-2019" ![Visual Studio Container Tools options, showing: Kill containers on project close, Pull required Docker images on project open, and Run containers on project open.](./media/configure-container-tools/tools-options-2.png) +:::moniker-end +:::moniker range=">=vs-2022" +![Visual Studio Container Tools options, showing: Kill containers on project close, Pull required Docker images on project open, Run containers on project open, Run a service in containers to enable Azure Authentication, and Run a service in containers to enable Hot Reload.](./media/configure-container-tools/vs-2022/tools-options-2.png) +:::moniker-end The following table might help you decide how to set these options. @@ -36,12 +41,24 @@ The following table describes **General** settings: The following table describes **Single Project** and **Docker Compose** settings: +:::moniker range="<=vs-2019" | Name | Default Setting | Applies To | Description | | -----|:---------------:|:----------:| ----------- | | Pull required Docker images on project open | True | Single Project, Docker Compose | For increased performance when loading projects, Visual Studio will start a Docker pull operation in the background so that when you're ready to run your code, the image is already downloaded or in the process of downloading. If you're just loading projects and browsing code, you can set to **False** to avoid downloading container images you don't need. | | Pull updated Docker images on project open | .NET Core projects | Single Project, Docker Compose | When you open a project, check for updates to images and download if available. | | Run containers on project open | True | Single Project, Docker Compose | Again for increased performance, Visual Studio creates a container ahead of time so that it's ready for when you build and run your container. If you want to control when your container is created, set to **False**. | | Remove containers on project close | True | Single Project, Docker Compose | Set to **False** if you would like containers for your solution to be retained after closing the solution or closing Visual Studio. | +:::moniker-end +:::moniker range=">=vs-2022" +| Name | Default Setting | Applies To | Description | +| -----|:---------------:|:----------:| ----------- | +| Pull required Docker images on project open | True | Single Project, Docker Compose | For increased performance when loading projects, Visual Studio will start a Docker pull operation in the background so that when you're ready to run your code, the image is already downloaded or in the process of downloading. If you're just loading projects and browsing code, you can set to **False** to avoid downloading container images you don't need. | +| Pull updated Docker images on project open | .NET Core projects | Single Project, Docker Compose | When you open a project, check for updates to images and download if available. | +| Run containers on project open | True | Single Project, Docker Compose | Again for increased performance, Visual Studio creates a container ahead of time so that it's ready for when you build and run your container. If you want to control when your container is created, set to **False**. | +| Remove containers on project close | True | Single Project, Docker Compose | Set to **False** if you would like containers for your solution to be retained after closing the solution or closing Visual Studio. | +| Run a service in containers to enable Azure Authentication | True | Single Project, Docker Compose | Visual Studio version 17.6 or later runs a [token proxy](#configure-azure-authentication) service in the container that assists with Azure Authentication, so your apps can use Azure services during development. Set to `False` if you don't want this service to be installed and run.| +| Run a service in containers to enable Hot Reload | True | Single Project, Docker Compose | Set to `False` if you don't want this service to be installed and run. The Hot Reload service is available in Visual Studio 2022 version 17.7 and later and only supports running without debugging (**Ctrl**+**F5**). | +:::moniker-end The **Containers Tool Window** settings control the settings that apply to the **Containers** tool window, which shows information about Docker containers and images. See [Use the Containers window](view-and-diagnose-containers.md) @@ -60,6 +77,21 @@ The following table describes the **Containers** window settings: > [!WARNING] > If the localhost SSL certificate is not trusted, and you check the box to suppress prompting, then HTTPS web requests might fail at run time in your app or service. In that case, uncheck the **Do not prompt** checkbox, run your project, and indicate trust at the prompt. +:::moniker range=">=vs-2022" + +## Configure Azure authentication + +If your app uses Azure services, it needs the appropriate authentication credentials when it runs in a container in order to authenticate with Azure services. During development, you can usually use your own Azure credentials instead of the credentials the app uses in production, but those credentials are required in the container environment to be useful for the running containerized app. + +Starting with Visual Studio 2022 version 17.6, in both single-container and Docker Compose projects, a [token](https://www.nuget.org/packages/Azure.Identity#readme-body-tab) proxy service is deployed and run in your containers that helps your apps and services authenticate in Azure. The feature requires [Azure Identity 1.9.0](https://www.nuget.org/packages/Azure.Identity/1.9.0#readme-body-tab) or later. With this service enabled, you can automatically use most Azure services without any additional configuration or setup within the container. Specifically, your code can use `DefaultAzureCredential` and `VisualStudioCredential` to authenticate with Azure services in the same way as outside of a container. See the [Azure Identity 1.9.0 README](https://www.nuget.org/packages/Azure.Identity/1.9.0#readme-body-tab). + +To disable this feature, set the **Tools** > **Options** setting **Run a service in containers to enable Azure Authentication** (described earlier in this article) to `False`. + +> [!CAUTION] +> There is a potential security concern if you use the token proxy and have enabled certain Container Tools diagnostic logs. When logging is enabled, authentication credentials could be logged as plain text. These logs are enabled by certain environment variables. For single container projects, the environment variable is `MS_VS_CONTAINERS_TOOLS_LOGGING_ENABLED`, which then logs in `%tmp%\Microsoft.VisualStudio.Containers.Tools`. For Docker Compose projects, it is `MS_VS_DOCKER_TOOLS_LOGGING_ENABLED`, which then logs in `%tmp%\Microsoft.VisualStudio.DockerCompose.Tools`. + +:::moniker-end + ## Next steps Read more about working with containers in Visual Studio in this [overview](overview.md). \ No newline at end of file diff --git a/docs/containers/media/configure-container-tools/vs-2022/tools-options-2.png b/docs/containers/media/configure-container-tools/vs-2022/tools-options-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0bc5a62793da673e102b3dd7ed8b128337f53f GIT binary patch literal 89837 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

} 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 literal 0 HcmV?d00001