F# 具有类型提供程序的可移植库

F# 具有类型提供程序的可移植库,f#,type-providers,portable-class-library,F#,Type Providers,Portable Class Library,据我所知,F#类型提供程序始终是一个不可移植的类库(例如,它将使用在WinRT中不可用的Reflection.Emit)。要在我的F#类库中使用它,我需要添加对类型提供程序DLL的引用,这样库就必须是不可移植的才能编译 在本例中,我很乐意将其分为一个可移植程序集和一个使用类型提供程序的程序集。我可以编译它的唯一方法是在我的C#应用程序项目(.NET 4.5)中添加对Fsharp.Core的引用,但在运行时,Fsharp.Core的版本之间仍然存在冲突 {"Could not load file

据我所知,F#类型提供程序始终是一个不可移植的类库(例如,它将使用在WinRT中不可用的Reflection.Emit)。要在我的F#类库中使用它,我需要添加对类型提供程序DLL的引用,这样库就必须是不可移植的才能编译

在本例中,我很乐意将其分为一个可移植程序集和一个使用类型提供程序的程序集。我可以编译它的唯一方法是在我的C#应用程序项目(.NET 4.5)中添加对Fsharp.Core的引用,但在运行时,Fsharp.Core的版本之间仍然存在冲突

{"Could not load file or assembly 'FSharp.Core, Version=2.3.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"FSharp.Core, Version=2.3.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}

我是否可以解决冲突,我是否错误地使用了类型提供程序,或者这是无法完成的事情?

您需要在app.config文件中进行绑定重定向。如果你创建了一个新的F#项目,目标是4.5,那么它将


在app.config中。您需要将其添加到最终消费exe项目(例如C#one)的app.config中,这样,如果您在桌面上运行它,它将把portable FSharp.Core(2.3.5.0)解析为桌面版(4.3.0.0)