gpt4 book ai didi

Azure 函数本地 (CLI) 与云 dll 不匹配

转载 作者:行者123 更新时间:2023-12-02 07:29:06 26 4
gpt4 key购买 nike

概述

我制作的自定义程序集需要使用不同版本的 WindowsAzure.Storage,具体取决于我是使用 Azure Fucnctions CLI 在本地运行它还是在 Azure 上远程运行它

描述

我正在使用带有 Azure Functions 的自定义组件来执行一些 blob 操作逻辑。因此,它取决于程序集 Microsoft.WindowsAzure.Storage。所以我有一个 Visual Studio 解决方案,其中包含:

  • 一个类库项目,包含自定义程序集
  • 类库 projecx,包含自定义程序集的单元测试
  • 功能项目

作为构建触发器的一部分,我将自定义程序集复制到函数中的适当位置,并使用引用标记将其拉入。

在本地工作时,我可以使用 Azure Functions CLI 来运行相关函数。部署到 Azure 时,我可以使用门户来运行我的函数。 (我通过本地 git 存储库进行部署,以防相关)。

我遇到的困难是,AF CLI 似乎需要运行与真正的 Azure Functions 门户不同版本的 WindowsAzure.Storage 程序集。我将 TraceWriter 实例传递给后备库,因此我需要使用 Microsoft.Azure.WebJobs,它具有对 WindowsAzure.Storage 的依赖。

为了让 Azure 功能在云中运行,我使用以下版本:

Microsoft.Azure.WebJobs.Core v1.1.2
Microsoft.Azure.WebJobs v1.1.2
WindowsAzure.Storage v6.1.0

但是在使用本地托管环境时我看到以下错误消息:

Exception while executing function: Functions.SdcLaundrySriTrigger. 
mscorlib: Exception has been thrown by the target of an invocation. f-<Redacted>Trigger__1261552806: Method not found:
'Void <RedactedClassname>..ctor(Microsoft.Azure.WebJobs.Host.TraceWriter, System.String)'.

如果我使用更新版本的 WebJobs 库,就可以解决本地环境的问题:

Microsoft.Azure.WebJobs.Core v2.0.0-beta1
Microsoft.Azure.WebJobs v2.0.0-beta1
WindowsAzure.Storage v7.2.1.0

(此更改是通过提高 WebJobs 版本来实现的,并且 WindowsAzure.Storage 版本由于存在依赖性而上升)。然后使用 func funcxtion run 可以正常运行。但是当我将其部署到云环境时,出现以下错误:

error CS1705: Assembly '<redacted>' with identity 
'<redacted>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses
'Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
which has a higher version than referenced assembly
'Microsoft.WindowsAzure.Storage' with identity
'Microsoft.WindowsAzure.Storage, Version=6.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
2017-02-14T16:49:56.279 Function completed (Failure, Id=f17a046f-e66b-4f50-a812-bc7532db7a0f)2017-02-14T16:49:58.007 Exception while executing function: Functions.<redacted>. Microsoft.Azure.WebJobs.Script: Script compilation failed.

此时,显而易见的事情是将存储程序集的版本降回版本 6.1.0.0 - 但这会将 WebJobs 程序集的版本拉回到我开始时使用的版本,这会导致该功能不在本地工作。

实际行为

支持程序集的函数不可能依赖于本地和 Azure 上相同版本的 Microsoft.Azure.WebJobs。

预期行为

一旦我在本地运行该函数并将其推送到 Azure,它应该具有相同的版本。

问题

有人见过这个吗?有一个简单的解决方法吗?

我知道这看起来与 This issue 表面上相似,但我确实认为这是一个不同的问题。它可以被认为类似于 This issue as well ,但我还是觉得不太一样

最佳答案

我能够让 7.2.1 在本地 VisualStudio 调试和 Azure 中工作。技巧是更新函数目录中的project.json:

{
"frameworks": {
"net46":{
"dependencies": {
"WindowsAzure.Storage": "7.2.1.0"
}
}
}
}

关于Azure 函数本地 (CLI) 与云 dll 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249036/

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