[英]Which of defined in launchSettings.json profiles Visual Studio uses during publication?
我正在尝试配置ASP.NET Core项目发布配置文件以部署到暂存环境。 在服务器上设置了预配置的ASPNETCORE_ENVIRONMENT变量,但是我尝试使用Visual Studio时都会不断将ASPNETCORE_ENVIRONMENT变量定义添加到发布web.config文件中。 消除它的唯一方法是从launchSettings.json中删除。
这会导致几个问题:
我找不到控制此行为的任何设置。 有没有?
这是我的.pubxml
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LastUsedBuildConfiguration>Release.Main</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<TargetFramework>netcoreapp2.2</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<ProjectGuid>433bb565-5e85-4f1a-9dd4-a7f437fdb534</ProjectGuid>
<SelfContained>false</SelfContained>
<_IsPortable>true</_IsPortable>
<MSDeployServiceURL>http://192.168.0.22</MSDeployServiceURL>
<DeployIisAppPath>auth/main</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<_SavePWD>False</_SavePWD>
</PropertyGroup>
</Project>
launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "https://localhost/DocShellWeb.Sts",
"sslPort": 0
}
},
"profiles": {
"DocShellWeb.Sts": {
"commandName": "IIS",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
部署的web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="..." arguments="..." stdoutLogEnabled="false" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 706412a5-be0d-452d-a9b0-ce00d799f990-->
仅在调试期间以及通过dotnet run
运行应用程序时,Visual Studio才会使用launchSettings.json
文件。 发布时根本不使用它,甚至不考虑使用它。 如果要在发布时指定特定的环境,则需要在pubxml
文件中添加添加<EnvironmentName>Staging</EnvironmentName>
:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
...
<EnvironmentName>Staging</EnvironmentName>
</PropertyGroup>
</Project>
这将对在已发布的web.config ASPNETCORE_ENVIRONMENT
的环境变量声明添加为“ Staging
”产生影响。
但是,这假定了以下几点:
ASPNETCORE_ENVIRONMEMT
服务器上的环境变量(即设置为Staging
的临时服务器,然后所有的应用程序发布的还有将自动使用Staging
环境,或者,它可以与一个应用程序的设置,如果被设置无论哪种情况,您都可以从实际的发布代码中抽象出环境,从而无需连续发布即可创建CI / CD管道,从而从中受益。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.