gpt4 book ai didi

Azure函数: "Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information"

转载 作者:行者123 更新时间:2023-12-04 15:19:08 25 4
gpt4 key购买 nike

我有一个 F# Azure 函数以一种奇怪的方式失败,并且不知道如何解决该问题。我创建了下面实际案例的最小重现。测试函数是手动触发的,并使用 FSharp.Compiler.Service 作为依赖项,如下面的 project.json 中指定:

{
"frameworks": {
"net46":{
"dependencies": {
"FSharp.Compiler.Service": "11.0.6"
}
}
}
}

run.fsx 文件如下所示:

open System

open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.Interactive.Shell

let Run(input: string, log: TraceWriter) =

// code here that uses FsiEvaluationSession
// and runs just fine

log.Info "I RAN"

到目前为止,一切都很好。让我困惑的部分是,如果我在 Run 上面添加以下函数,

// same dependencies as before
open Microsoft.FSharp.Compiler.Interactive.Shell

let foo (longIdent:LongIdent) =
// version 1
// "FOO"
// version 2
// longIdent.ToString ()
// version 3
longIdent |> List.map string

let Run(input: string, log: TraceWriter) =
// same as before

单独取消注释第 1 部分可以正常工作,单独取消注释第 2 部分也可以正常工作,取消注释第 3 部分会导致困惑。该函数可以编译,但运行它会导致以下异常:

Exception while executing function: Functions.fsc-1. mscorlib: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

...这让我很困惑,因为

  1. foo 甚至没有在任何地方被调用
  2. 签名和第二个版本都使用LongIdent,因此这种类型似乎不是问题的根源。

任何有关如何解决问题以及问题本身可能是什么的建议,我们都将非常感激 - 我什至不知道从哪里开始,并且相同的代码在本地脚本中运行得非常好。

最佳答案

我认为这是因为 Azure Functions SDK 依赖 FSharp.Compiler.Service (FCS) version 9.0.1 。这意味着当您尝试加载不同版本的 FCS 时,您将获得已加载的版本 9.0.1。

只要您使用的 FCS 版本的公共(public) API 与版本 9.0.1 的公共(public) API 匹配,这就可以工作,但是当存在差异时,它会崩溃,因为您的代码假设公共(public) API 看起来不同。我想这可能会在这里触发问题,尽管我不能 100% 确定如何(可能 LongIdent 现在与版本 9.0.1 中的情况不同?)

同样的问题 used to happen with FAKE ,它还捆绑了 FCS 并阻止加载不同版本。选项之一是 rename the assembly to avoid the clash .

关于Azure函数: "Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com