TeamCity and nuget.config selection - nuget

While building a project using TeamCity I can see that in the nuget restore build step, teamcity uses nuget.config from the user profile instead only from the solution and has as a result some packages fail to restore.
NuGet Config files used:
[11:42:56][restore] C:\TeamCity\buildAgent\work\ea6bd9299122e9cd\NuGet.Config
[11:42:56][restore] C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config
I don't want it to useAppData\Roaming\NuGet\NuGet.Config just the nuget.config that I specify as part of the solution (C:\TeamCity\buildAgent\work\ea6bd9299122e9cd\NuGet.Config)

Related

TeamCity cloned build configuration fails with NuGet error

I have created a branch on tfs2012 right next to the folder containing the main solution. Everything is identical.
I also have a working TeamCity build configuration for the main solution. But when I clone the build configuration and change only the source file path in the build step, i get the following error:
The 'System.Net.NameResolution 4.0.0' package requires NuGet client
version '2.12' or above, but the current NuGet version is
'2.8.60717.93'.
NuGet's docs have a page dedicated to nuget.config, which has a large sample at the end.
For tooling support, if you have installed the .NET Core SDK, you can use dotnet new nugetconfig on the command line to create a file from a template. Tooling to modify this file isn't yet in the dotnet cli, so you'll need to download nuget.exe from nuget.org, then you can use commands like "nuget sources add" or "nuget config" to change values, just be sure to use the -ConfigFile paramater, as nuget.exe defaults to your user profile nuget.config, even when there's a nuget.config file in the current directory.
Ultimately it's just an XML file, so I feel like most people just edit it directly using samples online or the nuget.config reference I linked to as a guide.

Nuget packages included in artifacts automatically

We have a TeamCity build server and for a time were had the internal Nuget server enabled. We'd generate Nuget packages, which it'd automatically publish to the nuget feed.
We've since moved to another Nuget server and disabled the TC internal Nuget server; additionally we started building Nuget packages using OctoPack in some configurations which never built them before. The problem is that these Nuget packages seem to automatically be added to the build configuration's Artifacts. This is a waste, since the same packages are being published to the external (to TeamCity) Nuget server.
Is there a setting which automatically will find and include Nuget packages in TeamCity's artifacts, or is it just doing this on its own? I cant even explicitly exclude the packages in the configuration's artifacts setting, they get included regardless.
TeamCity is version 2018.1.2.
New packages in built-in TeamCity NuGet feeds could be added via the followings ways.
So to avoid publishing produced nuget packages as a build artifacts inspect:
Artifact paths settings in your build configuration
NuGet Pack build steps settings: uncheck "Publish created packages to build artifacts" option
NuGet Publish build steps settings: don't specify TeamCity built-in NuGet feed URLs in "Package source" field.

Restore dotnet with local feed

I have a solution in visual studio 2015 configure with a local feed of nuget (C:\nuget.feed) that works inside visual studio 2015 because i config the nuget repository
But when i want to restore on the build throw command line with Jenkins i don't know how to specify the local feed.
I use dotnet restore and dotnet build to do this with asp net core 1.0.
From dotnet restore documentation:
In order to restore the dependencies, NuGet needs the feeds where the packages are located. Feeds are usually provided via the NuGet.config configuration file. A default configuration file is provided when the CLI tools are installed. You specify additional feeds by creating your own NuGet.config file in the project directory.
You also specify additional feeds per invocation at a command prompt:
-s|--source <SOURCE>
Specifies a NuGet package source to use during the restore operation. This overrides all of the sources specified in the NuGet.config file(s). Multiple sources can be provided by specifying this option multiple times.
If you are interesting why dotnet restore doesn't use your VS configuration, look into Nuget Config file locations and uses section.

Installing Nuget packages form repository in VSTS

I have certain packages that are not available online. I am maintaining a package folder in my repo that holds all the packages required for the application to successfully build.
I am trying to figure out a way to install packages in VSTS build definition from the packages present in repo.
Thanks in advance.
I recommend that you can store your packages in VSTS package feed. Then restore the packages from your VSTS feed.
Publish your packages to your VSTS package feed. (Refer to Package Management in Team Services and TFS)
Edit your build definition, specify config file for Nuget restore step or put NuGet.config at the solution root, next to the project.json file.
Regarding packages store in the repository scenario, you can clone that repository to the corresponding folder by using Command Line step/task;
Edit your build definition
Select Options
Check Allow Scripts to Access OAuth Token
Add Command Line step (Tool: [git tool path] (you can add nuget.exe to environment (system) variable), Arguments: clone https://:$(System.AccessToken)#[git repo url], Working folder: [folder that packages need to download]
On the other hand, if the project/solution file and package files are in the same repository, you just need to select corresponding repository in Repository tab of build definition.

How to remove the [warning]To connect to NuGet feeds when restoring NuGet packages

I've got a build running in VSTS which is restoring NuGet packages from both nuget.org and a custom feed in VSTS. The custom feed is in the solutions NuGet.config as a <packageSource>, along with the user name and password in <packageSourceCredentials>
The build, including the restore, is working Ok, but there is a warning ...
2016-10-12T16:18:57.6589001Z ##[warning]To connect to NuGet feeds
hosted in your Team Services account/TFS project collection with
NuGet 3.1 or below, edit your build definition to specify a path
to a NuGet.config containing the package sources you wish to use.
How can I remove this?
Based on my test, that warning remains even through using higher version of nugget (e.g. 3.3) or do not restore package from VSTS feed. (Hosted build agent has the same result).
You can’t remove it unless you custom a build task to restore package through command line.
I submit a issue here.
Update:
The issue has been updated.
I see the issue in the code coming from our transition from depending
on assets coming with the agent to being deployed with the task. You
can get around this for now until we get an official change out by
either (1) choosing to use the Nuget 3.5 version radio button in the
task config or (2) supplying a path to your nuget.config.
So, you can use Nuget 3.5 version or specify nuget.config file.