我有同样的要求,我想出了以下解决方案。这个方案可以很好地支持自动化部署并且需要更少的配置更改。
1. 修改项目文件(.CsProj)
MSBuild支持EnvironmentName
属性,该属性可以帮助您根据您想要部署的环境设置正确的环境变量。在发布阶段,环境名称将添加到web.config中。
只需打开项目文件(*.csProj)并添加以下XML。
<!-- Custom Property Group added to add the Environment name during publish
The EnvironmentName property is used during the publish for the Environment variable in web.config
-->
<PropertyGroup Condition=" '$(Configuration)' == '' Or '$(Configuration)' == 'Debug'">
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' != '' AND '$(Configuration)' != 'Debug' ">
<EnvironmentName>'$(Configuration)'</EnvironmentName>
</PropertyGroup>
以上代码将在空或
Debug
配置中将环境名称添加为
Development
。对于任何其他配置,环境名称将从所选的配置中选择。这将使用所需配置添加
ASPNETCORE_ENVIRONMENT
环境。您可以通过更新CsProj文件来根据需要修改环境名称逻辑。更多详细信息
在此处
2. 在发布配置文件中添加EnvironmentName属性。
我们也可以在发布配置文件中添加
<EnvironmentName>
属性。打开位于
Properties/PublishProfiles/{profilename.pubxml}
的发布配置文件。这将在项目发布时在web.config中设置环境名称。更多详细信息
在此处。
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
![输入图像描述](https://istack.dev59.com/FdH8e.webp)
如上图所示,在每个配置中都可以添加环境,并且在每个*.pubxml文件中可以更改EnvironmentName
属性的名称。
3.使用dotnet publish的命令行选项
此外,我们还可以将属性EnvironmentName
作为命令行选项传递给dotnet publish
命令。以下命令将在web.config文件中包含环境变量为Development
。
dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development