我有一个.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.为什么这不能解决第二个问题?
谢谢。
答案 0 :(得分:1)
- 程序集怎么回事,为什么我需要打开绑定重定向?
requires assembly binding redirects需要在构建过程中生成。在将其添加到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>
有关更多详细信息,您可以参考此issue。