我有多种解决方案,可以通过NuGet feed相互共享软件包(由TeamCity驱动,2018.1.3(内部版本58658))。 SolutionA向NuGet feed公开了几个项目,SolutionB的项目引用了其中一些软件包。 SolutionB的一些项目也应打包并发布到NuGet feed。
对于解决方案,打包和发布非常完美。对于SolutionB,由于奇怪的问题,依赖于从SolutionA发布到NuGet的程序包的项目打包失败。当TeamCity执行NuGet软件包还原步骤时,软件包将下载到packages\Project.From.SolutionA.3.181.181\
文件夹中。然后,构建步骤成功完成,但是由于NuGet pack命令而导致打包步骤失败,因此在文件夹packages\Project.From.SolutionA\3.181.181\
中查找包!
下面是pack命令的构建日志(NuGet版本为4.8.1)
Missing <TeamCityDir>\buildAgent\work\fbb25b8e9614747\packages\Project.From.SolutionA\3.181.181\Project.From.SolutionA.3.181.181.nupkg
Error NU5012: Unable to find 'Project.From.SolutionA.3.181.181.nupkg'. Make sure the project has been built.
NuGet.Packaging.Core.PackagingException: Unable to find 'Project.From.SolutionA.3.181.181.nupkg'. Make sure the project has been built.
at NuGet.CommandLine.ProjectFactory.AddDependencies(Dictionary`2 packagesAndDependencies)
at NuGet.CommandLine.ProjectFactory.ProcessDependencies(PackageBuilder builder)
at NuGet.CommandLine.ProjectFactory.CreateBuilder(String basePath, NuGetVersion version, String suffix, Boolean buildIfNeeded, PackageBuilder builder)
at NuGet.Commands.PackCommandRunner.BuildFromProjectFile(String path)
at NuGet.Commands.PackCommandRunner.BuildPackage()
at NuGet.CommandLine.PackCommand.ExecuteCommand()
at NuGet.CommandLine.Command.ExecuteCommandAsync()
at NuGet.CommandLine.Command.Execute()
at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)
唯一被替换的是项目的真实路径和名称
答案 0 :(得分:0)
您确定解决方案中没有多个解决方案文件(.sln)吗?我正在使用一个具有主要解决方案文件的较旧项目,然后一些子项目具有自己的解决方案文件。当我在TeamCity中运行构建时,尝试找到第一个nuget包并报告错误时会失败:
Error NU5012: Unable to find 'package.version.nupkg'. Make sure the project has been built.
花了一段时间,但我意识到所有失败的项目都有自己的解决方案文件,这使TeamCity感到困惑。删除文件后,构建便可以正常工作。