我可以访问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.
答案 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环境中运行。