如何将程序集绑定重定向添加到 .net 核心单元测试项目?

How can I add an assembly binding redirect to a .net core unit test project?

我正在尝试针对框架 4.6.1 创建一个 .net 核心单元测试项目,该项目测试依赖于 Microsoft.SqlServer.Types (10.0.0.0) 的项目。在 .net 核心之前,我会添加一个带有绑定重定向的 app.config 文件。我已经试过了,但是当我从 visual studio 运行 时,绑定重定向似乎没有被拾取。我该怎么做才能修复绑定重定向?

如果您在项目中引用 Microsoft.NET.Test.Sdk >= 15.3.0,它会自动打开所需的 MSBuild 属性,如下面的 Fabian 所述。参见 here


您可以将以下设置添加到您的 .csproj 文件中:

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

否则,如 Joao 所说,将它们添加到解决方案根目录中的 app.config 也可以。确保将其 Copy to Output Directory 设置设置为 Copy alwaysCopy if Newer.

引用 NuGet 包 Microsoft.NET.Test.Sdk >= 15.3.0(我使用 Microsoft.NET.Test.Sdk 15.3.0-preview-20170601-03)为我解决了这个问题。该包自动打开@Mardoxx 的回答中提到的 MSBuild 属性。

(我从 Martin Andreas Ullrich at https://github.com/NuGet/Home/issues/5335#issuecomment-306318810 那里得到了这个信息。)

就我而言,上述 none 解决方案有所帮助(即使绑定重定向是自动生成或手动添加的,看起来这些 hack 确实不再像@Joao 所建议的那样起作用了)。

所以我将所需版本的包添加到我的项目中,即使它不是直接使用的,这也解决了问题。我不喜欢这种方法,但这是对我有用的唯一方法。

希望这个方法也能帮助到其他人。