【问题标题】:Azure Functions 2.0 - EventHubTrigger - System.Private.CoreLib: Could not load file or assembly "FunctionsProject.dll"Azure Functions 2.0 - EventHubTrigger - System.Private.CoreLib:无法加载文件或程序集“FunctionsProject.dll”
【发布时间】:2019-08-04 22:49:49
【问题描述】:

我能够运行具有来自本地以及来自 West US2 消费计划的 eventthub 绑定的功能应用程序。从过去 4 天开始,在我们将所有依赖项目都移到 x64 中构建并将所有 nuget 更新到最新之后 - 功能应用程序开始失败。它甚至没有启动,它无法加载functionsproject.dll 本身。即使我将比特部署到消费计划,也会出现同样的问题。

  • 此处为函数项目名称 - EventHubConsumers
  • Azure 函数版本 - 2.0
  • Azure 函数工具版本 - 2.28
  • 项目构建配置 - x64
  • 网络版 - NET CORE 2.1
  • Visual Studio 2019 和 2017
Nuget 依赖项:

<PackageReference Include="Microsoft.ApplicationInsights" Version="2.10.0" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="3.0.6" /> <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.2.0" /> <PackageReference Include="Microsoft.Jarvis" Version="20190426.1.0-rc" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> <PackageReference Include="Polly" Version="7.1.0" />

我无法拉取 FusionLog。我猜 Functions 框架 StartLocator 有自定义逻辑来加载不填充融合日志的库。

我尝试在 FunctionAssemblyLoadContext.cs 中调试LoadFromAssemblyPath(string assemblyPath, bool addProbingPath),它抛出了这个异常。我可以看到该程序集 bin 路径并验证我的函数应用程序是否已内置到该文件夹​​本身中。我什至通过在 IlSpy 中打开来验证 dll 的版本和其他详细信息。我无法弄清楚为什么程序集(函数应用程序 dll)按预期存在于该路径中时无法加载。

  • 在 Github 上记录的问题:Link

  • 试用旧版本的 Microsoft.Azure.Webjobs.Extensions.Eventhubs,即试用 3.0.5 版

  • 清理、删除obj、bin然后运行
  • 删除 LocalAppData 中所有旧版本的 AzureFunctionsTools,2.28 除外。
  • 从 vs2017 运行
[FunctionName("WriteToStore")]
public async Task Run([EventHubTrigger("activities", Connection = "EventHubConnectionAppSetting", ConsumerGroup = "%ConsumerGroup%")] EventData[] events,
             [EventHub("failed-activities", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<EventData> outputEvents)
{
  //Logic here
}
功能控制台的更多详细信息:

Azure Functions 核心工具(2.7.1505 提交哈希:eb8182995562240ca83dd0e0e3394586cf5fdfa3)

函数运行时版本:2.0.12590.0

[8/4/2019 10:09:25 PM] 构建主机:启动抑制:False,配置抑制:False

[8/4/2019 10:09:26 PM] 发生主机错误

[2019 年 8 月 4 日晚上 10:09:26] System.Private.CoreLib:无法加载文件或程序集“Microsoft..EventHubConsumers,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。

值不能为空。

参数名称:提供者

按任意键继续....[8/4/2019 10:09:27 PM] 构建主机:启动被抑制:False,配置被抑制:False

[8/4/2019 10:09:27 PM] 发生主机错误

[2019 年 8 月 4 日晚上 10:09:27] System.Private.CoreLib:无法加载文件或程序集“Microsoft..EventHubConsumers,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。

托管环境:生产

内容根路径:D:some\EventHubConsumers\bin\x64\Debug\netcoreapp2.1

现在收听:http://0.0.0.0:7071

应用程序已启动。按 Ctrl+C 关闭。

[8/4/2019 10:09:29 PM] 构建主机:启动被抑制:False,配置被抑制:False

[8/4/2019 10:09:29 PM] 发生主机错误

[2019 年 8 月 4 日晚上 10:09:29] System.Private.CoreLib:无法加载文件或程序集“Microsoft.some.EventHubConsumers,版本=1.0.0.0,文化=中性,PublicKeyToken=null”。

【问题讨论】:

    标签: .net-core azure-functions azure-functions-runtime azure-functions-core-tools


    【解决方案1】:

    在解决了几个问题后,我得到了这个工作。我会注意我遵循的问题和修复。

    重复一遍,我的函数应用配置为使用 x64 构建并在 .Netcore 2.1 上运行

    1. 其中一个依赖项目(程序集)是使用 netstandard 2.0 构建的,而所有其他项目都是使用 Netcore 2.1 构建的。这导致了 x64 的程序集加载问题(尽管该依赖程序集是使用 x64 配置构建的)。这听起来有点奇怪,我不相信这是否是一个解决方案,甚至是一个问题。

    2. Visual Studio 可能会运行 x86 核心工具,因此当从 Visual Studio(2017 和 19)运行时,x64 函数应用程序会因程序集负载等而失败。您可以设置项目以在调试时运行外部应用程序。你可以设置属性->调试来启动'func.exe host start'。

    3. 从 Visual Studio 启动函数应用后,我收到“值不能为空。参数 - 路径”异常。

      修复 - 解释 (here - Github)。 PATH 中缺少 npm 路径。我在 PATH 环境变量中更新了 npm 根路径。

    4. 我必须更新 azure 函数核心工具并使用“func host start”运行函数应用程序。现在我使用“func host start”运行应用程序并将调试器附加到 func.exe (CTRL+ALT+P)。您可以在本地 appdata 文件夹中找到 AzureFunctionTools 文件夹 - %LocalAPPDATA%\AzureFunctionsTools。您可以在发布文件夹中查看所有版本的 azure 函数核心工具以及 cli 和 func.exe 示例 - AzureFunctionsTools\Releases\2.28.0\cli

    5. 部署的主要问题是应用程序设置。我不得不在 azure 门户上将应用程序平台更改为 64 位。默认情况下,函数应用是使用 32 位平台设置创建的。解释here - Github

    Function 应用不提供带有程序集负载问题的融合日志,这使得很难理解出了什么问题!

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 1970-01-01
      • 2017-07-25
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2021-06-26
      • 2021-02-24
      相关资源
      最近更新 更多