当前位置 : 主页 > 网络编程 > net编程 >

发布asp.net core时如何修改ASPNETCORE_ENVIRONMENT环境变量

来源:互联网 收集:自由互联 发布时间:2022-04-19
目录 遇到的问题 解决方案 修改.csproj文件 在FolderProfile.pubxml中添加EnvironmentName dotnetpublish时添加 cmd配置 web.config配置 总结 遇到的问题 当我把 asp.net core web 发布到本地文件时,我发现程
目录
  • 遇到的问题
  • 解决方案
    • 修改.csproj文件
    • 在FolderProfile.pubxml中添加EnvironmentName
    • dotnetpublish时添加
    • cmd配置
    • web.config配置
  • 总结

    遇到的问题

    当我把 asp.net core web 发布到本地文件时,我发现程序读的是 appsettings.Production.json ,也就说明当前的 ASPNETCORE_ENVIRONMENT = Production

    请问如何动态修改 ASPNETCORE_ENVIRONMENT的值,这样的话在 调试 和 发布 阶段都非常灵活了,但我尝试在下面几个地方修改都没有成功。。。

    • windows settings
    • .pubxml file
    • launchSettings.json
    • project.json

    解决方案

    有下面几个解决方案。

    修改 .csproj 文件

    可以在 .csproj 中增加 <EnvironmentName> 节点来设置环境变量,当 MSBuild 编译时会根据当前的项目模式为 Deubg 还是 Release 执行相应代码段,最后配置节会进入到 web.config 中。

    <!-- 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>Production</EnvironmentName>
      </PropertyGroup>
    

    在 FolderProfile.pubxml 中添加 EnvironmentName

    可以在 publish profile中添加 <EnvironmentName> 节点配置你需要的环境变量,如下代码所示:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <DeleteExistingFiles>True</DeleteExistingFiles>
        <EnvironmentName>Development</EnvironmentName>
      </PropertyGroup>
    </Project>

    dotnet publish 时添加

    在用 dotnet pulish 发布项目时,可以在发布参数中指定 环境变量。

    dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development

    cmd配置

    Command Line : setx ASPNETCORE_ENVIRONMENT "Development"

    PowerShell :  $Env:ASPNETCORE_ENVIRONMENT = "Development"

    web.config 配置

    可以在最后发布好的 web.config 中增加 environmentVariables 节点,如下所示:

    <configuration>
      <!--
        Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
      -->
      <system.webServer>
        <handlers>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
          <environmentVariables>
            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
          </environmentVariables>
        </aspNetCore>
      </system.webServer>
    </configuration>

    总结

    相信这是很多新人在用 Asp.NET Core 开发项目最后发布时都会遇到的坎,我在实际开发中用的最多的是在机器级配置 ASPNETCORE_ENVIRONMENT ,万万没想到还有这么多的灵活配置方案,不得不服,尤其是那个在 dotnet publish时指定,学习了 😁😁😁。

    以上就是发布asp.net core时如何修改ASPNETCORE_ENVIRONMENT环境变量的详细内容,更多关于asp.net core修改ASPNETCORE_ENVIRONMENT环境变量的资料请关注易盾网络其它相关文章!

    上一篇:如何在ASP.NET Core中使用ViewComponent
    下一篇:没有了
    网友评论