我正在尝试使用VSTS通过以下任务将ASP.NET Core应用程序部署到IIS
但是,经过大量的Google搜索和浏览后,我找不到为部署设置环境变量的方法。我在环境范围的发布定义中设置的变量未设置为环境变量。
任何想法如何实现?
如果您希望已部署的应用程序也使用它们,则需要在VSTS部署到的IIS服务器上设置环境变量。 Microsoft文档显示了如何根据您的服务器进行设置:Setting the environment
根据评论更新:
建议的设置环境变量的方法是在机器本身上-即。登录到要部署到的IIS服务器,并在ASPNETCORE_ENVIRONMENT
system properties -> advanced settings -> environment variables
环境变量如果由于某种原因而无法执行此操作,则可以在Web.config
文件中设置它们(根据该文档)。如果您始终设置相同的值,则应该可以将所需的内容放在Web.config
中,如下所示
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
[如果您确实需要XML转换(说实话,我不确定您在这种情况下会这样做-这是为了在部署时根据构建配置更改Web.config
文件。就像其他人提到的那样,使用asp .net核心,建议的配置设置是appsettings[.environment].json
文件,这些文件根据匹配的计算机级别ASPNETCORE_ENVIRONMENT
env变量自动加载),您实际上需要使用正确的语法在转换文件中定义转换,并用它替换各个部分你想改变。这显然是更困难的选择。
请参阅:用于创建转换文件的How to: Transform Web.config When Deploying a Web Application Project和用于选择配置语法的Web.config Transformation Syntax for Web Project Deployment Using Visual Studio,如果您选择沿着该路径的话
类似这样的内容(目前无法测试,但这应该可以给您一个想法-请注意转换文件上的转换名称空间和xdt:
属性)。我相信要加载的转换文件与构建配置相匹配,您可能需要将其配置为VSTS任务的一部分:
Web.config
<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>
XML transform
方法)是添加一个Powershell任务,该任务使用appCmd
命令在ApplicationPool范围内设置环境变量