Tfs 没有与特定模式匹配的JSON文件:appsettings.JSON

Tfs 没有与特定模式匹配的JSON文件:appsettings.JSON,tfs,msbuild,azure-devops,Tfs,Msbuild,Azure Devops,我在Team Services发布版上收到此错误。我怀疑这个错误是因为我生成了一个压缩的工件 MSBuild配置: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p

我在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"
然后在我的版本中,我试图替换
appsettings.json
变量:


因此,工件是一个zip文件,可能是因为发布管理层找不到appsettings.json文件。但如何应对呢?构建一个未压缩的工件?

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

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

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

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

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

注意:构建/发布的系统定义变量不包括在 替代品

这对我很有用:

**/appsettings.json
根据代理的位置和MSBuild如何打包,json文件被隐藏在一个长而深的路径中……它不在“根目录”中

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

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

如果您的源文件夹是$(System.DefaultWorkingDirectory)/\u source\u folder\u/artifacts

您可以使用“appsettings.json”

但是如果您的源文件夹是$(System.DefaultWorkingDirectory)/\u source\u folder_


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

谢谢,但我不理解这一行
提供了新的json文件行分隔列表来替换变量值
这里我明白了,我需要在appsettings.json文件中输入要替换变量的json文件的名称,而不是变量本身。对于上面的示例,这意味着您应该在变量选项卡中添加
Data.DefaultConnection.ConnectionString
。和JSON变量替换在Azure App Service Deploy任务中,您应该按照您所做的那样进行设置(
appsettings.JSON
)。是的,这就是问题所在,当我这样做时,我收到一个错误,说“没有与特定模式匹配的JSON文件:appsettings.JSON”。我怀疑它是否是因为appsettings.json在zipfile中。@ggui类似的问题已经解决(github.com/Microsoft/vsts tasks/issues/4637),请检查它是否适合您。它也适用于Azure DevOps和Azure应用服务部署任务。这为我节省了大量时间。非常感谢。替换json值的语法是什么?我已经阅读了文档,但我不能正确理解它。这就是我一直在尝试的。ConnectionString.MyDbConnectionString:“服务器=……”json如下所示。{“ConnectionString”:{“MyDbConnectionString”:“服务器=…},…},…}
**/appsettings.json