我的git源文件夹及其子文件夹中有多个.csproj文件。我想为所有人创建NuGet包。如果我理解正确,我应该添加NuGet Packager构建步骤并配置其路径到csproj或nuspec文件以打包
** \ *。的csproj
但是在运行构建时没有创建包。 顺便说一句,如果我手动选择一些“csproj'文件使用" ..."按钮和运行构建然后将创建它的包。
有人可以解释为什么我不能使用** \ * .csproj匹配模式为源目录及其子目录中的所有项目创建包吗?嵌套级别有什么限制吗?至少我有几个csproj文件在最大嵌套级别4-5从源文件夹... ...
P.S。我知道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等...
答案 0 :(得分:0)
嵌套水平不应成为问题。我能够在不同级别设置一个包含3个项目的测试项目,单个NuGet Task为所有这些项目创建了一个NuGet包。
这是我使用的配置(这是此时的默认配置)。这是使用任务的2.x版本完成的,因此如果您使用的是早期版本,则可能需要升级。
通过在对构建进行排队时设置system.debug = true,您还可以准确地查看此步骤中发生的情况。执行此操作后,您可以查看Nuget Pack步骤的日志,您应该看到它遍历所有目录和子目录并标记匹配的目录。在这里你可以看到它找到了,然后继续打包这三个项目。
发布您的详细设置并在此处记录,如果您仍需要其他帮助。
答案 1 :(得分:0)
我有一个类似的问题。 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'
...
此问题的解决方法是更改构建代理程序workFolder
文件中的.agent
。您可以在构建代理的根文件夹(例如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服务!
希望这会有所帮助:-)