Cake NuGetPack配置

时间:2016-06-14 14:17:03

标签: nuget-package cakebuild

我正在尝试使用Cake脚本创建一个NuGet包:

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));

我收到以下错误:

========================================
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).

它搜索Debug文件夹而不是Release文件夹中的程序集。 如何将NuGetPack构建配置设置为Cake中的Release?

2 个答案:

答案 0 :(得分:9)

您需要将以下命令行参数-Prop Configuration=Release添加到nuget pack命令:

var nuGetPackSettings = new NuGetPackSettings
{   
  BasePath = binDir + Directory(configuration),
  OutputDirectory = nugetPackageDir,
  ArgumentCustomization = args => args.Append("-Prop Configuration=" + configuration)
};

答案 1 :(得分:5)

可以使用Properties属性设置:

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