【问题标题】:Cake command DotNetCoreTool fails with "No executable found matching command" on build serverCake 命令 DotNetCoreTool 在构建服务器上失败,并出现“找不到可执行文件匹配的命令”
【发布时间】:2018-07-10 23:00:09
【问题描述】:

我正在尝试使用 Cake Build 脚本在我们的构建服务器上生成 DotNetCore AWS Lambda 包:

Task("PackageLambda")
.Does(() => 
{
    var projectDirectory = System.IO.Path.Combine(baseDirectory, lambdaProject.BaseDirectory, lambdaProject.ProjectName);
    DotNetCoreTool(
        projectPath: System.IO.Path.Combine(projectDirectory, "SubProject.csproj"),
        command: "lambda", 
        arguments: "package",
    );
});

在 BuildAgent 的上下文(作为系统运行)下运行时,该命令失败并显示 No executable found matching command "dotnet-lambda"

  • 在本地运行构建脚本 - 有效
  • 在 BuildAgent 上手动运行构建脚本 - 有效
  • 在 BuildAgent 上以系统用户 (using psexec) 身份运行构建脚本 - 有效
  • 使用DoInDirectory 加载项设置WorkingDirectory - 失败

我相当确定该问题与调用 CAKE 脚本的上下文有关,但似乎无法缩小范围。我们正在使用这个 MetaRunner 运行我们的 CAKE 脚本 - https://gist.github.com/wwwlicious/620476f5cb8799937db84e24d6b5e75c

【问题讨论】:

  • 您是否对项目进行了 .NET 恢复?
  • @devlead 运行 dotnet 恢复在本地和代理上的命令行工作。当使用 error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found. 作为构建错误运行时
  • 另外可能值得注意的是,脚本运行良好,无需运行dotnet restore。这让我相信它与元赛跑者的关系比其他任何事情都重要。
  • 我能够确认WorkingDirectory 确实按预期工作,并且此命令是从项目根目录运行的。
  • 我尝试在元运行器上设置<param name="jetbrains_powershell_bitness" value="x64" />,但仍然遇到同样的问题

标签: .net-core aws-lambda teamcity cakebuild


【解决方案1】:

此问题的根本问题是环境变量 MSBuildSDKsPath 是由 Teamcity 配置值设置的。值集是无效路径。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2016-04-26
    • 1970-01-01
    • 2017-04-05
    • 2016-09-13
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多