便携式F#库引用.NET 4.5(但不是4.0)

时间:2014-07-09 09:27:24

标签: .net-4.0 f# visual-studio-2013 f#-3.0

我正在尝试创建可移植的F#库,但它需要以.NET 4.0为目标(公司政策是所有可移植库都需要与Windows XP兼容)。

当我创建(Visual Studio 2013)新项目时,有一个选项" Portable Library(Legacy)"描述说"用于创建可在.NET Framework 4.0 及更高版本,Windows Store和Silverlight 5"上运行的F#库(.dll)的项目。

问题是,实际创建项目时。当我去项目的属性"目标框架"设置为" .NET可移植子集(.NET Framework 4.5 ,Silverlight 5,Windows 8)"。

我尝试将F#运行时版本从3.1更改为3.0,但它不会改变任何内容。 " 3.0"和" 3.1"是唯一的选择。怎么了" 2.0"? 我错过了什么吗?

编辑:看起来Grzegorz是对的。我创建了这个F#PCL,它说的是#44; .NET 4.5"并从.NET 4.0 C#应用程序引用它。没有报道任何问题。

然后,可以肯定的是,我还从3.5应用程序中引用了它...并且在编译期间没有报告任何问题,但它在运行时崩溃了。所以可以肯定的是,我跑了"潜在的4.0"应用于XP并且它有效,可以解释为:" 是的,F#PCL不依赖于4.5,即使它如此"。

给它一个答案,这样我就可以打勾。

1 个答案:

答案 0 :(得分:1)

“Portable Library(Legacy)”的模板文件已将TargetFrameworkVersion硬编码为v4.0。如果您使用此模板创建项目,它实际上将定位4.0版本。

可能在UI中存在一个错误,它将目标框架显示为4.5,而实际上它使用的是前一个框架。

严格来说,问题与传统可移植库有关。非遗留版本似乎在强制框架为4.5版本时正常工作。

更新: 我向Visual F#Tools团队提交了一个相关问题: https://visualfsharp.codeplex.com/workitem/95