如何在 .NET Core 单元测试项目中添加程序集绑定重定向?

28

我正在尝试创建一个针对框架4.6.1的.net core单元测试项目,该项目依赖于Microsoft.SqlServer.Types(10.0.0.0)。在使用.net core之前,我会添加一个app.config文件来进行绑定重定向。我已经尝试过这样做,但是当我从Visual Studio运行时,绑定重定向似乎没有被捕获。我应该怎么做才能修复绑定重定向问题?


2
绑定重定向已经消失了:https://github.com/aspnet/Home/issues/407。我认为它们在某个时候仍然有效,即在发布候选版本期间,如果您在_App.config_上指定了它们(是的,即使它是Web应用程序)。但我的猜测是,甚至那个“hack”现在也不再起作用了。 - Joao
3个回答

42

如果您在项目中引用 Microsoft.NET.Test.Sdk >= 15.3.0,它会自动打开所需的 MSBuild 属性,就像 Fabian 在下面所说的那样。请参见此处


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

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
否则,像Joao所说的那样将它们添加到解决方案的根目录下的app.config中也可以。确保将其Copy to Output Directory设置为Copy alwaysCopy if Newer

1
此答案同样适用于使用VS 2017版本15.2或15.3创建的项目文件(*.csproj),并且这些文件是针对完整的.NET Framework,例如.NET 4.6.1。 - Manfred
在一个单元测试项目中引用 .NET Core 2.0 的 app.config 目前会导致测试主机崩溃。 - Sentinel

10

2
太棒了,我不知道这个。谢谢你。 - Mardoxx
1
@D.R 这对我在一个没有 Exe 输出类型的项目上不起作用 - 必须像被接受的答案一样明确指定。 - James Crowley
我可以确认它也适用于DLL项目。我们所有的测试项目都是库项目。 - D.R.

1
在我的情况下,上述解决方案都没有帮助(即使绑定重定向是自动生成的或手动添加的,看起来这些黑客技巧确实不再起作用,正如@Joao所建议的那样)。
因此,我将所需版本的软件包添加到我的项目中,即使它没有直接使用,这解决了问题。我不喜欢这种方法,但这是唯一适合我的方法。
希望这种方法也能帮助其他人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接