在类库项目或测试项目中使用FSharp.Data

时间:2016-08-10 04:25:20

标签: f# f#-data fsharp.data.typeproviders

我正在尝试在F#类库项目中使用FSharp.Data库(不是可移植类。我收到此错误:

  

测试&#39;测试1&#39;失败:     OneTimeSetUp:System.MissingMethodException:找不到方法:   &#39; FSharp.Data.CsvFile FSharp.Data.CsvFile.Load(System.String,   Microsoft.FSharp.Core.FSharpOption 1<System.String>, Microsoft.FSharp.Core.FSharpOption 1,   Microsoft.FSharp.Core.FSharpOption 1<Boolean>, Microsoft.FSharp.Core.FSharpOption 1)&#39;

我用Google搜索了错误,发现了一些像这样的类似帖子

Using F# JsonProvider within a portable class library fails

但我不是一个可移植的类库只是一个普通的类库。如果我想在F#单元测试项目中使用FSharp.Data,我也会得到类似的错误。

任何建议将不胜感激。

仅供参考,我确实在我的类库和测试项目中安装了FSharp.Data以获取错误。

谢谢

我试图用FSharp.Data版本2.0.14到2.3.2将.net 4.5,4.5.2和F#4.3.1和4.4作为目标。我对任何组合都没有运气。

1 个答案:

答案 0 :(得分:0)

感谢Mark和Panagiotis。我能够通过绑定重定向来解决这个缺少方法的问题。对于那些有类似问题的人,我做了以下几点:

  1. 将新的App.Config文件添加到测试项目中。
  2. 将配置文件重命名为whateverAssemblyName.dll.config
  3. 将以下行(基于您的F#版本)添加到配置文件中:

       <runtime>
        <legacyUnhandledExceptionPolicy enabled="true" />
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity
              name="FSharp.Core"
              publicKeyToken="b03f5f7f11d50a3a"
              culture="neutral"/>        
            <bindingRedirect
              oldVersion="0.0.0.0 - 4.4.0.0"
              newVersion="4.4.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    
  4. 确保在较新的

  5. 时导出配置文件

    我必须使用带有nunit的TestDriven / test来启动nunit窗口,因为VS测试资源管理器仍然无法发现测试用例。