gpt4 book ai didi

deployment - ASP .NET 5 中的配置文件转换

转载 作者:行者123 更新时间:2023-12-03 17:34:46 25 4
gpt4 key购买 nike

我们正在使用新的 ASP .NET 5 平台构建 Web 应用程序。我正在配置构建和部署自动化工具,并且希望能够在部署期间更改应用程序设置(例如更改 Web 服务 url)。在 ASP .NET 5 中,我们不再有 web.config 文件,只有新的 json 配置文件。 ASP .NET 5 中是否有类似于以前版本的 ASP .NET 中的 web.config 转换的机制?

最佳答案

我知道 web.configs 并不是真正支持,但它们仍然在 IIS 下的 ASP.Net 中使用。

我希望应用转换以及我想从配置中控制环境变量,如下所示:

<aspNetCore>
<environmentVariables xdt:Transform="Replace">
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>

如果你真的想在 ASP.Net core/5 中转换它们,你可以使用以下方法:
  • 添加任意数量的不同 web.config 转换文件到您的
    项目。比如你可以添加Web.Development.config,
    Web.Staging.config 和 Web.Production.config 等...随意命名它们。
  • 通过添加此修改您的 project.json 文件以输出文件
    行到当前 web.config 行正下方的发布选项:
    "web.*.config"
  • 创建发布配置文件并修改您的 powershell 脚本
    发布配置文件(位于 Web Project\Properties\PublishProperties\profilename-publish.ps1)以添加以下修改:

  • 在 try catch 上方添加这个函数(我在这里找到了这个函数 Web.Config transforms outside of Microsoft MSBuild? ,稍作修改。):
    function XmlDocTransform($xml, $xdt)
    {
    if (!$xml -or !(Test-Path -path $xml -PathType Leaf)) {
    throw "File not found. $xml";
    }
    if (!$xdt -or !(Test-Path -path $xdt -PathType Leaf)) {
    throw "File not found. $xdt";
    }

    "Transforming $xml using $xdt";

    $scriptPath = (Get-Variable MyInvocation -Scope 1).Value.InvocationName | split-path -parent
    #C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll

    Add-Type -LiteralPath "${Env:ProgramFiles(x86)}\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll"

    $xmldoc = New-Object Microsoft.Web.XmlTransform.XmlTransformableDocument;
    $xmldoc.PreserveWhitespace = $true
    $xmldoc.Load($xml);

    $transf = New-Object Microsoft.Web.XmlTransform.XmlTransformation($xdt);
    if ($transf.Apply($xmldoc) -eq $false)
    {
    throw "Transformation failed."
    }
    $xmldoc.Save($xml);
    }

    添加这些行 上图 Publish-AspNet 调用:
    $xdtFiles = Get-ChildItem $packOutput | Where-Object {$_.Name -match "^web\..*\.config$"};
    $webConfig = $packOutput + "web.config";
    foreach($xdtFile in $xdtFiles) {

    XmlDocTransform -xml $webConfig -xdt "$packOutput$xdtFile"
    }

    关于deployment - ASP .NET 5 中的配置文件转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31314201/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com