将 bindingRedirect 添加到 .Net 标准库

Adding a bindingRedirect to a .Net Standard library(将 bindingRedirect 添加到 .Net 标准库)
本文介绍了将 bindingRedirect 添加到 .Net 标准库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 .Net 标准库,但在尝试使用其中一个依赖库时出现错误,我认为这是版本冲突造成的.在旧式 .Net 类库中,我可能会添加如下内容:

I have a .Net Standard library, and I'm getting an error when trying to use one of the dependant libraries, which I believe is down to a version conflict. In an old style .Net Class library, I might add something like this:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

但是,我显然不能在网络标准库中这样做;所以,我的问题是,在 .Net 标准世界中解决此类问题的策略是什么?

But, I obviously can't do that in a Net Standard library; so, my question is, what is the strategy for addressing such issues in the .Net Standard world?

推荐答案

绑定重定向是 .NET 框架的概念,.NET Standard 和 .NET Core 上没有绑定重定向.

Binding redirects are a .NET framework concept, there are no binding redirects on .NET Standard and .NET Core.

但是,应用程序(实际的 .NET Framework 或 .NET Core 应用程序)需要解析要使用的文件.在 .NET Core 上,这是通过基于构建输入生成 deps.json 文件来完成的,并且 .NET Framework 应用程序使用绑定重定向.

However, an application (the actual .NET Framework or .NET Core application) need to resolve the files to be used. On .NET Core, this is done by generating a deps.json file based on the build input and a .NET Framework application uses binding redirects.

如果需要绑定重定向,则必须将它们添加到使用 .NET Standard 库的 .NET Framework 应用程序(或库)中.

If a binding redirect is necessary, they have to be added to the .NET Framework application (or library) that used the .NET Standard library.

这些绑定重定向可以配置为在构建期间根据编译期间使用的程序集自动生成,请参阅 关于自动绑定重定向的文档.当使用 NuGet 的新 PackageReference 样式使用 NuGet 包时,这是自动完成的.由于正确配置此内容因项目类型而异,请参阅公告 Issues with .NET Standard 2.0 with .NET 框架和NuGet 了解详细说明.

These binding redirects can be configured to be automatically generated during build, based on the assemblies used during compilation, see the documentation on automatic binding redirects. When using NuGet's new PackageReference style of using NuGet packages, this is done automatically. Since configuring this correctly varies based on the project type, refer to the announcement Issues with .NET Standard 2.0 with .NET Framework & NuGet for detailed descriptions.

确保使用正确的绑定重定向的最简单方法是确保 .NET Framework 应用程序或库设置这些属性(在 csproj/vbproj 内.生成 .exe 可执行文件的项目不需要第二个属性,但单元测试项目所需):

The simplest way to make sure that the correct binding redirects are used is to ensure the .NET Framework app or library sets these properties (inside the csproj/vbproj. The second one is not needed for projects that generate .exe executables but needed for unit test projects):

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

这篇关于将 bindingRedirect 添加到 .Net 标准库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)