How to create a Nuget Package in ADO Pipeline - azure-devops

Using the Classic DevOps, I am trying to create a NuGet package out of one of our code libraries.
I am Using NuGet version 5.9.1
I am able to do a NuGet restore of the 'Newtonsoft.Json.13.0.1.nupkg' dependency. The task succeeds without an error:
[![enter image description here][1]][1]
I am able to compile the project in VS in the pipeline
However, when I try to NuGet pack the same project that is used in the Restore Step above, I get this error:
##[error]The nuget command failed with exit code(1) and error(Error NU5012: Unable to find 'Newtonsoft.Json.13.0.1.nupkg'. Make sure the project has been built.
I have tried various combinations of Destination Directors on the Restore and Base Path in the Pack but still get that error or this one:
##[error]The NuGet command failed with exit code(1) and error(Cannot determine the packages folder to restore NuGet packages. Please specify either -PackagesDirectory or -SolutionDirectory.
I cannot find any documentation that explains how to do this.
How does one build this type of Pipeline?
Thanks for your help!
Updated:
this is the example i used when i receive the error
Apparently the package was installed from NuGet.org:
Installed Newtonsoft.Json 13.0.1 from https://api.nuget.org/v3/index.json with content hash ppPFpBcvxdsfUonNcvI etc.
Adding package 'Newtonsoft.Json.13.0.1' to folder 'D:...$(Build.ArtifactStagingDirectory )'
PackageSignatureVerificationLog: PackageIdentity: System.Runtime.4.3.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True
Added package 'Newtonsoft.Json.13.0.1' to folder 'D:...$(Build.ArtifactStagingDirectory )'
Added package 'Newtonsoft.Json.13.0.1' to folder 'D:...$(Build.ArtifactStagingDirectory )' from source 'https://api.nuget.org/v3/index.json'
But I get this error on the Pack:
C:\hostedtoolcache\windows\NuGet\5.9.1\x64\nuget.exe pack D:\MyApp.Applications.Framework.Json.Converters.csproj -NonInteractive -OutputDirectory D:\a\1\a -BasePath D:\a\1\a -Properties "Configuration=Release" -IncludeReferencedProjects -version 2022.05.24.1 -Verbosity Detailed
Error NU5012: Unable to find 'Newtonsoft.Json.13.0.1.nupkg'. Make sure the project has been built.
Further Update:
I seem to be able to restore the NewtonSoft package:
PackageSignatureVerificationLog: PackageIdentity: Newtonsoft.Json.13.0.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True
Installed Newtonsoft.Json 13.0.1 from https://api.nuget.org/v3/index.json with content hash ##
Adding package 'Newtonsoft.Json.13.0.1' to folder 'D:\a\1\s\XM\packages'
Added package 'Newtonsoft.Json.13.0.1' to folder 'D:\a\1\s\XM\packages'
Added package 'Newtonsoft.Json.13.0.1' to folder 'D:\a\1\s\XM\packages' from source 'https://api.nuget.org/v3/index.json'
Restoring NuGet package System.Net.Http.4.3.4.
However, the NuGet Pack step cannot find it:
Attempting to pack file: D:\a\1\s\XM\Applications\Framework\Json\Converters\XM.Applications.Framework.Json.Converters\XM.Applications.Framework.Json.Converters.csproj
C:\hostedtoolcache\windows\NuGet\5.9.1\x64\nuget.exe pack D:\a\1\s\XM\Applications\Framework\Json\Converters\XM.Applications.Framework.Json.Converters\XM.Applications.Framework.Json.Converters.csproj -NonInteractive -OutputDirectory D:\a\1\a -Properties Configuration=Release -IncludeReferencedProjects -version 2022.05.24.14 -Verbosity Detailed
Error NU5012: Unable to find 'Newtonsoft.Json.13.0.1.nupkg'. Make sure the project has been built.
Seems that the pack step doesn't see the nupkg. How can i tell the pack step where to find it?
[1]: https://i.stack.imgur.com/ME7M6.png

Related

CakeBuild: Get failed to install tool 'NUnit.ConsoleRunner'

I used CakeBuild to build and test my Xamarin Portable Class Library.
In the build.cake script I defined that I want to use the NUnit-Console to run my testcases. So I do
#tool nuget:?package=NUnit.ConsoleRunner
Unfortunatelly I get the following error when I run the Cake script.
Preparing to run build script...
VERBOSE: Restoring tools from NuGet...
VERBOSE: Feeds used:
C:\Users\bergkar\.nuget\packages\
All packages listed in C:\dev\Xamarin\fleetboard-core-library\tools\packages.config are already installed.
Running build script...
Analyzing build script...
Processing build script...
Installing tools...
Unable to find package 'NUnit.ConsoleRunner'
NuGet exited with 1
Could not find any relevant files for tool 'NUnit.ConsoleRunner'. Perhaps you need an include parameter?
Error: Failed to install tool 'NUnit.ConsoleRunner'.
When I add a specific version I want to use like below then everything works fine.
#tool nuget:?package=NUnit.ConsoleRunner&version=3.7.0
Can someone tell me why it is not working without the version stuff?
With ".\build.ps1 -Verbosity Diagnostic" I get the following output:
Preparing to run build script...
Running build script...
Module directory does not exist.
Analyzing build script...
Analyzing C:/dev/Xamarin/fleetboard-core-library/build.cake...
Processing build script...
Installing tools...
Installing NuGet package NUnit.ConsoleRunner...
Executing: "C:/dev/Xamarin/fleetboard-core-library/tools/nuget.exe" install "NUnit.ConsoleRunner" -OutputDirectory "C:/d
ev/Xamarin/fleetboard-core-library/tools" -ExcludeVersion -NonInteractive
Unable to find package 'NUnit.ConsoleRunner'
NuGet exited with 1
Feeds used:
Output:
Feeds used:
Could not find any relevant files for tool 'NUnit.ConsoleRunner'. Perhaps you need an include parameter?
Error: Cake.Core.CakeException: Failed to install tool 'NUnit.ConsoleRunner'.
at Cake.Core.Scripting.ScriptProcessor.InstallTools(ScriptAnalyzerResult analyzerResult, DirectoryPath installPath)
at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments)
at Cake.Commands.BuildCommand.Execute(CakeOptions options)
at Cake.CakeApplication.Run(CakeOptions options)
at Cake.Program.Main()
Now I found my problem and solved it.
The problem was that the NuGet.exe did not has a source feed which points to a public nuget source like "https://api.nuget.org/v3/index.json".
This was because my default NuGet.conf in under "C:\Users\YOUR_USER_HOME\AppData\Roaming\NuGet" had no packageSource defined. So Nuget just knows the local nuget package cache under "C:\Users\YOUR_USER_HOME.nuget\packages" and this did not include the specified package.
So after I added a packageSource in "C:\Users\YOUR_USER_HOME\AppData\Roaming\NuGet\NuGet.Conf" everything works fine.
Another way can be to add a new NuGet.Conf beside your build.ps1 file which contains all package sources you need for CakeBuild and your Xamarin project.
The following page explains how Nuget finds its configuration. Maybe this is helpful to understand the mechanism NuGet uses to find its configuration:
https://learn.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior

NuGet restore works if old version 0.*, but fails with version 2.*

I've got a VSTS build, starting from a blank, originally with just Node.js bits, but now adding some C# bits.
Added the NuGet restore, build sln and vstest tasks as part of the update to the build.
Build fails on the NuGet restore task with the error around the MSTest TestAdapter ...
Restoring NuGet package MSTest.TestAdapter.1.1.11.
Restoring NuGet package MSTest.TestFramework.1.1.11.
WARNING: Unable to find version '1.1.11' of package 'MSTest.TestFramework'.
WARNING: Unable to find version '1.1.11' of package 'MSTest.TestAdapter'.
Errors in packages.config projects
Unable to find version '1.1.11' of package 'MSTest.TestFramework'.
Unable to find version '1.1.11' of package 'MSTest.TestAdapter'.
Why doesn't it pick up the MSTest package?
And even more puzzling to me ??? ...
I spotted the task was version 2.*
tried setting it to version 0.* ...
and the build works !! ... runs tests, etc.
Why does version 0.* work, yet the latest version 2.* fails?

##[error]The given path's format is not supported

I am trying to setup build definition in TFS 2015 .WHen i try to setup build ,it's failing and giving below error:
MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
12. 2017-03-31T13:59:36.1211815Z ##[error]The given path's format is not supported.
13. 2017-03-31T13:59:36.1368100Z ##[error]Unexpected exit code 1 returned from tool NuGet.exe
I tried selecting restore nuget package as well as everything I could do but I am not getting which path's format is being fetched. Please help me.
This error is similar to Nuget 3.4+ can not restore some packages fails with "The given path's format is not supported"
First, please check nuget.config and make sure nuget can find packages from your sources. Besides if you are using Nuget 3.4.x, give a try with version 3.5.0-rtm-1829

