CAKE 抛出错误,声称参数未设置,即使它是

CAKE throws error claiming argument was not set, even though it was

我正在使用 Cake 0.21.1.0。

对于我的项目,作为 TeamCity 上的一个构建步骤,我执行 build.ps1,这又会调用 build.cake。我根据 the CAKE documentation:

将以下参数传递给我的 build.ps1 脚本
-ScriptArgs '-MSBuildLogger="JetBrains.BuildServer.MSBuildLoggers.MSBuildLogger,%teamcity.dotnet.msbuild.extensions4.0%"'

build.cake 中,我添加了以下行:

var msBuildLogger = Argument<string>("MSBuildLogger");

但是,抛出以下错误:

[15:37:22]Error: Argument 'MSBuildLogger' was not set.
[15:37:22]Process exited with code 1

我做错了什么?

尝试以下 build.cake 文件:

var logger = Argument<string>("MSBuildLogger");

Task("Default")
  .Does(() =>
{
  Information(logger);
});

RunTarget("Default");

此外,使用以下方法从 resources repository 获取最新的引导程序文件:

Invoke-WebRequest https://cakebuild.net/download/bootstrapper/windows -OutFile build.ps1

然后 运行 以下内容:

.\build.ps1 -ScriptArgs '-MSBuildLogger="JetBrains.BuildServer.MSBuildLoggers.MSBuildLogger,%teamcity.dotnet.msbuild.extensions4.0%"'

确认您在本地 运行 运行脚本时获得了正确的输出。即,将 TeamCity 排除在外。