即使启用了自动绑定,也找不到程序集

Posted

技术标签:

【中文标题】即使启用了自动绑定,也找不到程序集【英文标题】:Assembly not found even when automatic binding is enabled 【发布时间】:2021-09-09 11:58:30 【问题描述】:

我有一个失败的 Azure 函数并出现找不到程序集错误

System.ComponentModel.Annotations, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

我的 Azure Function 和包含代码的类库中都正确引用了此包

我在两个项目文件中都有这个

  <PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  </PropertyGroup>

我该如何解决这个令人沮丧的问题?

我已经引用了 System.ComponentModel.Annotations 包

似乎没有太多关于如何在 Azure 函数中进行程序集重定向

我在 .NET Core 3.1 系统中使用 Azure Functions V3

保罗

【问题讨论】:

【参考方案1】:

可能是因为 nugget 的版本与生成的库的版本不匹配。您可以尝试以下方法:

1.从包管理控制台做:

Get-Project –All | Add-BindingRedirect

在配置文件中重新生成assemblyBinding配置

2.如果没有修复,则手动添加绑定重定向。 根据您需要指定的版本进行更改

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.ComponentModel.Annotations"
                      publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="4.1.0.0" newVersion="4.0.0.0"/>
  </dependentAssembly>

oldVersion:指定最初请求的程序集版本

newVersion:指定要使用的程序集版本

【讨论】:

谢谢,但它的 XML?我以为 .NET Core 3.1 使用 json 配置? 绑定重定向是 .NET Framework 的概念,.NET Standard 和 .NET Core 上没有绑定重定向。如果需要绑定重定向,则必须将它们添加到 .NET Framework 应用程序(或库)使用 .NET Standard 库。docs.microsoft.com/en-us/dotnet/framework/configure-apps/…

以上是关于即使启用了自动绑定,也找不到程序集的主要内容,如果未能解决你的问题,请参考以下文章

如何启用程序集绑定日志记录?

c#vs2008 自定义类加了namespace和using 也找不到为啥

即使通过 Maven 添加也找不到 JDBC 驱动程序

即使它在 pyodbc.dataSources() 中列出,也找不到驱动程序

Powershell - 在应用程序配置文件中找不到程序集绑定重定向

命令行应用程序中的 asp.net 4.0 到 excel 2010 不起作用 - 即使在驱动程序安装后也找不到驱动程序