I am using nuget.exe to programmatically package my app with powershell.
The powershell commands I am running are
C:\nuget.exe spec $appName
C:\nuget.exe pack TestApp.nuspec -Version $version
This correctly packs everything in the working directory into the nupkg file, and my binaries show up under "Package contents" correctly...however there are some concerns.
I am seeing these errors in the command window:
Issue: Remove sample nuspec values.
When I open the nupkg in the Nuget package explorer, I see the default tags/description/release notes...etc.
The issue is with the "Dependencies" - it is also including a SampleDependency (>= 1.0.0) which seems to cause issues later on in my pipeline.
Is there a way to blow away that sample dependency through the spec/pack via command line?
Thanks
Related
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
In my build pipeline, I have the following step:
I am getting the following error:
##[error]The nuget command failed with exit code(1) and error(NU1102: Unable to find package Microsoft.Windows.SDK.BuildTools with version (>= 10.0.19041.8)
When I go to the NuGet page for this package: Microsoft.Windows.SDK.BuildTools, I see that it only has one version: 10.0.18362.3-preview. I am not sure why the NuGet restore step is trying to get a higher version that does not exist. Why is this happening and how can I fix it? Note: this is my first Pipeline.
Agent Specification: Windows-2019.
From this page, you can see only two versions of the package Microsoft.Windows.SDK.BuildTools are listed:
10.0.19041.1
10.0.18362.3-preview
When open the page of version 10.0.19041.1, you can see the warning message to notify that this package version has been deprecated. But it seems that you can still download and install it.
I think the other package versions may have been permanently deleted by the owner due to some security vulnerabilities. So you no longer find them.
You can try to open your project using Visual Studio on your local machine, and change to use version 10.0.18362.3-preview in your program.
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
We install some packages via a PowerShell pre-build script in our CI build. Recently, we're been receiving Partially Successful email notifications with the following information provided:
'Microsoft.CSharp' already has a dependency defined for 'System.Dynamic.Runtime'
Here is the command from the PowerShell script that generates the information:
cd $source\MyNet\MyWeb\MyComp.WebViewer\packages
&"C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\Nuget.exe" install newtonsoft.json
I would like to be able to handle/ignore this message so that fully Successful build notifications are received.
It doesn't seem to be causing any problems otherwise.
Does anyone have any nuget.exe command line parameters that might bypass such an error?
The error message already has a dependency defined for usually indicates that the version of NuGet you are using is too old. So you should look at updating it.
This particular error can happen when the NuGet packages being used are using a group dependency with a target framework which the version of NuGet you are using does not know about.
In my case, I get a message when install some Nuget Package:
'PackageA' already has a dependency defined for 'PackageB'
.
And I search PackageB in Nuget Package Manager online, and click install button to install it again,
then ran into a problem:
The package requires NuGet client version '2.12' or above, but the current NuGet version is '2.7.40911.287'.
and I do as this solution Nuget version not correct?
after I upgrade the version of Nuget Package Manager, I can install PackageB, and then I can install PackageA.
I had a similar problem using NuGet to load the Google.Apis.Sheets.v4.
Upgrading my VS.NET 2013 from NuGet 2.8.60723.765 to 2.12.0.817 resolved it.
To see your NuGet version number, go to the Package Manager Console prompt (PM>) with Tools / NuGet Package Manager / Package Manager Console. Then, enter "$host" at the PM> prompt.
PM> $host
Name : Package Manager Host
Version : 2.12.0.817
InstanceId : 38c7734c-3169-4933-b934-23dab18055f2
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : NuGetConsole.Host.PowerShell.Implementation.NuGetPSHost+Commander
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PM>
To update NuGet, select Tools / Extensions and Updates... . Then, select "Updates" followed by clicking on the "Update" button of the "NuGet Package Manager".
After the update completes, restart Visual Studio and re-check the NuGet version number.
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.