【问题标题】:Missing FSI.exe from F# pipeline (sometimes)F# 管道中缺少 FSI.exe(有时)
【发布时间】:2021-06-03 03:15:07
【问题描述】:

Hej,我有一个 YML 管道,但我在使用 FSI.exe 运行 f# 脚本时遇到问题。

问题是不可靠,运行管道时有时会出现fsi.exe not found。有时它会在没有事先更改代码或 YML 的情况下成功,只需重新运行它即可。

  fsiPath: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsi.exe'

Pipeline Error

成功示例:

Pool: Hosted Windows 2019 with VS2019
Agent: Hosted Agent
Started: Today at 12:53 PM
Duration: 4m 59s

Job preparation parameters
2 artifacts produced
100% tests passed

失败示例

Pool: Hosted Windows 2019 with VS2019
Agent: Hosted Agent
Started: Today at 2:12 PM
Duration: 1m 16s

所以我在两种情况下都使用相同的代理

yml 部分:(一些名称已更改,但本质上是 fsi 路径)

trigger: 
  branches:
    include: 
    - main

pool:
  name: Hosted Windows 2019 with VS2019
  demands:
  - npm
  - msbuild
  - visualstudio
  - vstest

variables:
  BuildPlatform: 'any cpu'
  BuildConfiguration: 'release'
  Solution: '.......sln'
  targetFolder: .........'
  fsiPath: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsi.exe'

steps:
- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Solution)'

- task: isaacabraham.fsharp-helpers-extension.1ba72b0a-f476-4a91-90a0-b8e7a0cc4337.FSharpScript@1
  displayName: '.....'
  inputs:
    ScriptFile: '$(targetFolder)/target/script.fsx'
    ScriptArguments: '/target="$(env)" /method=client /id="$(DevOps-ClientID)" /secret="$(DevOps-ClientSecret)"'
    FsiPathSelection: Custom
    CustomPath: '$(fsiPath)'

【问题讨论】:

  • 这是 .NET Core 还是 .NET 5? fsi.exe 不再是东西,你应该将它作为 dotnet 工具运行,比如 dotnet fsi path/to/my/script.fsx
  • .NET Framework 项目仍需要 fsi.exe(或 fsiAnyCpu.exe 用于 64 位)。 dotnet fsi 仅适用于 .NET Core/.NET 5。
  • 是.net framework 4.62

标签: azure-devops f# yaml azure-pipelines


【解决方案1】:

有人问过similar question。在最近的 VS2019 版本中,fsi.exe 的位置似乎发生了变化:

  • VS2019版本16.9.3:...\Microsoft\FSharp\fsi.exe
  • VS2019版本16.10.0:...\Microsoft\FSharp\Tools\fsi.exe

【讨论】:

    【解决方案2】:

    找到了解决方案,虽然不漂亮

    我不断收到问题:找不到 fsi.exe。

    有时它会连续运行 10 次以上而没有问题,在第 11 次运行时突然被此感染(我假设这是由于虚拟机不同)。

    我的解决方法是在 ropo 中包含 fsi.exe(它的所有 dll)并引用它们。

    添加的文件夹(来自我的本地 PC) C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp

    Repo/Tools/Fsharp,然后我更改了我的 fsipath

      fsiPath: "$(Build.SourcesDirectory)/Tools/FSharp/fsi.exe"
    

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多