Asp.net core 如何配置asp.net核心网站的部署?

Asp.net core 如何配置asp.net核心网站的部署?,asp.net-core,iis-8,webdeploy,asp.net-core-1.1,Asp.net Core,Iis 8,Webdeploy,Asp.net Core 1.1,我需要为每个环境发布具有特定web.config的网站,以便将环境变量ASPNETCORE\u environment设置为“开发”或“生产” 这可以通过发送包含以下内容的web.config来实现: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" pa

我需要为每个环境发布具有特定web.config的网站,以便将环境变量ASPNETCORE\u environment设置为“开发”或“生产”

这可以通过发送包含以下内容的web.config来实现:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\myProject.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout">
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>
我的webdeploy配置文件中没有特定内容

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://my.test.com</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <MSDeployServiceURL>my.test.com</MSDeployServiceURL>
    <DeployIisAppPath>my.test.com</DeployIisAppPath>
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod> <!-- MsDepSvc , WMSVC, RemoteAgent -->
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <AuthType>NTLM</AuthType>
    <UserName>myusername</UserName>
    <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
  </PropertyGroup>
</Project>

MSDeploy
Azure网站
释放
假的
任何CPU
https://my.test.com
真的
my.test.com
my.test.com
真的
远程代理
真的
NTLM
我的用户名
真的

如何在.csproj或webdeploy配置文件或其他任何地方配置asp.net核心项目,以便自动将适当的web.config(或修改其内容)发送到相应的环境

正如@CalC所说,我只想在不同的目标机器上设置环境变量。因此,发布一个web.config来覆盖这个可能已经在本地设置的值,这肯定是危险的,而且肯定不是一个好方法

因此,答案是:您不应该将web.config发布到发布文件夹中,而是直接在目标计算机/文件夹上更新它。
也可以使用此处未介绍的其他方法设置此环境变量。

正如@CalC所说,我只想在不同的目标机器上设置环境变量。因此,发布一个web.config来覆盖这个可能已经在本地设置的值,这肯定是危险的,而且肯定不是一个好方法

因此,答案是:您不应该将web.config发布到发布文件夹中,而是直接在目标计算机/文件夹上更新它。
也可以使用此处未介绍的其他方法设置此环境变量。

我很困惑。当然,您只需要在目标机器上适当地设置环境变量,然后再也不用担心它了?你是说目标机器可以在开发和生产之间改变吗?不,机器是不同的,你完全正确@Cal279,我能做的最好的事情就是直接在机器上设置这个环境变量。我已经这么做了,我认为这是最好的做法。我稍后会发布一个答案来结束这个问题。我很困惑。当然,您只需要在目标机器上适当地设置环境变量,然后再也不用担心它了?你是说目标机器可以在开发和生产之间改变吗?不,机器是不同的,你完全正确@Cal279,我能做的最好的事情就是直接在机器上设置这个环境变量。我已经这么做了,我认为这是最好的做法。我稍后会发布一个答案来结束这个问题。谢谢
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://my.test.com</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <MSDeployServiceURL>my.test.com</MSDeployServiceURL>
    <DeployIisAppPath>my.test.com</DeployIisAppPath>
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod> <!-- MsDepSvc , WMSVC, RemoteAgent -->
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <AuthType>NTLM</AuthType>
    <UserName>myusername</UserName>
    <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
  </PropertyGroup>
</Project>