【问题标题】:F# and C# Web Service cannot open namespaceF# 和 C# Web 服务无法打开命名空间
【发布时间】:2013-06-01 00:04:42
【问题描述】:

我想使用 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# 项目使用,但不能在脚本文件中使用。

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

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

【问题讨论】:

    标签: wcf f# namespaces f#-3.0


    【解决方案1】:

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

    示例代码可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-21
      • 2010-09-07
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多