C# NuGet更新后的程序集冲突

C# NuGet更新后的程序集冲突,c#,.net,nuget,assemblies,azure-webjobs,C#,.net,Nuget,Assemblies,Azure Webjobs,我有一个.Net Framework 4.7.1 Web表单应用程序和.Net Framework 4.7.1。WebJob,两者都在Azure AppService上运行 自从通过Nuget WebJob包从2.0.0更新到2.2.0以来,出现了许多依赖性问题 第一个在运行时出现: System.IO.FileLoadException:无法加载文件或程序集'System.Net.Http,Version=4.1.1.2,Culture=neutral,PublicKeyToken=b03f5

我有一个.Net Framework 4.7.1 Web表单应用程序和.Net Framework 4.7.1。WebJob,两者都在Azure AppService上运行

自从通过Nuget WebJob包从2.0.0更新到2.2.0以来,出现了许多依赖性问题

第一个在运行时出现:

System.IO.FileLoadException:无法加载文件或程序集'System.Net.Http,Version=4.1.1.2,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。定位的程序集清单定义与程序集引用不匹配

第二个在编译过程中显示:

考虑对许多程序集(如System.Net.Http、System.Net.Sockets、System.IO.Compression等)重新映射app.config程序集

为了解决这个问题,我添加了大量源代码和编译器警告

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

真的
真的
这允许WebJob执行,但编译器仍会在程序集重新映射时显示警告

自从我相信.Net标准以来,我看到了更多关于程序集冲突的问题

你能给我解释一下吗 1.程序集发生了什么,为什么需要打开绑定重定向? 2.为什么这不能解决第二个问题

多谢各位

  • 程序集发生了什么,为什么需要打开绑定重定向 它需要在构建过程中生成。在您将其添加到webjobs之后,它将在您构建时将程序集添加到bin文件夹中

  • 为什么这不能解决第二个问题
  • 这似乎是一个VS问题,您可以通过单击webjob引用中的
    Migrate packages.config to PackageReference
    来解决它。在webjobs中添加以下.csproj并编译

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net461</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.Azure.WebJobs" Version="2.2.0" />
      </ItemGroup>
    </Project>
    
    
    Exe
    net461
    
    有关更多详细信息,请参阅此