在F#中自动打开命名空间

fab*_*o63 3 f# namespaces module

您想知道如何使f#编译器自动打开命名空间.

我有

namespace XXX 

I have to add something here do(AutoOpen("XXX.YYY")) or something like that to make the XXX.YYY module to be opened when referencing the library from external projects.

[<AutoOpen>]
module YYY = 
    ....
Run Code Online (Sandbox Code Playgroud)

谢谢

Dir*_*irk 11

要在不先打开其父项的情况下打开命名空间/模块,必须在程序集级别添加该属性.您可以通过向项目添加AssemblyInfo.fs文件来执行此操作:

在以下代码的情况下:

namespace Framework

module GlobalFunctions = 

  let Test () =
    10.
Run Code Online (Sandbox Code Playgroud)

例如,您可以将以下代码添加到AssemblyInfo.fs:

namespace Framework

[<assembly:AutoOpen("Framework.GlobalFunctions")>]

do()
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下命令从脚本(.fsx)文件调用代码:

#r @"C:\PathToAssembly\Assembly.dll"

let result = Test ()
Run Code Online (Sandbox Code Playgroud)

导致:

--> Referenced 'C:\PathToAssembly\Assembly.dll'
val result : float = 10.0
Run Code Online (Sandbox Code Playgroud)