10

I'm trying to create a NuGet package using a Cake script:

var configuration = Argument("configuration", "Release");

var binDir = Directory("./bin") ;
var nugetPackageDir = Directory("./artifacts");

var nugetFilePaths = GetFiles("./**/*.csproj").Concat(GetFiles("./**/*.nuspec"));

var nuGetPackSettings = new NuGetPackSettings
{   
  BasePath = binDir + Directory(configuration),
  OutputDirectory = nugetPackageDir  
};

Task("NuGetPack")
  .Does(() => NuGetPack(nugetFilePaths, nuGetPackSettings));

I get the following error:

========================================
NuGetPack
========================================
Executing task: NuGetPack
Attempting to build package from 'SomeProject.csproj'.
MSBuild auto-detection: using msbuild version '12.0' from 'C:\Program Files (x86)\MSBuild\12.0\bin'.
Unable to find 'C:\DEV\SomeProject\bin\Debug\SomeProject.dll'. Make sure the project has been built.
An error occured when executing task 'NuGetPack'.
Error: NuGet: Process returned an error (exit code 1).

It searches the assembly in the Debug folder instead of the Release folder. How to set NuGetPack build configuration to Release in Cake?

Daniel Matac
  • 301
  • 2
  • 12

2 Answers2

12

You need to add the following command line argument -Prop Configuration=Release to the nuget pack command:

var nuGetPackSettings = new NuGetPackSettings
{   
  BasePath = binDir + Directory(configuration),
  OutputDirectory = nugetPackageDir,
  ArgumentCustomization = args => args.Append("-Prop Configuration=" + configuration)
};
Daniel Matac
  • 301
  • 2
  • 12
8

It can be set using the Properties property:

var nuGetPackSettings = new NuGetPackSettings
{
  BasePath = binDir + Directory(configuration),
  OutputDirectory = nugetPackageDir,
  Properties = new Dictionary<string, string>
  {
    { "Configuration", configuration }
  }
};
phehr
  • 140
  • 1
  • 5