【问题标题】:How can I add an assembly binding redirect to a .net core unit test project?如何将程序集绑定重定向添加到 .net 核心单元测试项目?
【发布时间】:2017-01-08 04:38:21
【问题描述】:

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

【问题讨论】:

  • 绑定重定向消失了:github.com/aspnet/Home/issues/407。如果您在 App.config 上指定它们(是的,即使它是 Web 应用程序),我认为它们在某个时候仍然有效,在候选发布期间。但我的猜测是,即使是 hack 也不再起作用了。

标签: .net-core xunit.net


【解决方案1】:

在我的情况下,上述解决方案都没有帮助(即使绑定重定向是自动生成或手动添加的,看起来这些黑客真的不再像 @Joao 建议的那样工作了)。

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

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

【讨论】:

    【解决方案2】:

    如果您在项目中引用 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

    【讨论】:

    • 此答案也适用于使用 VS 2017 版本 15.2 或 15.3 创建的项目文件 (*.csproj) 并且适用于完整的 .NET Framework,例如.NET 4.6.1。
    • 引用 .net core 2.0 的单元测试项目中的 app.config 当前破坏了测试主机
    【解决方案3】:

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

    (我从Martin Andreas Ullrichhttps://github.com/NuGet/Home/issues/5335#issuecomment-306318810 获得此信息。)

    【讨论】:

    • 太棒了,不知道这个。谢谢。
    • @D.R 这对我没有 Exe 输出类型的项目不起作用 - 必须像接受的答案一样明确指定
    • 我可以确认它也适用于 DLL 项目。我们所有的测试项目都是库项目。
    猜你喜欢
    • 2018-01-23
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2010-10-02
    • 2021-07-03
    • 2023-03-12
    相关资源
    最近更新 更多