Team Services: Nuget Packager task failing

I have a Build definition in Team Services that includes a Nuget Packager task. I'm using Hosted build agents.In the last couple of builds this task began to fail, with the following message:
2017-02-22T21:43:24.9318762Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\2.112.0\externals\nuget\NuGet.exe pack "D:\a\1\s\src\app\Ormie\Ormie.csproj" -OutputDirectory "D:\a\1\s" -Properties Configuration=release
2017-02-22T21:43:25.5460318Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
2017-02-22T21:43:25.5460318Z Attempting to build package from 'Ormie.csproj'.
2017-02-22T21:43:25.7480272Z Packing files from 'D:\a\1\s\src\app\Ormie\bin\Release'.
2017-02-22T21:43:25.9040273Z Using 'Ormie.nuspec' for metadata.
2017-02-22T21:43:26.1645370Z ##[error]'System.Collections' already has a dependency defined for 'Microsoft.NETCore.Platforms'.
2017-02-22T21:43:26.1865365Z ##[error]System.Exception: Unexpected exit code 1 returned from tool NuGet.exe
2017-02-22T21:43:26.1865365Z at Microsoft.TeamFoundation.DistributedTask.Task.Internal.InvokeToolCmdlet.ProcessRecord()
2017-02-22T21:43:26.1865365Z at System.Management.Automation.CommandProcessor.ProcessRecord()
2017-02-22T21:43:26.2015355Z ##[error]PowerShell script completed with 1 errors.
2017-02-22T21:43:26.2025352Z ##[section]Finishing: NuGet Packager
In order to understand what was happening, I tried to create the package in my development box, using NuGet version 3.3, and got a similar message. So, I've updated NuGet to version 3.5, tried to pack in my machine and it worked just fine.So, my questions are:
Is there any kind of configuration in Team Services Build Definition
that can be done to solve this issue?
How can I force the Hosted build agent to use version 3.5 in the
NuGet Packager task?
To use nuget3.5 for nugget packager task, you can add nugget.exe to source control, and then use $(Build.SourcesDirectory)\nuget.exe as path to nugget.exe.
For Nuget Restore and Nuget Publisher Tasks, they define 3.3 and 3.5 in their tasks. You can view task.json for all tasks definitions in VSTS task.
If you want Nuget Packager also can choose nugget version, you should develop your own task same as Nuget Packager function and with nuget version to choose.

When running the NuGet pack command I get the error: 'AutoMapper' already has a dependency defined for 'NETStandard.Library'

I'm having an issue packaging my own nuget package, which includes AutoMapper 5.0.2. This is only producing an error within the Visual Studio Team Services (VSTeam) Build servers.
My project is using .NET 4.6.1
Any ideas on how to fix?
Here is the error:
2016-07-08T23:46:44.5801667Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.102.0\agent\worker\tools\NuGet.exe pack "C:\a\1\s\Project.csproj" -OutputDirectory "C:\a\1\s\Project\bin\release" -Properties Configuration=release -IncludeReferencedProjects
2016-07-08T23:46:45.0458195Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
2016-07-08T23:46:45.0468395Z Attempting to build package from 'Project.csproj'.
2016-07-08T23:46:45.1942694Z Packing files from 'C:\a\1\s\Project\bin\Release'.
2016-07-08T23:46:45.3942642Z ##[error]**'AutoMapper' already has a dependency defined for 'NETStandard.Library'.**
2016-07-08T23:46:45.4142626Z ##[error]System.Exception: Unexpected exit code 1 returned from tool NuGet.exe
2016-07-08T23:46:45.4152639Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Task.Internal.PowerShell.InvokeToolCmdlet.ProcessRecord()
2016-07-08T23:46:45.4152639Z ##[error] at System.Management.Automation.CommandProcessor.ProcessRecord()
I also opened an issue on GitHub: https://github.com/AutoMapper/AutoMapper/issues/1499
You need to install new Nuget version for your visual studio version.
Get it from here
Nuget gallery
I was able to fix/workaround the issue by putting a PowerShell script in to download the latest NuGet. Then I pointed all of the NuGet tasks to this new nuget.exe. Pros: builds are working again, Cons: each build downloads NuGet again, causing unnecessary load on NuGet.org.
Here is my PowerShell:
$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = "$(build.sourcesdirectory)/nuget.exe"
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
Set-Alias nuget $targetNugetExe -Scope Global -Verbose
nuget
If someone using Team City you also need to use / install newer version of Nuget.