NuGet更新后的程序集冲突

时间:2018-08-04 22:33:30

标签: 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 : Could not load file or assembly 'System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference

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

Consider app.config remapping of assembly用于许多程序集,例如System.Net.Http,System.Net.Sockets,System.IO.Compression等。

要解决此问题,请根据我添加的来源数量和编译器警告进行建议

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

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

  
      
  1. 程序集怎么回事,为什么我需要打开绑定重定向?
  2.   

requires assembly binding redirects需要在构建过程中生成。在将其添加到webjobs之后,它将在构建时将程序集添加到bin文件夹中。

  
      
  1. 为什么这不能解决第二个问题?
  2.   

这似乎是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>

有关更多详细信息,您可以参考此issue