VSTS / TFS设置环境变量ASP.NET核心

ubi*_*ubi 5 c# asp.net azure-devops asp.net-core azure-pipelines-release-pipeline

我正在尝试使用VSTS将ASP.NET Core应用程序部署到IIS,并执行以下任务

在此处输入图片说明

但是,经过大量谷歌搜索和浏览MS文档之后,我找不到为部署设置环境变量的方法。我在环境范围的发布定义中设置的变量未设置为环境变量。

在此处输入图片说明

知道如何实现吗?

Kir*_*lac 5

您在 VSTS 中设置的环境变量仅用于部署本身(即 VSTS 正在执行的任何操作,例如构建应用程序或运行单元测试),但运行时应用程序将使用托管它的服务器上的任何变量。

如果您希望部署的应用程序也使用它们,则需要在 VSTS 部署到的 IIS 服务器上设置环境变量。Microsoft 文档显示了如何根据您的服务器进行设置设置环境

根据评论更新:

设置环境变量的推荐方法是在机器本身上 - 即。登录到您要部署到的 IIS 服务器并在其中添加ASPNETCORE_ENVIRONMENT环境变量system properties -> advanced settings -> environment variables

如果由于某种原因您无法执行此操作,您可以在Web.config文件中设置它们(根据该文档)。如果你总是设置相同的值,你应该能够只是把你的需要的东西Web.config,像这样

<environmentVariables>
  <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
Run Code Online (Sandbox Code Playgroud)

如果您真的需要 XML 转换(老实说,我不确定您是否在这种情况下这样做 - 这是为了Web.config在部署时根据构建配置更改文件。正如其他人提到的,推荐使用 asp.net core config setup 是appsettings[.environment].json根据匹配的机器级别ASPNETCORE_ENVIRONMENTenv 变量自动加载的文件),您需要使用正确的语法在转换文件中实际定义转换,并让它替换您想要更改的部分。这显然是更困难的选择。

请参阅:如何:在部署 Web 应用程序项目以创建转换文件时转换Web.config用于 Web 项目部署的 Web.config 转换语法,如果您选择沿着该路径进行配置语法,则使用 Visual Studio

像这样的东西(目前无法测试,但这应该给你一个想法——注意转换文件和xdt:属性上的转换命名空间)。我相信加载的转换文件与构建配置相匹配,您可能需要将其配置为 VSTS 任务的一部分:

网页配置

<configuration>
  <system.webServer>
    <aspNetCore ...>
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Web.Release.config(构建配置“Release”的转换文件)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.webServer>
    <aspNetCore ...>
      <environmentVariables>
        <environmentVariable xdt:Transform="Replace" xdt:Locator="Match(name)" name="ASPNETCORE_ENVIRONMENT" value="Production" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)


ubi*_*ubi 1

设置环境变量的另一种方法(除了使用该XML transform方法之外)是添加一个 Powershell 任务,该任务使用appCmd命令在 ApplicationPool 范围中设置环境变量

C:\Windows\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='XyzPool'].environmentVariables.[name='ASPNETCORE_ENVIRONMENT',value='Dev']" /commit:apphost
Run Code Online (Sandbox Code Playgroud)