【问题标题】:NO JSON file matched with specific pattern: appsettings.json没有与特定模式匹配的 JSON 文件:appsettings.json
【发布时间】:2017-11-26 04:08:32
【问题描述】:

我在 Team Services 版本中遇到此错误。我怀疑这个错误的发生是因为我生成了一个压缩的工件。

MSBuild 配置:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"

然后在我的 Release 中尝试替换 appsettings.json 变量:

所以工件是一个 zip 文件,可能是因为发布管理没有找到 appsettings.json 文件。但是有什么办法来处理呢?构建一个未压缩的工件?

【问题讨论】:

    标签: tfs msbuild azure-devops


    【解决方案1】:

    这对我有用:

    **/appsettings.json
    

    根据代理的位置以及 MSBuild 如何打包它,json 文件被埋在一个很长的深路径中……它不在“根”处。

    例如,我的 json 文件位于 WebApp.zip 文件中的此文件夹中:

    WebApp.zip\Content\C_C\Build\Agent\agent_work\3\s\CrmsAngularPOC\obj\Release\netcoreapp1.1\PubTmp\Out

    【讨论】:

    • 它也适用于 Azure DevOps、Azure App Service Deploy 任务。
    • 出色的这一点为我节省了大量时间。谢谢一百万。
    • 替换json值的语法是什么?我已经阅读了我无法正确理解的文档。这是我一直在尝试的。 ConnectionStrings.MyDbConnectionString :"Server=....." json是这样的。 { "ConnectionStrings": { "MyDbConnectionString": "Server=.." }, ....., ...... }
    【解决方案2】:

    如果您的源文件夹是 $(System.DefaultWorkingDirectory)/_SOURCE_FOLDER_/artifacts

    你可以使用“appsettings.json”

    但如果您的源文件夹是 $(System.DefaultWorkingDirectory)/_SOURCE_FOLDER_

    你可以使用“**/appsettings.json”

    【讨论】:

      【解决方案3】:

      您应该使用 JSONPath 表达式来指定要替换为 Json 变量替换选项的变量。

      JSON变量替换详细用法如下:

      提供新行分隔的 JSON 文件列表以替换 变量值。将提供相对于根目录的文件名 文件夹。要替换嵌套或分层的 JSON 变量, 使用 JSONPath 表达式指定它们。

      例如,替换“ConnectionString”中的值 下面的示例,您需要将变量定义为 构建/发布中的“Data.DefaultConnection.ConnectionString” 定义(或发布定义的环境)。

      {
        "Data": {
          "DefaultConnection": {
            "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
          }
        }
      }
      

      变量替换在配置转换后运行。

      注意:Build/Release 的系统定义变量不包括在 替代

      【讨论】:

      • 谢谢,但我不明白这一行Provide new line separated list of JSON files to substitute the variable values. 在这里我明白我需要输入要替换变量的 json 文件的名称,以防 appsettings.json 文件,而不是变量本身。
      • 对于上面的例子,这意味着你应该在变量选项卡中添加Data.DefaultConnection.ConnectionString。而在 Azure App Service Deploy 任务中的 JSON 变量替换,你应该像以前一样设置 (appsettings.json)。
      • 是的,这就是问题所在,当我这样做时,我收到一条错误消息,提示“没有与特定模式匹配的 JSON 文件:appsettings.json”。我怀疑是不是因为 appsettings.json 在一个 zipfile 中。
      • @ggui 类似的问题已经解决了(github.com/Microsoft/vsts-tasks/issues/4637),看看是否适合你。
      猜你喜欢
      • 2021-01-12
      • 1970-01-01
      • 2022-06-10
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2013-04-25
      相关资源
      最近更新 更多