您在 VSTS 中设置的环境变量仅用于部署本身(即 VSTS 正在执行的任何操作,例如构建应用程序或运行单元测试),但运行时应用程序将使用托管它的服务器上的任何变量。
如果您希望部署的应用程序也使用这些环境变量,则需要在 VSTS 部署到的 IIS 服务器上设置环境变量。 Microsoft 文档展示了如何根据您的服务器进行设置:设置环境 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments#setting-the-environment
针对评论更新:
设置环境变量的推荐方法是在机器本身上 - 即。登录到您要部署到的 IIS 服务器并添加ASPNETCORE_ENVIRONMENT
环境变量在那里system properties -> advanced settings -> environment variables
如果由于某种原因您无法执行此操作,您可以将它们设置为Web.config
文件(根据该文档)。如果您始终设置相同的值,您应该能够将您需要的内容放入Web.config
like so
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
如果您确实需要 XML 转换(老实说,我不确定您在这种情况下是否需要这样做 - 这是为了改变Web.config
文件在部署时基于构建配置。正如其他人提到的,对于 ASP.NET Core,推荐的配置设置是appsettings[.environment].json
根据匹配的机器级别自动加载的文件ASPNETCORE_ENVIRONMENT
env 变量),您需要使用正确的语法在转换文件中实际定义转换,并让它替换您想要更改的部分。这显然是更困难的选择。
See: 如何:在部署 Web 应用程序项目时转换 Web.config https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx用于创建转换文件和使用 Visual Studio 进行 Web 项目部署的 Web.config 转换语法 https://msdn.microsoft.com/en-us/library/dd465326.aspx如果您选择沿着该路径走下去,则了解配置语法
像这样的东西(当前无法测试,但这应该给您一个想法 - 请注意转换文件上的转换命名空间和xdt:
属性)。我相信加载的转换文件与您可能需要在 VSTS 任务中配置的构建配置相匹配:
网页配置
<configuration>
<system.webServer>
<aspNetCore ...>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
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>