【问题标题】:open c# namespace from same solution, referenced project in f#从同一解决方案打开 c# 命名空间,在 f# 中引用项目
【发布时间】:2013-11-10 00:06:15
【问题描述】:

我仍在尝试了解引用项目中的命名空间。

我有一个定义了命名空间(“A”)的 c# 项目。 我创建了一个 F# 应用程序,我在其中引用了 c# 项目。

open A

导致以下结果:

错误 FS0039:命名空间或模块“A”未定义

这是我检查过的:

MSDN 帮助不大 (http://msdn.microsoft.com/en-us/library/vstudio/dd393787.aspx)。

谢谢。

[编辑]

我是从头开始的,所以这个例子简洁干净。

C# 项目“ClassLibrary1”包含:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
    public class Class1
    {
    }
}

F# 应用程序是:

// Learn more about F# at http://fsharp.net
// See the 'F# Tutorial' project for more help.
open ClassLibrary1

[<EntryPoint>]
let main argv = 
    printfn "%A" argv
    0 // return an integer exit code

错误:

命名空间或模块“ClassLibrary1”未定义

【问题讨论】:

  • 你在那个命名空间中确定有 public 类型吗?
  • 是的,命名空间包含公共类。
  • 你能用 C# 和 F# 制作一个简短但完整的例子吗?
  • A = ClassLibrary1 在示例中。如前所述,我从头开始提供一个简短但完整的示例。我想确保该问题与我的 C# 代码可能存在的任何其他问题无关。谢谢。
  • 这里有一条评论让我走上了正确的道路:答案是逐步构建,从 C# 库开始。不知道为什么评论被删除了,但是,嘿,非常感谢!

标签: c# f# namespaces


【解决方案1】:

确保您的引用是真实的项目引用,而不仅仅是引用 bin\Debug 文件夹中的 DLL。

如果您无法获得真正的项目引用来工作,请确保将 F# 项目设置为依赖于 C# 项目,以便它首先由 Visual Studio 构建(右键单击项目并转到项目依赖项然后使用复选框)。

【讨论】:

    【解决方案2】:

    我也有同样的问题。我所要做的就是确保我的 C# 项目依赖项都已解决,构建我的 C# 项目,然后 F# 项目能够引用正确的 dll。

    在 Visual Studio 中,您可以右键单击每个 C# 项目并按构建。 在 VSCode 中,您必须使用终端导航到每个项目并运行 dotnet build

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2023-04-09
      相关资源
      最近更新 更多