0

我想使用 Daniel Mohl 的 VS2012 F# 和 C# Web 服务模板。但是,我遇到了一个令人沮丧的问题,即无法在脚本文件中使用生成的代码:

namespace FSharpWcfServiceApplicationTemplate

open System
open FSharpWcfServiceApplicationTemplate.Contracts

type Service1() =
    interface IService1 with
        member x.GetData value =
            sprintf "%A" value
        member x.GetDataUsingDataContract composite =
            match composite.BoolValue with
            | true -> composite.StringValue <- 
                            sprintf "%A%A" composite.StringValue "Suffix"
            | _ -> "do nothing" |> ignore
            composite

我尝试了以下场景,但没有任何运气:

#load Service1.svc.fs

我得到:

Service1.svc.fs(4,6):错误 FS0039:未定义命名空间或模块“FSharpWcfServiceApplicationTemplate”

当我尝试加载 dll 时,就像:

#I "bin/Debug"
#r "Services.dll"

在交互中正确引用了 dll,但我无法打开命名空间 FSharpWcfServiceApplicationTemplate。我还尝试将 fsi 文件添加到 Service1.svc.fs 文件。哪个编译并且可以由 C# 项目使用,但不能在脚本文件中使用。

如何更改此设置,以便可以交互地使用服务代码?

编辑:我不得不承认这是一个重复的问题:但我仍然对解决这个问题的替代方法感兴趣。

4

1 回答 1

0

我创建了一个基于上述模板的示例项目,它解决了在脚本文件中引用的问题。基本上,您可以为每个加载本地 fs 文件和依赖项的项目创建一个 fsx 文件。然后,您可以依次将此 fsx 文件加载到另一个依赖项目的 fsx 文件中,依此类推。

示例代码可以在这里找到。

于 2013-06-06T08:52:03.510 回答