F# - 无法访问Array.Parallel模块

时间:2013-08-14 16:16:40

标签: module f#

我可以访问F#Interactive中的Array.Parallel模块,但不能在编译时访问。  可能有什么问题? (VS 2010)

namespace X  // not sent to interactive
open Microsoft.FSharp.Collections
module M = 
  let square  (a _[]) = Array.map          (fun a ->  a*a ) // OK        
  let squareP (a:_[]) = Array.Parallel.map (fun a ->  a*a ) // Error: "Parallel" not defined

此代码在FSI中编译良好,但是当项目的一部分失败时:

------ Erstellen gestartet: Projekt: DELETE TEST, Konfiguration: Debug Any CPU ------ C:\Program Files (x86)\Microsoft F#\v4.0\fsc.exe -o:obj\Debug\DELETE_TEST.dll -g --debug:full --noframework --define:DEBUG --define:TRACE --doc:bin\Debug\DELETE_TEST.XML --optimize- --tailcalls- -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll" -r:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" -r:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll --target:library --warn:3 --warnaserror:76 --vserrors --LCID:1031 --utf8output --fullpaths --flaterrors Module1.fs C:\work\Goswin\30_F#\16-135_LAD\DELETE TEST\Module1.fs(7,37): Fehler FS0039: Der Wert, Konstruktor, Namespace oder Typ "Parallel" ist nicht definiert.

1 个答案:

答案 0 :(得分:2)

您的目标是.NET 2.0:-r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll"

Parallel模块是通过System.Threading.Tasks实现的,直到.NET 4.0才引入。因此,{2.0}版本的FSharp.Core.dll中的Parallel上不存在Array模块。如果您重新定位到4.0,它将起作用。

它适用于FSI,因为FSI在.NET 4环境中运行。