将bindingRedirect添加到.Net标准库 [英] Adding a bindingRedirect to a .Net Standard library

查看:99
本文介绍了将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 Standard库中执行此操作;因此,我的问题是,在.Net Standard世界中解决此类问题的策略是什么?

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 Framework概念,.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软件包时,此操作会自动完成。由于根据项目类型的不同,正确配置的方法有所不同,因此请参考 .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标准库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