我在使用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
Packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FSharp.Core" version="4.0.0.1" targetFramework="net46" />
<package id="FsUnit" version="1.4.1.0" targetFramework="net46" />
<package id="NUnit" version="2.6.4" targetFramework="net46" />
<package id="NUnitTestAdapter" version="2.0.0" targetFramework="net46" />
<package id="xunit" version="2.1.0" targetFramework="net46" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net46" />
<package id="xunit.assert" version="2.1.0" targetFramework="net46" />
<package id="xunit.core" version="2.1.0" targetFramework="net46" />
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net46" />
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net46" />
<package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net46" />
</packages>
答案 0 :(得分:8)
这很可能是因为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>
我在one project recently中解决了完全相同的问题,因此上述内容可能对您有用 - 但如果不是,请使用ILSpy等工具检查您的nunit.framework.dll
版本。我有2.6.4.14350,但你可能有另一个。