繁体   English   中英

具有相同依赖项的不同版本的 nuget 包的 azure 函数

[英]azure functions with nuget packages that have different versions of the same dependency

我正在编写一个 Azure 函数,它使用来自我的私人订阅源的 2 个 nuget 包(A 和 B)。 包 A 直接使用 Dapper 版本 1.50.2,包 B 使用 Dapper.SimpleCrud 1.13.0,它依赖于 Dapper 版本 [1.42.0, 2.0.0)。

在 Azure 函数中,我添加了 project.json,我在其中指定了包 A 和 B 及其版本。

当我查看 azure 函数中已安装的软件包时,我看到 Dapper 1.42.0 和 1.50.2 都已安装。 当我尝试调用包 A 和 BI 中的方法时,在 azure 函数日志中出现错误,提示找不到 Dapper 1.40 版。 (取决于我如何设置我的 project.json,它将是 Azure Function 找不到的 Dapper 1.40 或 1.50)

我创建了 Dapper.SimpleCRUD 包的测试版本,其中对 dapper 的依赖来自 [1.50.2, 2.0.0) 并且一切正常。

我还尝试将 Dapper 1.50.2 添加到 project.json 中,希望 Dapper.SimpleCRUD 可以使用它,但它似乎仍然会引入 Dapper 1.42。

我在 Azure Functions 上是否缺少某些设置以允许此设置工作,或者这是对 Azure Function 包管理的限制?

感谢您的任何帮助,您可以提供。

我似乎是一个问题(AFAIK 甚至到了 2016 年 10 月),他们仍然没有找到在 azure 函数中进行绑定重定向的好方法。

我使用两个具有相同依赖项(但版本不同)的不同 nuget 包的 azure 函数遇到了类似的问题。

这里有一个类似的问题: Azure Functions binding redirect

我最终保留了尽可能少的 nugets 以避免绑定重定向。 如果您的项目无法做到这一点,请尝试使用 webjobs(至少作为短期解决方案),直到 azure 函数支持这一点。

.net 5.0 中引入并在 .net 6.0 中增强的进程外 azure 功能解决了这个问题以及更多问题!

https://docs.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide#benefits-of-running-out-of-process

当您的 .NET 函数在进程外运行时,您可以利用以下优势:

  • 更少的冲突:因为函数在单独的进程中运行,所以应用程序中使用的程序集不会与宿主进程使用的相同程序集的不同版本发生冲突。
  • 完全控制流程:您可以控制应用程序的启动,并且可以控制使用的配置和启动的中间件。
  • 依赖注入:因为您可以完全控制流程,所以您可以使用当前的 .NET 行为进行依赖注入并将中间件合并到您的函数应用中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM