【问题标题】:Matching pattern does not work in NuGet Packager匹配模式在 NuGet Packager 中不起作用
【发布时间】:2017-08-15 10:35:11
【问题描述】:

我的 git 源文件夹及其子文件夹中有多个 .csproj 文件。我想为所有这些创建 NuGet 包。如果我理解正确,我应该添加 NuGet Packager 构建步骤并将其 路径配置为 csproj 或 nuspec 文件以进行打包

**\*.csproj

但是当我运行我的构建时没有创建任何包。 顺便说一句,如果我使用“...”按钮手动选择一些“csproj”文件并运行构建,那么将创建它的包。

谁能解释为什么我不能使用 **\*.csproj 匹配模式为我的源目录及其子目录中的所有项目创建包?嵌套级别有什么限制吗?至少我在从源文件夹算起的最大嵌套级别 4-5 上有几个 csproj 文件...

附言我知道Exclusion pattern not working for vsts build 也有类似的错误,所以我想知道这是否是相关问题?

查看我的构建配置和我的 NuGet Packager 和 NuGet Publisher 构建步骤的日志,其中 D:_work\3\s 是构建服务器上找不到 csproj 文件的文件夹。虽然我可以在那里看到文件,例如第一个在 D:_work\3\s\Source\Product\Components\Folder1\MyProj1.csproj 上,第二个在 D:_work\3\s\Source\Product\Components\ Folder2\MyProj2.csproj 等...

【问题讨论】:

  • 你能把整个构建日志记录下来吗?为什么你的工作目录是D:\\_work\3\s?它通常类似于D:\_work\3\s

标签: nuget azure-devops nuget-package azure-pipelines


【解决方案1】:

嵌套级别应该不是问题。我能够设置一个包含不同级别的 3 个项目的测试项目,并且单个 NuGet 任务为所有项目创建了一个 NuGet 包。

这是我使用的配置(这是此时的默认配置)。这是使用任务的 2.x 版本完成的,因此如果您使用的是早期版本,您可能需要升级。

您还可以通过在对构建进行排队时设置 system.debug = true 来准确查看此步骤中发生的情况。完成此操作后,您可以查看 Nuget Pack 步骤的日志,您应该会看到它遍历所有目录和子目录并标记匹配的那些。这里可以看到它找到了,然后继续打包这3个项目。

如果您仍需要其他帮助,请在此处发布您的详细设置并登录。

【讨论】:

  • 我用附加的日志更新了我的问题。尽管与您的日志相比,我的日志信息量不大。我应该在哪里设置 system.debug = true 以获得更详细的日志?如果重要的话,我也在使用 TFS-2017 版本 15.105.25910.0。
  • 当您单击队列构建并弹出所有构建信息的屏幕时,应该有一个名为 system.debug 的变量,其默认值设置为 false。如果存在,则将其更改为 true 并单击队列,否则单击“+添加”按钮并添加一个名为 system.debug 的变量,其值设置为 true。这应该会给你完整的详细日志,就像我展示的那样。
  • @AndreyS 在将 system.debug 设置为 true 并进行队列构建后在此处发布详细日志。
【解决方案2】:

我遇到了类似的问题。 NuGet Pack 任务成功完成,但未创建 NuGet 包。 在任务日志记录中(使用 debug=true 运行时)我看到以下内容:

...
##[debug]found 8037 paths
##[debug]applying include pattern
##[debug]0 matches
...

NuGet Pack 任务不会创建包,因为它没有找到任何 .csproj.nuspec 文件。在我的情况下,它没有找到任何.csproj.nuspec 文件的原因是因为我的构建代理的工作文件夹设置为"."。我在分析 NuGet Pack 任务日志中的模式时发现了这一点。

...
##[debug]pattern: 'D:\Agents\agent_1\.\123\s\*.nuspec'
...

解决此问题的方法是更改​​构建代理的.agent 文件中的workFolder。您可以在构建代理的根文件夹中找到它(例如D:\Agents\agent_1\.agent)。原来是这样的:

{
  "agentId": 48,
  "agentName": "agent_1",
  "poolId": 3,
  "serverUrl": "<TFS url>",
  "workFolder": "."
}

你必须把它改成

{
  "agentId": 48,
  "agentName": "agent_1",
  "poolId": 3,
  "serverUrl": "<TFS url>",
  "workFolder": "D:\\Agents\\agent_1"
}

请务必在更改此文件后重新启动构建代理 windows 服务!

希望这会有所帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多