Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NUnit测试失败,因为F#库中存在DLL加载问题_F#_Nunit_Assembly Binding Redirect - Fatal编程技术网

NUnit测试失败,因为F#库中存在DLL加载问题

NUnit测试失败,因为F#库中存在DLL加载问题,f#,nunit,assembly-binding-redirect,F#,Nunit,Assembly Binding Redirect,我以前在将NUnit与F#一起使用时遇到过这个问题: 无法加载文件或程序集“nunit.framework,版本=2.6.3.13283” 我已将我的FSharp.Core版本降级为较低的版本号。 我不确定我需要做什么才能让我的测试在没有任何异常的情况下运行 代码 module Foo open NUnit.Framework open FsUnit [<Test>] let ``some test``() = 1 |> should equal 1 模块Foo

我以前在将NUnit与F#一起使用时遇到过这个问题:

无法加载文件或程序集“nunit.framework,版本=2.6.3.13283”

我已将我的FSharp.Core版本降级为较低的版本号。 我不确定我需要做什么才能让我的测试在没有任何异常的情况下运行

代码

module Foo

open NUnit.Framework
open FsUnit

[<Test>]
let ``some test``() =
    1 |> should equal 1
模块Foo
打开NUnit.Framework
开放式FSU
[]
让``一些测试`()=
1 |>应等于1
Packages.config


这很可能是因为
FsUnit
引用了较旧版本的
nunit.framework
(2.6.3),但您的应用程序是根据较新版本的nunit(2.6.4)编译的

解决这个问题的方法是将
app.config
添加到您的测试项目中,这将把NUnit的所有版本映射到您在项目中引用的版本。大概是这样的:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="nunit.framework"  
             publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9999.9999.9999.9999" 
             newVersion="2.6.4.14350" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>


,因此上述内容可能只适用于您,但如果没有,请使用ILSpy之类的工具检查
nunit.framework.dll
的版本。我有2.6.4.14350,但您可能有一个不同的版本。

出于好奇,我还不得不将FSharp.Core的版本降低到3.1.25,为什么您要使用NUnit 2.x而不是3.x?几个月前我切换到了3.x,现在我已经适应了这些变化,我很高兴。它没有出现在测试资源管理器中。我能够在VS 2015社区/测试资源管理器中使用NUnit 3.x。我确实安装了。也许你应该问一个新问题。如果您安装了NUnit3测试适配器,我不知道答案。注意:有不同的NUnit测试适配器。一个用于2.x,一个用于3.x